Инструменты пользователя

Инструменты сайта


wiki:pmvent2

Одноплатный компьютер ПМ-Вент v02

Компиляция ПО

u-boot

GCC Toolchain

wget -c https://releases.linaro.org/archive/14.09/components/toolchain/binaries/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux.tar.xz
tar xf gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux.tar.xz
export CC=`pwd`/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-

U-Boot Download

Download U-Boot via git:

git clone git://git.denx.de/u-boot.git
cd u-boot/
git checkout v2014.10 -b tmp

U-Boot Patches

Патч для платы pmvent0223

wget http://www.mentorel.ru/downloads/usomiq/patches/pmvent0223-u-boot-2014.diff
patch -p1 < pmvent0223-u-boot-2014.diff

U-Boot Configure and Build

make ARCH=arm CROSS_COMPILE=${CC} distclean
make ARCH=arm CROSS_COMPILE=${CC} am335x_nand4k_defconfig
make ARCH=arm CROSS_COMPILE=${CC}

Ядро Linux

git clone https://github.com/RobertCNelson/bb-kernel
cd bb-kernel/
git checkout 4.14.52-bone16

Скачиваем и применяем патч:

wget http://www.mentorel.ru/downloads/usomiq/patches/pmvent-bb-kernel-4.14.patch
patch -p1 < pmvent-bb-kernel-4.14.patch

Запускаем компиляцию

./build_kernel.sh

Описание

Назначение сигналов модуля uSomIQ

Разъем P2

№ контакта Название линии ЦПУ Назначение
18 MCASP0_ACLKR.GPIO3_18 Дип-перекл 1
20 MCASP0_AHCLKR.GPIO3_17 Дип-перекл 2
22 MCASP0_AXR0.GPIO3_16 Дип-перекл 3
24 MCASP0_FSX.GPIO3_15 Дип-перекл 4
26 MCASP0_AHCLKX.GPIO3_21 Дип-перекл 5
28 MCASP0_ACLKX.GPIO3_14 Дип-перекл 6
29 UART0_RX Консоль
31 UART0_TX Консоль
33 I2C2_SCL
35 I2C2_SDA
36 SYS_RESETn Сброс процессора
37 I2C1_SDA
38 EVENT_INTR1.GPIO0_20 USR_LED1
39 I2C1_SCL
40 EVENT_INTR0.GPIO0_19 USR_LED2
41 SPI0_CS1.GPIO0_6 KSZ8851 IRQ
43 ECAP0_IN_PWM0_OUT.GPIO0_7 KSZ8851 nRESET
44 DCAN_RX CAN RX
45 SPI0_MOSI KSZ8851
46 DCAN_TX CAN TX
47 SPI0_MISO KSZ8851
48 MMC0_DAT3 MicroSD
49 SPI0_SCLK KSZ8851
50 MMC0_DAT2 MicroSD
51 SPI0_CS0 KSZ8851
52 MMC0_DAT1 MicroSD
54 MMC0_DAT0 MicroSD
55 USB0_DRVBUS.GPIO0_18 MicroSD CD
56 MMC0_CMD MicroSD
58 MMC0_CLKO MicroSD
61 USB0_P USB HOST
62 ETH_RX_P Ethernet 2
63 USB0_N USB HOST
64 ETH_RX_N Ethernet 2
67 ETH_speed100 Ethernet 2
68 ETH_TX_P Ethernet 2
69 ETH_ALINK Ethernet 2
70 ETH_TX_N Ethernet 2

Разъем P3

№ контакта Название линии ЦПУ Назначение
35 GPMC_CSN2.MMC1_CMD WIFI SDIO_CMD
37 GPMC_CSN1.MMC1_CLK WIFI SDIO_CLK
39 GPMC_CLK.GPIO2_1 WIFI IRQ
40 GPMC_AD8.MMC1_DAT0 WIFI SDIO_D0
41 GPMC_AD11.MMC1_DAT3 WIFI SDIO_D3
42 GPMC_AD9.MMC1_DAT1 WIFI SDIO_D1
43 GPMC_AD12.GPIO1_12 WIFI EN
44 GPMC_AD10.MMC1_DAT2 WIFI SDIO_D2
45 GPMC_AD13.GPIO1_13 DI7
46 GPMC_AD14.GPIO1_14 DO1
47 GPMC_A0.GPIO1_16 DI6
48 GPMC_AD15.GPIO1_15 DO2
49 GPMC_A1.GPIO1_17 DI5
50 GPMC_A6.GPIO1_22 DO3
51 GPMC_A2.GPIO1_18 DI4
52 GPMC_A7.GPIO1_23 DO4
53 GPMC_A3.GPIO1_19 DI3
54 GPMC_A8.GPIO1_24 DO5
55 GPMC_A4.GPIO1_20 DI2
56 GPMC_A9.GPIO1_25 DO6
57 GPMC_A5.GPIO1_21 DI1
58 GPMC_A10.GPIO1_26 DO7
60 GPMC_A11.GPIO1_27 DO8
66 GPMC_BE1.GPIO1_28 DO9
67 USB1_P FTDI FT4232
69 USB1_N FTDI FT4232

Номера GPIO

Функция Номер GPIO в Sysfs
DIP Switch 1 114
DIP Switch 2 113
DIP Switch 3 112
DIP Switch 4 111
DIP Switch 5 117
DIP Switch 6 110
Digital Input 1 53
Digital Input 2 52
Digital Input 3 51
Digital Input 4 50
Digital Input 5 49
Digital Input 6 48
Digital Input 7 45
Digital Output 1 60
Digital Output 2 59
Digital Output 3 58
Digital Output 4 57
Digital Output 5 56
Digital Output 6 55
Digital Output 7 54
Digital Output 8 47
Digital Output 9 46
Buzzer Enable 44
1-wire Enable 27

Тестирование

Результаты

Функция Работает? Примечания
Консоль Да
LEDs Да Status1-heartbeat, Status2- активность mmc0
MicroSD Да Загрузка с карты
USB Host Да USB-флешка работает
USB-FT4232 Да Микросхема определилась ядром
USB-FT4232-PC Да Подключил к ПК и прочитал значения регистров в EEPROM
Ethernet 1 (ksz8851) Да
Ethernet 2 (встроенный) Да
Реле (DO1-DO9) Да
Ц.Входы (DI1-D7) Да
Дип-переключатель Да
1-wire Да Подключал один датчик температуры
АЦП Да
ЦАП Да
RTC Да С батарейкой время считает, восстанавливает
WIFI-Infrastructure Да
WIFI-SoftAP
CAN
RS-485 Да Связь между портами COM1↔COM2↔COM3

Методика проверки

Светодиоды

Зеленый диод VSM PULSE

cd /sys/class/leds/pmvent\:green\:vsmpulse/
echo 1 > brightness
echo 0 > brightness

Красный диод ALARM

cd /sys/class/leds/pmvent\:red\:alarm/
echo 1 > brightness
echo 0 > brightness

GPIO

DIN

root@arm:~/gpio# ./din.sh
DIN 1 =  1
DIN 2 =  1
DIN 3 =  1
DIN 4 =  1
DIN 5 =  1
DIN 6 =  1
DIN 7 =  1
root@arm:~/gpio# ./din.sh
DIN 1 =  0
DIN 2 =  1
DIN 3 =  1
DIN 4 =  1
DIN 5 =  1
DIN 6 =  1
DIN 7 =  1
root@arm:~/gpio# ./din.sh
DIN 1 =  1
DIN 2 =  0
DIN 3 =  1
DIN 4 =  1
DIN 5 =  1
DIN 6 =  1
DIN 7 =  1
root@arm:~/gpio# ./din.sh
DIN 1 =  1
DIN 2 =  1
DIN 3 =  0
DIN 4 =  1
DIN 5 =  1
DIN 6 =  1
DIN 7 =  1
root@arm:~/gpio# ./din.sh
DIN 1 =  1
DIN 2 =  1
DIN 3 =  1
DIN 4 =  0
DIN 5 =  1
DIN 6 =  1
DIN 7 =  1
root@arm:~/gpio# ./din.sh
DIN 1 =  1
DIN 2 =  1
DIN 3 =  1
DIN 4 =  1
DIN 5 =  0
DIN 6 =  1
DIN 7 =  1
root@arm:~/gpio# ./din.sh
DIN 1 =  1
DIN 2 =  1
DIN 3 =  1
DIN 4 =  1
DIN 5 =  1
DIN 6 =  0
DIN 7 =  1
root@arm:~/gpio# ./din.sh
DIN 1 =  1
DIN 2 =  1
DIN 3 =  1
DIN 4 =  1
DIN 5 =  1
DIN 6 =  1
DIN 7 =  0

DOUT

После старта ядра все реле находятся в разомкнутом состоянии, кроме 3-х позиционного реле, у которого два контакта из трех всегда замкнуты. Убеждаемся, что реле DO1-DO8 разомкнуты (например, с помощье тестера), а затем замыкаем все реле:

root@arm:~/gpio# ./set_r1.sh 1
root@arm:~/gpio# ./set_r2.sh 1
root@arm:~/gpio# ./set_r3.sh 1
root@arm:~/gpio# ./set_r4.sh 1
root@arm:~/gpio# ./set_r5.sh 1
root@arm:~/gpio# ./set_r6.sh 1
root@arm:~/gpio# ./set_r7.sh 1
root@arm:~/gpio# ./set_r8.sh 1
root@arm:~/gpio# ./set_r9.sh 1

Убеждаемся, что все реле замкнулись, а у DO9 замкнута вторая пара контактов

ДИП-переключатель

Проверяем с помощью скрипта dipsw.sh, который имеет содержимое:

echo "DIP-SW 1 = " `cat /sys/class/gpio/gpio114/value`
echo "DIP-SW 2 = " `cat /sys/class/gpio/gpio113/value`
echo "DIP-SW 3 = " `cat /sys/class/gpio/gpio112/value`
echo "DIP-SW 4 = " `cat /sys/class/gpio/gpio111/value`
echo "DIP-SW 5 = " `cat /sys/class/gpio/gpio117/value`
echo "DIP-SW 6 = " `cat /sys/class/gpio/gpio110/value`

Последовательное чтение значений и сдвиг переключателей по одному с 1-го

root@arm:~/gpio# ./dipsw.sh
DIP-SW 1 =  1
DIP-SW 2 =  1
DIP-SW 3 =  1
DIP-SW 4 =  1
DIP-SW 5 =  1
DIP-SW 6 =  1
root@arm:~/gpio# ./dipsw.sh
DIP-SW 1 =  0
DIP-SW 2 =  1
DIP-SW 3 =  1
DIP-SW 4 =  1
DIP-SW 5 =  1
DIP-SW 6 =  1
root@arm:~/gpio# ./dipsw.sh
DIP-SW 1 =  0
DIP-SW 2 =  0
DIP-SW 3 =  1
DIP-SW 4 =  1
DIP-SW 5 =  1
DIP-SW 6 =  1
root@arm:~/gpio# ./dipsw.sh
DIP-SW 1 =  0
DIP-SW 2 =  0
DIP-SW 3 =  0
DIP-SW 4 =  1
DIP-SW 5 =  1
DIP-SW 6 =  1
root@arm:~/gpio# ./dipsw.sh
DIP-SW 1 =  0
DIP-SW 2 =  0
DIP-SW 3 =  0
DIP-SW 4 =  0
DIP-SW 5 =  1
DIP-SW 6 =  1
root@arm:~/gpio# ./dipsw.sh
DIP-SW 1 =  0
DIP-SW 2 =  0
DIP-SW 3 =  0
DIP-SW 4 =  0
DIP-SW 5 =  0
DIP-SW 6 =  1
root@arm:~/gpio# ./dipsw.sh
DIP-SW 1 =  0
DIP-SW 2 =  0
DIP-SW 3 =  0
DIP-SW 4 =  0
DIP-SW 5 =  0
DIP-SW 6 =  0

Buzzer

«1» - включает пищалку
«0» - выключает пищалку

echo 44 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio44/direction
echo "0" > /sys/class/gpio/gpio44/value
echo "1" > /sys/class/gpio/gpio44/value

1-wire

Управление питанием на v0225

Питание должно быть подано на микросхему DS2482, иначе будут ошибки при загрузке драйвера.

echo 27 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio27/direction
echo "0" > /sys/class/gpio/gpio27/value
echo "1" > /sys/class/gpio/gpio27/value

Для ядра 3.2:

modprobe w1_therm
modprobe ds2482
echo ds2482 0x18 > /sys/bus/i2c/devices/i2c-3/new_device

Для ядра 3.18, 4.14:

modprobe w1_therm strong_pullup=0
modprobe ds2482
echo ds2482 0x18 > /sys/bus/i2c/devices/i2c-2/new_device

Узнаем какое устройство появилось в системе:

root@arm:~# ls /sys/bus/w1/devices/
28-000002000d1c/ w1_bus_master3/  w1_bus_master6/
w1_bus_master1/  w1_bus_master4/  w1_bus_master7/
w1_bus_master2/  w1_bus_master5/  w1_bus_master8/

Видно, что 28-000002000d1c является датчиком температуры (класс устройства 28). Считаем температуру:

root@arm:~# cat /sys/bus/w1/devices/28-000002000d1c/w1_slave
af 01 4b 46 7f ff 01 10 bc : crc=bc YES
af 01 4b 46 7f ff 01 10 bc t=26937

Текущее значение температуры 26.937 градусов Цельсия

АЦП

Адрес АЦП 32 (0x21) на шине i2c-3 (ядро 3.2) либо на i2c-2 (ядро 3.18).

Компиляция тестового приложения adc-read:

ubuntu:ad799x$ export CC=/opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-
ubuntu:ad799x$ make CROSS_COMPILE=${CC}
/opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-gcc -g -Wall -O -c -o main.o main.c
/opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-gcc -o adc-read main.o
ubuntu:ad799x$ ls
adc-read  i2c-dev.h  main.c  main.o  Makefile

Поместите исполняемый файл adc-read в файловую систему на компьютере ПМ-Вент. Далее, подключаем источник напряжения и выполняем чтение поканально (на макете канал 2 не подключен):

root@arm:~# ./adc-read 33 1
ADC[4]: HEX=0x2cf Voltage=7.02V
root@arm:~# ./adc-read 33 3
ADC[4]: HEX=0x2cd Voltage=7.00V
root@arm:~# ./adc-read 33 4
ADC[4]: HEX=0x2cc Voltage=6.99V

ЦАП

Компиляция тестового приложения dac-write:

ubuntu:$ export CC=/opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-
ubuntu:ad5315$ make CROSS_COMPILE=${CC}
/opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-gcc -g -Wall -O -c -o main.o main.c
/opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/arm-linux-gnueabihf-gcc -o dac-write main.o 
ubuntu:ad5315$ ls
dac-write  main.c  main.o  Makefile

Поместите исполняемый файл dac-write в файловую систему на компьютере ПМ-Вент.

1) Записываем нули в выходные каналы ЦАП:

root@arm:~# ./dac-write 13 1 0
DAC: set i2c address to d
DAC: set channel number to 1
DAC: pointer reg = 0x01
DAC: set shift register to 0
DAC: shift register MSB=0x20 LSB=0x00
root@arm:~# ./dac-write 13 2 0
DAC: set i2c address to d
DAC: set channel number to 2
DAC: pointer reg = 0x02
DAC: set shift register to 0
DAC: shift register MSB=0x20 LSB=0x00
root@arm:~# ./dac-write 13 3 0
DAC: set i2c address to d
DAC: set channel number to 3
DAC: pointer reg = 0x04
DAC: set shift register to 0
DAC: shift register MSB=0x20 LSB=0x00
root@arm:~# ./dac-write 13 4 0
DAC: set i2c address to d
DAC: set channel number to 4
DAC: pointer reg = 0x08
DAC: set shift register to 0
DAC: shift register MSB=0x20 LSB=0x00
root@arm:~# ./dac-write 14 0 0
DAC: set i2c address to e
ERROR: DAC channel number 1-4
root@arm:~# ./dac-write 14 1 0
DAC: set i2c address to e
DAC: set channel number to 1
DAC: pointer reg = 0x01
DAC: set shift register to 0
DAC: shift register MSB=0x20 LSB=0x00
ERROR: i2c transaction failed
root@arm:~# ./dac-write 12 1 0
DAC: set i2c address to c
DAC: set channel number to 1
DAC: pointer reg = 0x01
DAC: set shift register to 0
DAC: shift register MSB=0x20 LSB=0x00
root@arm:~# ./dac-write 12 2 0
DAC: set i2c address to c
DAC: set channel number to 2
DAC: pointer reg = 0x02
DAC: set shift register to 0
DAC: shift register MSB=0x20 LSB=0x00
root@arm:~# ./dac-write 12 3 0
DAC: set i2c address to c
DAC: set channel number to 3
DAC: pointer reg = 0x04
DAC: set shift register to 0
DAC: shift register MSB=0x20 LSB=0x00
root@arm:~# ./dac-write 12 4 0
DAC: set i2c address to c
DAC: set channel number to 4
DAC: pointer reg = 0x08
DAC: set shift register to 0
DAC: shift register MSB=0x20 LSB=0x00

Проверяем вольтметром фактическое значение напряжение на выходах AO1 - AO8. На макете значения были от 0.04 до 0.06 вольт (измерено мультиметром Mastech M9508).

2) Записываем 512 в выходные каналы ЦАП, чтобы получить на выходе 5В:

root@arm:~# ./dac-write 12 1 512
DAC: set i2c address to c
DAC: set channel number to 1
DAC: pointer reg = 0x01
DAC: set shift register to 512
DAC: shift register MSB=0x28 LSB=0x00
root@arm:~# ./dac-write 12 2 512
DAC: set i2c address to c
DAC: set channel number to 2
DAC: pointer reg = 0x02
DAC: set shift register to 512
DAC: shift register MSB=0x28 LSB=0x00
root@arm:~# ./dac-write 12 3 512
DAC: set i2c address to c
DAC: set channel number to 3
DAC: pointer reg = 0x04
DAC: set shift register to 512
DAC: shift register MSB=0x28 LSB=0x00
root@arm:~# ./dac-write 12 4 512
DAC: set i2c address to c
DAC: set channel number to 4
DAC: pointer reg = 0x08
DAC: set shift register to 512
DAC: shift register MSB=0x28 LSB=0x00
root@arm:~# ./dac-write 13 1 512
DAC: set i2c address to d
DAC: set channel number to 1
DAC: pointer reg = 0x01
DAC: set shift register to 512
DAC: shift register MSB=0x28 LSB=0x00
root@arm:~# ./dac-write 13 2 512
DAC: set i2c address to d
DAC: set channel number to 2
DAC: pointer reg = 0x02
DAC: set shift register to 512
DAC: shift register MSB=0x28 LSB=0x00
root@arm:~# ./dac-write 13 3 512
DAC: set i2c address to d
DAC: set channel number to 3
DAC: pointer reg = 0x04
DAC: set shift register to 512
DAC: shift register MSB=0x28 LSB=0x00
root@arm:~# ./dac-write 13 4 512
DAC: set i2c address to d
DAC: set channel number to 4
DAC: pointer reg = 0x08
DAC: set shift register to 512
DAC: shift register MSB=0x28 LSB=0x00

Измеренное напряжение:

Канал AO1 AO2 AO3 AO4 AO5 AO6 AO7 AO8
Напряжение, В 4.97 5.02 5.01 5.01 5.02 5.03 5.02 4.98

3) Записываем 1023 в выходные каналы ЦАП, чтобы получить на выходе 10В:

root@arm:~# ./dac-write 12 1 1023
DAC: set i2c address to c
DAC: set channel number to 1
DAC: pointer reg = 0x01
DAC: set shift register to 1023
DAC: shift register MSB=0x2f LSB=0xfc
root@arm:~# ./dac-write 12 2 1023
DAC: set i2c address to c
DAC: set channel number to 2
DAC: pointer reg = 0x02
DAC: set shift register to 1023
DAC: shift register MSB=0x2f LSB=0xfc
root@arm:~# ./dac-write 12 3 1023
DAC: set i2c address to c
DAC: set channel number to 3
DAC: pointer reg = 0x04
DAC: set shift register to 1023
DAC: shift register MSB=0x2f LSB=0xfc
root@arm:~# ./dac-write 12 4 1023
DAC: set i2c address to c
DAC: set channel number to 4
DAC: pointer reg = 0x08
DAC: set shift register to 1023
DAC: shift register MSB=0x2f LSB=0xfc
root@arm:~# ./dac-write 13 1 1023
DAC: set i2c address to d
DAC: set channel number to 1
DAC: pointer reg = 0x01
DAC: set shift register to 1023
DAC: shift register MSB=0x2f LSB=0xfc
root@arm:~# ./dac-write 13 2 1023
DAC: set i2c address to d
DAC: set channel number to 2
DAC: pointer reg = 0x02
DAC: set shift register to 1023
DAC: shift register MSB=0x2f LSB=0xfc
root@arm:~# ./dac-write 13 3 1023
DAC: set i2c address to d
DAC: set channel number to 3
DAC: pointer reg = 0x04
DAC: set shift register to 1023
DAC: shift register MSB=0x2f LSB=0xfc
root@arm:~# ./dac-write 13 4 1023
DAC: set i2c address to d
DAC: set channel number to 4
DAC: pointer reg = 0x08
DAC: set shift register to 1023
DAC: shift register MSB=0x2f LSB=0xfc

Измеренное напряжение:

Канал AO1 AO2 AO3 AO4 AO5 AO6 AO7 AO8
Напряжение, В 9.96 10.02 9.99 10.02 9.99 10.02 10.0 9.99

RS-485

COM1

./modbus_test --func 4 --id 86 --addr 1 --count 1 --device /dev/ttyUSB2 --debug 1 
18-01-2015 00:20:20.373|i|000000| Attempt to open modbus context: device=/dev/ttyUSB2, speed=38400, parity=N, data_bits=8, stop_bits=2, sbc_fix=true 
Opening /dev/ttyUSB2 at 38400 bauds (N, 8, 2) 
18-01-2015 00:20:20.377|i|000000| [/dev/ttyUSB2] Byte timeout: 500 
18-01-2015 00:20:20.378|i|000000| [/dev/ttyUSB2] Response timeout: 500 
18-01-2015 00:20:20.379|i|000000| [/dev/ttyUSB2] Serial mode: MODBUS_RTU_RS232 
18-01-2015 00:20:20.380|i|000000| Iteration count: 1/1 
[56][04][00][01][00][01][6D][ED] 
Waiting for a confirmation... 
<56><04><02><0B><D1><0B><90> 
Reg [0] 3025 

COM2

./modbus_test --func 4 --id 86 --addr 1 --count 1 --device /dev/ttyUSB1 --debug 1 
18-01-2015 00:20:20.373|i|000000| Attempt to open modbus context: device=/dev/ttyUSB2, speed=38400, parity=N, data_bits=8, stop_bits=2, sbc_fix=true 
Opening /dev/ttyUSB2 at 38400 bauds (N, 8, 2) 
18-01-2015 00:20:20.377|i|000000| [/dev/ttyUSB2] Byte timeout: 500 
18-01-2015 00:20:20.378|i|000000| [/dev/ttyUSB2] Response timeout: 500 
18-01-2015 00:20:20.379|i|000000| [/dev/ttyUSB2] Serial mode: MODBUS_RTU_RS232 
18-01-2015 00:20:20.380|i|000000| Iteration count: 1/1 
[56][04][00][01][00][01][6D][ED] 
Waiting for a confirmation... 
<56><04><02><0B><D1><0B><90> 
Reg [0] 3025 

COM3

./modbus_test --func 4 --id 86 --addr 1 --count 1 --device /dev/ttyUSB0 --debug 1 
18-01-2015 00:20:20.373|i|000000| Attempt to open modbus context: device=/dev/ttyUSB2, speed=38400, parity=N, data_bits=8, stop_bits=2, sbc_fix=true 
Opening /dev/ttyUSB2 at 38400 bauds (N, 8, 2) 
18-01-2015 00:20:20.377|i|000000| [/dev/ttyUSB2] Byte timeout: 500 
18-01-2015 00:20:20.378|i|000000| [/dev/ttyUSB2] Response timeout: 500 
18-01-2015 00:20:20.379|i|000000| [/dev/ttyUSB2] Serial mode: MODBUS_RTU_RS232 
18-01-2015 00:20:20.380|i|000000| Iteration count: 1/1 
[56][04][00][01][00][01][6D][ED] 
Waiting for a confirmation... 
<56><04><02><0B><D1><0B><90> 
Reg [0] 3025 

CAN

Wifi

Подключение к точке доступа

root@arm:~# ifconfig -a
can0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          NOARP  MTU:16  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:10
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:55

eth0      Link encap:Ethernet  HWaddr d0:ff:50:31:f4:62
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth1      Link encap:Ethernet  HWaddr 7e:e5:10:b3:19:6d
          inet addr:192.168.1.113  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::7ce5:10ff:feb3:196d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:46 errors:0 dropped:0 overruns:0 frame:0
          TX packets:35 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:4702 (4.5 KiB)  TX bytes:3162 (3.0 KiB)
          Interrupt:166

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:6 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:344 (344.0 B)  TX bytes:344 (344.0 B)

wlan0     Link encap:Ethernet  HWaddr de:ad:be:ef:00:00
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

root@arm:~# ip link set wlan0 up
[   41.799835] wl1271: firmware booted (Rev 6.3.0.0.77)
[   41.821868] ADDRCONF(NETDEV_UP): wlan0: link is not ready
root@arm:~# iwlist wlan0 scan
wlan0     Scan completed :
          Cell 01 - Address: B8:A3:86:14:1D:98
                    Channel:1
                    Frequency:2.412 GHz (Channel 1)
                    Quality=22/70  Signal level=-88 dBm
                    Encryption key:on
                    ESSID:"lav"
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 9 Mb/s
                              18 Mb/s; 36 Mb/s; 54 Mb/s
                    Bit Rates:6 Mb/s; 12 Mb/s; 24 Mb/s; 48 Mb/s
                    Mode:Master
                    Extra:tsf=000000b6554ea16f
                    Extra: Last beacon: 1850ms ago
                    IE: Unknown: 00036C6176
                    IE: Unknown: 010882848B961224486C
                    IE: Unknown: 030101
                    IE: Unknown: 32040C183060
                    IE: Unknown: 0706525520010E14
                    IE: Unknown: 050400010000
                    IE: Unknown: 2A0104
                    IE: WPA Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (1) : TKIP
                        Authentication Suites (1) : PSK
                    IE: Unknown: DD180050F2020101024003A4000027A4000042435E0062322F00
                    IE: Unknown: 0B0500001C127A
                    IE: Unknown: DD07000C4307000000
          Cell 02 - Address: 20:CF:30:CE:27:F2
                    Channel:1
                    Frequency:2.412 GHz (Channel 1)
                    Quality=29/70  Signal level=-81 dBm
                    Encryption key:on
                    ESSID:"inet"
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
                              24 Mb/s; 36 Mb/s; 54 Mb/s
                    Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 48 Mb/s
                    Mode:Master
                    Extra:tsf=0000027d4c573089
                    Extra: Last beacon: 1840ms ago
                    IE: Unknown: 0004696E6574
                    IE: Unknown: 010882848B962430486C
                    IE: Unknown: 030101
                    IE: Unknown: 2A0100
                    IE: Unknown: 2F0100
                    IE: Unknown: 32040C121860
                    IE: Unknown: DD870050F204104A00011010440001021041000100103B0001031047001020CF30CE27F220CF30CE27F20300D438102100074153555354656B1023000F576972656C65737320526F7574657210240009574C353030677076321042000234351054000800060050F2040001101100144153555320576972656C65737320526F75746572100800020088
                    IE: Unknown: DD090010180201F0000000
                    IE: WPA Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (1) : TKIP
                        Authentication Suites (1) : PSK

Настройка

Установка временной зоны

dpkg-reconfigure tzdata

Далее выбрать «Europe», затем «Minsk». Минск выбираем, потому что не все дистрибутивы Linux успевают следить за законами РФ в части перехода на зимнее время.

Время на изделии

Установка времени

Вручную

Формат команды date следующий:

date 
MMDDhhmm[
CC]
YY[.
ss]

где:

  • MM - номер месяца
  • DD - число
  • hh - часы
  • mm - минуты
  • CCYY - год полностью (2014)
  • .ss - секунды

Установим дату 25 декабря 2014г, 12:53

date 122512532014

Синхронизация времени по NTP

Локальное время можно синхронизировать с точными часами, которые работают на специальных часовых серверах. Сначала установите соответствующий пакет:

apt-get install ntp

Спустя несколько секунд после установки системные часы будут синхронизированы автоматически с мировым временем. Обязательное условие - активное сетевое подключение.

Запись времени в RTC

После записи текущего времени в RTC после перезагрузки платы или выключения питания время восстановится автоматически. Для записи времени в RTC выполните команду:

hwclock --systohc

Для чтения текущего значения времени в RTC выполните команду

hwclock

Для синхронизации системных часов со временем, идущим в RTC, выполните команду:

hwclock --hctosys
wiki/pmvent2.txt · Последнее изменение: 2022/01/12 16:51 — 127.0.0.1