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

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


wiki:pmvent

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

Результаты тестирования

Обозначения в таблице:

  • - проверено и работает как ожидается;
  • - не проверено вовсе;
  • - проверено и совсем не работает;
Сеть USB HOST USB OTG Реле Ц.ВХ. DIP-switch ЦАП АЦП 1-wire CAN RS-485 Wifi

Работа с одноплатным компьютером ПМ-ВЕНТ

Для питания одноплатного компьютера требуется переменное напряжение 24В. Питание подают на разъем X1.

Одноплатный компьютер ПМ-ВЕНТ имеет консольный интерфейс пользователя, т.е. всю системную информацию устройство выводит в текстовом режиме на терминальное устройство, подключенное к разъему X30 (Mini-USB «Тип B»). Ввод команд от пользователя также осуществляется через терминальное устройство.

Параметры консольного порта:
Скорость: 115200 бод в секунду
Длина слова: 8 бит
Стоповый бит: 1 бит
Контроль четности: нет
Аппаратное управление потоком: нет

При первом подключении консоли Windows обнаружит новое устройство, для которого необходимо установить драйвера. На плате установлена микросхема FT232RL, поэтому драйвера скачивают отсюда: http://www.ftdichip.com/Drivers/VCP.htm. Для работы с компьютером ПМ-ВЕНТ в Linux не требуется дополнительных действий, т.к. в большинстве дистибутивов Linux поддержка FTDI чипов уже включена и загрузка специального модуля выполняется автоматически.

* Windows: В программе HyperTerminal необходимо выставить скорость 115200, 8 бит, без контроля четности, стоповый бит 1, без управления потоком.

* Linux: В программе minicom выбирают устройство (обычно это) »/dev/ttyUSB0» и устанавливают те же настройки, что и для HyperTerminal.

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

Разъем X2

№ контакта Назначение Примечания
1 VMMC питание SD
2 USB HOST DN
3 MMC1_CD (ETK_D15/GPIO_29) Card Detect
4 USB HOST DP
-
34 MMC1 CLK
35 -
36 MMC1 CMD
37 USB0 VBUS USB OTG
38 MMC1 DATA0
39 USB0 DP USB OTG
40 MMC1 DATA2
41 USB0 DN USB OTG
42 MMC1 DATA1
43 -
44 MMC1 DATA3
45 USB0 ID USB OTG
46 GPIO 127 (MMC1_DAT5) 6 DIP (1)
47 MMC1 WP (MMC1_DAT4/GPIO_126) SD Write Protect
48 GPIO 129 (MMC1_DAT7) 6 DIP (2)
49 -
50 GPIO 159 (MCBSP1_DR) 6 DIP (3)
51 -
52 GPIO 158 (MCBSP1_DX) 6 DIP (4)
53 -
54 GPIO 157 (MCBSP1_FSR) 6 DIP (5)
55 -
56 GPIO 161 (MCBSP1_FSX) 6 DIP (6)
- -
63 GPIO 119 (MCBSP2_DX) Digital in 4
64 -
65 GPIO 116 (MCBSP2_FSX) Digital in 1
66 -
67 GPIO 117 (MCBSP2_CLKX) Digital in 2
68 -
69 GPIO 118 (MCBSP2_DR) Digital in 3
70 GPIO 155 (MCBSP4_FSX) Relay 9
- -
73 GPIO 97 (CCDC_VD) Digital in 6
74 GND
75 GPIO 96 (CCDC_HD) Digital in 5
76 GPIO 98 (CCDC_WEN) Digital in 7
- -
85 GPIO 105 (CCDC_D6) Relay 7
86 GPIO 106 (CCDC_D7) Relay 8
87 GPIO 103 (CCDC_D4) Relay 5
88 GPIO 104 (CCDC_D5) Relay 6
89 GPIO 101 (CCDC_D2) Relay 3
90 GPIO 102 (CCDC_D3) Relay 4
91 GPIO 99 (CCDC_D0) Relay 1
92 GPIO 100 (CCDC_D1) Relay 2

Разъем X3

№ контакта Назначение Примечания
- -
9 GPIO 136 (MMC2_DATA4) WLAN EN (Tiwi-R2)
10 GPIO 137 (MMC2_DATA5) WLAN IRQ (Tiwi-R2)
11 SDIO_D2 (MMC2_DATA2) SDIO_D2 (Tiwi-R2)
12 SDIO_D3 (MMC2_DATA3) SDIO_D3 (Tiwi-R2)
13 SDIO_D0 (MMC2_DATA0) SDIO_D0 (Tiwi-R2)
14 SDIO_D1 (MMC2_DATA1) SDIO_D1 (Tiwi-R2)
15 SDIO_CLK (MMC2_CLK) SDIO_CLK (Tiwi-R2)
16 SDIO_CMD (MMC2_CMD) SDIO_CMD (Tiwi-R2)
- -
23 BOOT[5] Не используется пока
- -
36 RESET CPU RESET
- -
41 CAN_TX
42 -
43 CAN_RX
- -
46 UART3_RX Консоль
47 UART3_TX Консоль
- -
94 I2C3_SDA I2C данные
95 GPIO 119 (MCBSP3_DX) ADC Busy (Pulled-UP)
96 I2C3_SCL I2C clock
97 GPIO 116 (MCBSP3_FSX) ADC Start conversion (#low)

Сборка ПО

Всё ПО скомпилировано в дистрибутиве Linux Ubuntu 10.04.

Компилятор: CodeSourcery 2010q1

Как установить компилятор описано здесь: arm-gcc

Подготовка SD карты

Подойдет любая SD карта ёмкостью около 2ГБ (зависит от размера файловой системы). Скачиваем скрипт для форматирования карты: http://www.mentorel.com/tmp/mkcard.txt

Выполняем его на неподмонтированной карте (например, /dev/sdc):

sudo LANG=c ./mkcard.txt /dev/sdc

Следите за возможными сообщениями об ошибках и, если всё ОК, то получите два раздела:

  • FAT32 (сюда записывают MLO, u-boot.bin, uImage)
  • Ext3 (здесь находится файловая система)

x-loader

1) скачиваем исходники xloader для SomIQ-AM35

git clone git://github.com/mentorel/xload-am35.git

2) компилируем

Сначала необходимо прописать путь к компилятору

export PATH=/opt/arm-2010q1/bin:$PATH
make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm distclean
make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm am3517somiq_config
make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm

3) Получаем файл x-load.bin, который преобразуем в нужный формат: Утилиту signGP скачивают отсюда: http://code.google.com/p/beagleboard/downloads/list

signGP x-load.bin
mv x-load.bin.ift MLO

4) Полученный файл MLO необходимо записать на свеже-отформатированную партицию FAT32 карты SD.

u-boot

Примечание: данную версию u-boot возможно скомпилировать компилятором версии Mentor Graphics 2010q1 и выше. Подробности здесь: arm-gcc

1) скачиваем исходники u-boot для SomIQ-AM35

wget http://mentorel.com/tmp/uboot-am35somiq.tgz

2) компилируем

make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm distclean
make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm am3517somiq_config
make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm 

3) Полученный файл u-boot.bin записываем на партицию FAT32 карты SD

ядро Linux

Данное ядро версии 2.6.37 было портировано с платформы AM3517EVM. Данное ядро не поддерживает нужный нам чип Wifi, но зато поддерживает почти всю остальную периферию (RTC и управление контроллером питания не поддерживаются).

1) Скачиваем исходные тексты ядра

wget http://mentorel.com/tmp/kernel-am3517somiq.tgz

2) компилируем (используем компилятор arm-2010q1)

make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm am3517somiq_defconfig
make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm uImage modules

полученный файл ядра uImage записывают на партицию FAT32 карты SD

3) Устанавливаем модули Ядра Linux на карту SD
Далее предполагается, что партиция ext2 SD карты подмонтирована к директории /media/rootfs

sudo make ARCH=arm modules_install INSTALL_MOD_PATH=/media/rootfs

Компиляция WLAN драйвера для wl1271

В ядре 2.6.37 для AM3517EVM драйвер wl1271 не подходит для нашей платы, поэтому будем использовать открытые драйвера для беспроводных чипов compat-wireless. Подробности здесь: http://linuxwireless.org/en/users/Drivers/wl12xx

1) Скачиваем исходные тексты драйвера

wget http://mentorel.com/downloads/compat-wireless-2.6.37.tar.gz

2) Распаковываем архив

tar xzf compat-wireless-2.6.37.tar.gz

Получилась директория compat-wireless-2.6 и в нее нужно зайти.

3) Компиляция драйвера wl1271
Обратите внимание, что ядро уже должно быть скомпилировано с модулями. Т.е. в директории с ядром должны быть все объектные файлы. Для простоты предположим, что полный путь к ядру Linux для нашей платформы такой (вы подставите свой путь): /home/user/kernel-am3517somiq. Тогда команды для компиляции драйвера wl1271 будут такими:

cd compat-wireless-2.6
./scripts/driver-select wl12xx
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- KLIB=/home/user/kernel-am3517somiq KLIB_BUILD=/home/user/kernel-am3517somiq

Ошибок компиляции быть не должно!

4) Установка модулей на файловую систему
Далее описаны инструкции работы с уже установленной файловой системой на SD карту

Сначала соберем модули, полученный при компиляции:

find ./ | grep ko$ | xargs tar cvjf wireless-compat_modules.tar.bz2

Теперь нужно скопировать содержимое данного архива в директорию /lib/modules/2.6.37/updates на SD карте. Это можно выполнить либо подмонтировав SD карту на ПК, либо на рабочей платформе распаковать архив. Перенести файл архива на рабочую платформу можно по сети с помощью команды wget или через USB-диск, подключенный к разъему USB-host на плате.

Далее команды выполняются на файловой системе нашего устройства:

cd /lib/modules/2.6.37
mkdir updates
cd updates
tar xf wireless-compat_modules.tar.bz2

5) Установка загрузочных файлов для wl1271 в файловой системе одноплатного компьютера Сначала скачаем последнюю версию загрузочных файлов для wl1271 (это бинарные файлы, которые загружаются непосредственно в чип WLAN).

git clone git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git

Получится директория linux-firmware из которой нам потребуется только папка ti-connectivity. Эту папку со всем содержимым необходимо скопировать в файловую систему в директорию /lib/firmware. Т.е. должна появится директория с полным именем: /lib/firmware/ti-connectivity. После загрузки системы необходимо обновить информацию о модулях.

6) На загруженной системе выполняют команду «depmod -a» и перезагружают плату

Установка файловой системы

Образ файловой системы был собран с помощью web-утилиты http://narcissus.angstrom-distribution.org/ для платформы am3517-evm. В систему были добавлены i2c-tools и wireless-tools. Полученный образ файловой системы может быть скачан здесь: http://mentorel.com/tmp/image-am3517-evm.tar.gz

1) Скачиваем

wget http://mentorel.com/tmp/image-am3517-evm.tar.gz

2) Монтируем раздел sdc2

sudo mount /dev/sdc2 /media/rootfs

3) записываем образ файловой системы на раздел SD карты

cd /media/rootfs
sudo tar xzf image-am3517-evm.tar.gz

4) Вносим исправления, чтобы файловая система грузилась с нашим ядром

wget http://mentorel.com/tmp/fs.patch
sudo patch -p1 < fs.patch

5) Отмонтируйте оба раздела SD карты и можно загружать плату.

SD карту устанавливают в разъем X27.

busybox

1) Скачиваем и распаковываем busybox

wget http://busybox.net/downloads/busybox-1.20.1.tar.bz2
tar xf busybox-1.20.1.tar.bz2

2) Компилируем

make ARCH=arm oldconfig
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-

3) Устанавливаем

sudo applets/install.sh /media/rootfs

Результаты тестирования

Ethernet

root@am3517-crane:~# ifconfig 
eth0      Link encap:Ethernet  HWaddr 7C:8E:E4:22:01:44  
          inet addr:192.168.0.111  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9 errors:0 dropped:0 overruns:0 frame:0
          TX packets:29 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2660 (2.5 KiB)  TX bytes:6421 (6.2 KiB)
          Interrupt:67 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  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:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

root@am3517-crane:~# ping ya.ru
PING ya.ru (213.180.193.3): 56 data bytes
64 bytes from 213.180.193.3: seq=0 ttl=56 time=2.289 ms
64 bytes from 213.180.193.3: seq=1 ttl=56 time=2.471 ms
64 bytes from 213.180.193.3: seq=2 ttl=56 time=2.564 ms

--- ya.ru ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 2.289/2.441/2.564 ms


root@am3517-crane:~# time wget ftp://192.168.0.104/file
Connecting to 192.168.0.104 (192.168.0.104:21)
file                 100% |*******************************|   117M 00:00:00 ETA
real    0m 35.42s
user    0m 1.09s
sys     0m 16.38s

USB

USB HOST

К данному интерфейсу подключена микросхема FT4232HL, которая имеет 4 порта полных RS232 портов. Для данного устройства используется 3 порта RS232 (UART) для обеспечения 3-х интерфейсов RS-485.

Лог загрузки ядра для микросхемы FT4232HL:

USB Serial support registered for FTDI USB Serial Device
ftdi_sio 1-1:1.0: FTDI USB Serial Device converter detected
usb 1-1: Detected FT4232H
usb 1-1: Number of endpoints 2
usb 1-1: Endpoint 1 MaxPacketSize 512
usb 1-1: Endpoint 2 MaxPacketSize 512
usb 1-1: Setting MaxPacketSize 512
usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB0
ftdi_sio 1-1:1.1: FTDI USB Serial Device converter detected
usb 1-1: Detected FT4232H
usb 1-1: Number of endpoints 2
usb 1-1: Endpoint 1 MaxPacketSize 512
usb 1-1: Endpoint 2 MaxPacketSize 512
usb 1-1: Setting MaxPacketSize 512
usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB1
ftdi_sio 1-1:1.2: FTDI USB Serial Device converter detected
usb 1-1: Detected FT4232H
usb 1-1: Number of endpoints 2
usb 1-1: Endpoint 1 MaxPacketSize 512
usb 1-1: Endpoint 2 MaxPacketSize 512
usb 1-1: Setting MaxPacketSize 512
usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB2
ftdi_sio 1-1:1.3: FTDI USB Serial Device converter detected
usb 1-1: Detected FT4232H
usb 1-1: Number of endpoints 2
usb 1-1: Endpoint 1 MaxPacketSize 512
usb 1-1: Endpoint 2 MaxPacketSize 512
usb 1-1: Setting MaxPacketSize 512
usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB3
usbcore: registered new interface driver ftdi_sio
ftdi_sio: v1.5.0:USB FTDI Serial Converters Driver

Данный лог доказывает, что USB Host в режиме High Speed работает, т.к. микросхема FT4232H поддерживает только HS режим USB. Драйвер ftdio_sio сам создал необходимые ноды устройств в /dev: ttyUSB0, ttyUSB1, ttyUSB2, ttyUSB3. Эти ноды необходимы для дальнейшей работы с соответствующими интерфейсами RS-485.

USB OTG

Подключаем USB HUB к разъему X29 (USB-A), ядро выдает сообщение:

root@am3517-crane:~#
musb_h_ep0_irq 1119: no URB for end 0
usb 1-1: new high speed USB device using musb_hdrc and address 3
usb 1-1: New USB device found, idVendor=0409, idProduct=0059
usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
hub 1-1:1.0: USB hub found
hub 1-1:1.0: 4 ports detected

Интерфейс USB OTG в режиме USB-host работает.

GPIO

Чтобы было проще проверять функционал GPIO все линии GPIO были добавлены в sysfs, поэтому работать с Реле и линиями ввода можно с помощью команд cat и echo. На SD карте, поставляемой с одноплатным компьютером присутствуют набор скриптов для настройки и управления линиями GPIO. Также этот набор скриптов находится по адресу: http://mentorel.com/tmp/gpio.tgz. В файле readme.txt описано как пользоваться скриптами.

По уровням управляющих сигналов: 0 - реле в «разрыве», 1 - «короткое»

Реле 1

root@am3517-crane:~# echo "out" > /sys/class/gpio/gpio99/direction 
root@am3517-crane:~# echo "0" > /sys/class/gpio/gpio99/value   
root@am3517-crane:~# echo "1" > /sys/class/gpio/gpio99/value 

слышны характерные щелчки и тестер, подключенный к контактам разъема Х18 соответственно показывает КЗ либо Разрыв.

Реле 2

root@am3517-crane:~# echo "out" > /sys/class/gpio/gpio100/direction 
root@am3517-crane:~# echo "0" > /sys/class/gpio/gpio100/value   
root@am3517-crane:~# echo "1" > /sys/class/gpio/gpio100/value 

слышны характерные щелчки и тестер, подключенный к контактам разъема Х19 соответственно показывает КЗ либо Разрыв.

Реле 3

root@am3517-crane:~# echo "out" > /sys/class/gpio/gpio101/direction 
root@am3517-crane:~# echo "0" > /sys/class/gpio/gpio101/value   
root@am3517-crane:~# echo "1" > /sys/class/gpio/gpio101/value 

слышны характерные щелчки и тестер, подключенный к контактам разъема Х20 соответственно показывает КЗ либо Разрыв.

Реле 4

root@am3517-crane:~# echo "out" > /sys/class/gpio/gpio102/direction 
root@am3517-crane:~# echo "0" > /sys/class/gpio/gpio102/value   
root@am3517-crane:~# echo "1" > /sys/class/gpio/gpio102/value 

слышны характерные щелчки и тестер, подключенный к контактам разъема Х21 соответственно показывает КЗ либо Разрыв.

Реле 5

root@am3517-crane:~# echo "out" > /sys/class/gpio/gpio103/direction 
root@am3517-crane:~# echo "0" > /sys/class/gpio/gpio103/value   
root@am3517-crane:~# echo "1" > /sys/class/gpio/gpio103/value 

слышны характерные щелчки и тестер, подключенный к контактам разъема Х23 соответственно показывает КЗ либо Разрыв.

Реле 6

root@am3517-crane:~# echo "out" > /sys/class/gpio/gpio104/direction 
root@am3517-crane:~# echo "0" > /sys/class/gpio/gpio104/value   
root@am3517-crane:~# echo "1" > /sys/class/gpio/gpio104/value 

слышны характерные щелчки и тестер, подключенный к контактам разъема Х24 соответственно показывает КЗ либо Разрыв.

Реле 7

root@am3517-crane:~# echo "out" > /sys/class/gpio/gpio105/direction
root@am3517-crane:~# echo "1" > /sys/class/gpio/gpio105/value
root@am3517-crane:~# echo "0" > /sys/class/gpio/gpio105/value

слышны характерные щелчки и тестер, подключенный к контактам разъема Х25 соответственно показывает КЗ либо Разрыв.

Реле 8

root@am3517-crane:~# echo "out" > /sys/class/gpio/gpio106/direction
root@am3517-crane:~# echo "1" > /sys/class/gpio/gpio106/value
root@am3517-crane:~# echo "0" > /sys/class/gpio/gpio106/value

слышны характерные щелчки и тестер, подключенный к контактам разъема Х26 соответственно показывает КЗ либо Разрыв.

Реле 9

root@am3517-crane:~# echo "out" > /sys/class/gpio/gpio155/direction
root@am3517-crane:~# echo "1" > /sys/class/gpio/gpio155/value
root@am3517-crane:~# echo "0" > /sys/class/gpio/gpio155/value

слышны характерные щелчки и тестер, подключенный к контактам разъема Х22 соответственно показывает КЗ либо Разрыв между крайними контактами и центральным.

Далее цифровые входы (проверялись напряжением 10В)

DIN 1 (разъем X32)

root@am3517-crane:~# echo "in" > /sys/class/gpio/gpio116/direction 
root@am3517-crane:~# cat /sys/class/gpio/gpio116/value 
1
root@am3517-crane:~# cat /sys/class/gpio/gpio116/value
0

DIN 2 (разъем X33)

root@am3517-crane:~# echo "in" > /sys/class/gpio/gpio117/direction 
root@am3517-crane:~# cat /sys/class/gpio/gpio117/value 
1
root@am3517-crane:~# cat /sys/class/gpio/gpio117/value
0

DIN 3 (разъем X34)

root@am3517-crane:~# echo "in" > /sys/class/gpio/gpio118/direction 
root@am3517-crane:~# cat /sys/class/gpio/gpio118/value 
1
root@am3517-crane:~# cat /sys/class/gpio/gpio118/value
0

DIN 4 (разъем X35)

root@am3517-crane:~# echo "in" > /sys/class/gpio/gpio119/direction 
root@am3517-crane:~# cat /sys/class/gpio/gpio119/value 
1
root@am3517-crane:~# cat /sys/class/gpio/gpio119/value
0

DIN 5 (разъем X36)

root@am3517-crane:~# echo "in" > /sys/class/gpio/gpio96/direction 
root@am3517-crane:~# cat /sys/class/gpio/gpio96/value 
1
root@am3517-crane:~# cat /sys/class/gpio/gpio96/value
0

DIN 6 (разъем X37)

root@am3517-crane:~# echo "in" > /sys/class/gpio/gpio97/direction 
root@am3517-crane:~# cat /sys/class/gpio/gpio97/value 
1
root@am3517-crane:~# cat /sys/class/gpio/gpio97/value
0

DIN 7 (разъем X38)

root@am3517-crane:~# echo "in" > /sys/class/gpio/gpio98/direction 
root@am3517-crane:~# cat /sys/class/gpio/gpio98/value 
1
root@am3517-crane:~# cat /sys/class/gpio/gpio98/value
0

Дип-переключатель 6ти сдвиговый

Сначала настраивают линии GPIO на ввод и потом можно смотреть состояние соответствующих линий посредством команд cat и echo

echo "in" > /sys/class/gpio/gpio127/direction
echo "in" > /sys/class/gpio/gpio129/direction
echo "in" > /sys/class/gpio/gpio159/direction
echo "in" > /sys/class/gpio/gpio158/direction
echo "in" > /sys/class/gpio/gpio157/direction
echo "in" > /sys/class/gpio/gpio161/direction

Теперь можно смотреть состояния сдвигового переключателя

echo "DIP-SW 1 = " `cat /sys/class/gpio/gpio127/value`
echo "DIP-SW 2 = " `cat /sys/class/gpio/gpio129/value`
echo "DIP-SW 3 = " `cat /sys/class/gpio/gpio159/value`
echo "DIP-SW 4 = " `cat /sys/class/gpio/gpio158/value`
echo "DIP-SW 5 = " `cat /sys/class/gpio/gpio157/value`
echo "DIP-SW 6 = " `cat /sys/class/gpio/gpio161/value`

I2C шина

АЦП и ЦАП подключены к процессору через шину I2C. У процессора используется шина I2C-3.

Проверяем есть ли устройства на шине i2c-3:

root@am3517-crane:~# i2cdetect -r 3 
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-3 using read byte commands.
I will probe address range 0x03-0x77.
Continue? [Y/n] y
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- 0c 0d -- -- 
10: -- -- -- -- -- -- -- -- 18 -- -- -- -- -- -- -- 
20: -- 21 -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --

Согласно документации:

  • Микросхема DA7, АЦП AD7993-0 (AS pin = GND): i2c address = 0x21
  • Микросхема DD2, 1-Wire Master DS2482-800 (AD0=AD1=AD2 = GND): i2c address = 0x18
  • Микросхема DA11, ЦАП AD5315 (A0 pin = GND): i2c address = 0x0c
  • Микросхема DA10, ЦАП AD5315 (A0 pin = 5V): i2c address = 0x0d

Таким образом, шина i2c полностью рабочая, включая цифровые интерфейсы микросхем, подключенных к шине.

ADC (АЦП)

Для тестирования была написана утилита, которая в режиме SMbus выполняет оцифровку заданного канала АЦП ad7993. Текст программы здесь

Для компиляции программы:

  • Скачиваем исходные тексты:
wget http://mentorel.com/tmp/ad799x.tgz
  • Распаковываем:
tar xzf ad799x.tgz
cd ad799x
  • Прописываем путь к компилятору:
export PATH=/opt/arm-2010q1/bin:$PATH
  • Компилируем:
maxx@ubuntu:ad799x$ make
arm-none-linux-gnueabi-gcc -g -Wall -O -c -o main.o main.c
arm-none-linux-gnueabi-gcc -o adc-read main.o
maxx@ubuntu:ad799x$ ls
adc-read  i2c-dev.h  main.c  main.o  Makefile

Получаем исполняемый файл adc-read, который необходимо выполнять на конечной платформе.

Пример работы программы adc-read:

root@am3517-pmvent:~# ./adc-read 
programm usage:
adc-read <dac_i2c_addr> <channel number>
channel number: 1-4
root@am3517-pmvent:~# ./adc-read 33 1
ADC[1]: HEX=0xa Voltage=0.10V

Здесь использованы значения:

  1. 33 - адрес микросхемы на шине i2c (0x21)
  2. 1 - номер канала АЦП (нумерация 1, 2, 3, 4 - не подключен)
  • канал 1 - разъем X11
  • канал 2 - разъем X10
  • канал 3 - разъем X9

По схеме на входе АЦП стоит делитель 1/2, который делит входное напряжение пополам. Опорное напряжение на АЦП равно 5В. Поэтому любое значение из регистра результата (REG_VAL) рассчитывается по формуле:

Vin = REG_VAL * 2 * 5 / 1024

DAC (ЦАП)

Для тестирования была написана утилита, которая выполняет загрузку сдвигового регистра микросхемы AD5315. Текст программы здесь

Для компиляции программы:

  • Скачиваем исходные тексты:
wget http://mentorel.com/tmp/ad5315.tgz
  • Распаковываем:
tar xzf ad5315.tgz
cd ad5315
  • Прописываем путь к компилятору:
export PATH=/opt/arm-2009q1/bin:$PATH
  • Компилируем:
maxx@ubuntu:ad5315$ make
arm-none-linux-gnueabi-gcc -g -Wall -O -c -o main.o main.c
arm-none-linux-gnueabi-gcc -o dac-write main.o 
maxx@ubuntu:ad5315$ ls
dac-write  main.c  main.o  Makefile

Получаем исполняемый файл dac-write, который необходимо выполнять на конечной платформе.

Пример работы прогрмаммы dac-write:

root@am3517-crane:~# ./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

Таким образом мы загрузили в ЦАП с адресом 0x0d (13), в первый канал (DACA) значение 512, соответствующее половине разрядной сетки ЦАП, т.е. на выходе ЦАП имеем напряжение Udac=Vref/2. В чем мы и убеждаемся с помощью вольтметра. Однако после ЦАП стоит операционный усилитель с коэффициентом усиления 2. Т.е. Uвых = 2 х Udac. Записываем значение 1023 в канал ЦАП и измеряем выходное напряжение на соответствующем разъеме.

Проверены 5 каналов:

  • ЦАП по адресу 13 (DA10) имеет 4 канала:
    • канал 1 (DACA) - разъем X13;
    • канал 2 (DACB) - разъем X12;
    • канал 3 (DACC) - разъем X15;
    • канал 4 (DACD) - разъем X14;
  • ЦАП по адресу 12 (DA11) имеет 1 канал (DACA) - разъем X16

1-Wire

На плате установлен 1w-мастер DS2482, имеющий 8 каналов. На изделии используется только 5. Микросхема DS2482 способна сама определять тип подключаемых устройств и выводит соответствующие сообщение на терминал.

Для работы 1-wire мастера необходимо выполнить следующие дейсвтия:

  • загрузить модуль драйвера для устройства, подключенного к DS2482
  • загрузить модуль драйвера DS2482
  • сообщить адрес DS2482 на i2c-шине
root@am3517-pmvent:~# modprobe w1_therm
root@am3517-pmvent:~# modprobe ds2482
root@am3517-pmvent:~# echo ds2482 0x18 > /sys/bus/i2c/devices/i2c-3/new_device
[   64.357482] i2c i2c-3: new_device: Instantiated device ds2482 at 0x18
root@am3517-pmvent:~# ls /sys/bus/w1/devices/
28-000000a995a1  w1_bus_master3   w1_bus_master6
w1_bus_master1   w1_bus_master4   w1_bus_master7
w1_bus_master2   w1_bus_master5   w1_bus_master8
root@am3517-pmvent:~# cat /sys/bus/w1/devices/28-000000a995a1/w1_slave 
f3 01 4b 46 7f ff 0d 10 d3 : crc=d3 YES
f3 01 4b 46 7f ff 0d 10 d3 t=31187
root@am3517-pmvent:~# cat /sys/bus/w1/devices/28-000000a995a1/w1_slave | tail -n
1 | awk -F= '{print $2/1000 " degrees Celsius"}'
31.562 degrees Celsius

В предыдущем примере мы считали значения температуры с датчика DS18B20+

Нумерация каналов в схеме:

  1. канал IO0 микросхемы, разъем X4
  2. канал IO1 микросхемы, разъем X5
  3. канал IO2 микросхемы, разъем X6
  4. канал IO7 микросхемы, разъем X7
  5. канал IO6 микросхемы, разъем X8

Проблема с динамическим подключением

В данной версии ядра присутствует проблема с «гонками» между sysfs и регистрацией драйверов. Поэтому, при подключенном датчиком к одному каналу, затем вытаскиваем его и подключаем его к другому каналу, то сам модуль ds2482 перестает работает, но его можно реанимировать. Вообще, перед сменой каналов можно сначала выгрузить модуль ведомого драйвера, затем модуль ведущего ds2482 и затем снова загрузить нужные модули. В таком случае можно менять каналы ds2482 как угодно.

Пример для одного датчика DS18B20+, который подключен к одному каналу, а затем его переключили к другому каналу ds2482:

root@am3517-pmvent:~# lsmod
Module                  Size  Used by
ds2482                  3373  0 
w1_therm                2580  0 
root@am3517-pmvent:~# rmmod w1_therm
[  832.960327] w1_master_driver w1_bus_master1: Family 28 for 28.000000a995a1.2a is not registered.
root@am3517-pmvent:~# rmmod ds2482
root@am3517-pmvent:~# modprobe w1_therm
root@am3517-pmvent:~# modprobe ds2482
root@am3517-pmvent:~# ls /sys/bus/w1/devices/
28-000000a995a1  w1_bus_master3   w1_bus_master6
w1_bus_master1   w1_bus_master4   w1_bus_master7
w1_bus_master2   w1_bus_master5   w1_bus_master8
root@am3517-pmvent:~# cat /sys/bus/w1/devices/28-000000a995a1/w1_slave 
d7 01 4b 46 7f ff 09 10 55 : crc=55 YES
d7 01 4b 46 7f ff 09 10 55 t=29437

CAN

На плате установлена микросхема физического уровня CAN: ISO1050DUB, позиционное обозначение DD4. Для согласования волнового сопротивления установлен резистор 120 Ом, который подключается между линиями CANH/CANL с помощью перемычки XT1.

http://designsomething.org/craneboard/m/video/2139.aspx

http://designsomething.org/cfs-file.ashx/__key/communityserver-components-sitefiles/CraneBoard/CAN_5F00_INTERFACE_5F00_CONNECTIVITY_5F00_ON_5F00_CRANEBOARD.pdf

http://www.armadeus.com/wiki/index.php?title=CAN_bus_Linux_driver

# opkg install canutils iproute2
Installing canutils (4.0.6-r1.0.5) to root...
Downloading http://www.angstrom-distribution.org/feeds/unstable/ipk/glibc/armv5t
e/base/canutils_4.0.6-r1.0.5_armv5te.ipk.
Installing libsocketcan2 (0.0.8-r0.0.5) to root...
Downloading http://www.angstrom-distribution.org/feeds/unstable/ipk/glibc/armv5t
e/base/libsocketcan2_0.0.8-r0.0.5_armv5te.ipk.
Installing iproute2 (2.6.38-r4.0.9) to root...
Downloading http://www.angstrom-distribution.org/feeds/next/ipk/eglibc/armv5te/b
ase/iproute2_2.6.38-r4.0.9_armv5te.ipk.
Configuring iproute2.
update-alternatives: Linking //bin/ip to /sbin/ip.iproute2
Configuring libsocketcan2.
Configuring canutils.
root@am3517-pmvent:~# ip link set can0 type can bitrate 125000
root@am3517-pmvent:~# ifconfig can0 up
[ 3723.351562] ti_hecc ti_hecc: setting CANBTC=0xc0028

RS-485

Микросхема FT4232H по умолчанию настраивает линии свои линии RI#/TXDEN в режиме RI# (rs232), однако для управления направлением передачи данных RS-485 (полудуплекс) необходимо сконфигурировать микросхему FT4232H так, чтобы линии RI#/TXDEN перешли из режима RI в режим TXDEN. Для этого выполняют следующие действия (используя ОС Windows):

1) Скачивают и распаковывают драйвера VCP (virtual com port)
http://www.ftdichip.com/Drivers/CDM/CDM%202.08.24%20WHQL%20Certified.zip

2) Подключают специальный кабель к разъему X39 (как показано на картинке) и порту USB персонального компьютера

x39.jpg

3) На запрос Windows об обнаружении нового устройства указывают путь к драйверам, полученным в шаге 1

4) После установки драйверов лучше отключить USB кабель от ПК и подключить его заново, чтобы система выполнила нумерацию USB устройств с установленными драйверами

Теперь можно использовать утилиту FT_PROG 2.6.8 - EEPROM Programming Utility.

Утилита для конфигурации памяти EEPROM, подключенной к FT4232HL, находится здесь: http://www.ftdichip.com/Support/Utilities/FT_Prog%20v2.6.8.zip. Утилиту необходимо скачать и она не требует установки.

1) Запустить FT_Prog.exe

2) В меню Devices→Scan and Parse
если все предыдущие действия выполнены правильно, то утилита считывает внутренние параметры микросхемы FT4232HL, а также содержимое EEPROM.

3) Выбираем HardwareSpecifics→Port_A
Устанавливаем галочку напротив «RI as RS485 Enable»

4) Повторяем шаг 3 для портов Port_B, Port_C, Port_D

5) В меню File выбираем Program Device

6) Закрываем программу

Теперь микросхема FT4232HL будет управлять направлением передачи данных интерфейсных микросхем RS-485.

Для тестирования интерфейса необходим кабель, сделанный по схеме, изображенной на следующем рисунке:
rs-485.jpg

Интерфейс rs-485, соответствующий /dev/ttyUSB0, обеспечен микросхемой ADM3485 и имеет следующее назначение контактов (разъем X40):

  1. нет подключений
  2. нет подключений
  3. RS-485 «B»
  4. RS-485 «A»
  5. нет подключений
  6. нет подключений

Для согласования волнового сопротивления имеется резистор 120 Ом, подключаемый перемычкой XT2.

Интерфейсы rs-485, соответствующие /dev/ttyUSB1 (разъем X41) и /dev/ttyUSB2 (разъем X42), требуют внешнего питания 24В (по ТЗ, а ток от 6В будет работать). Микросхема MAX13410EES имеет встроенный линейный регулятор напряжения и допускает питающее напряжение +6..+28В. Контакты на разъемах X41 и X42:

  1. 24В
  2. Земля (общий)
  3. RS-485 «B»
  4. RS-485 «A»
  5. 24В
  6. Земля (общий)
  • разъем X41 - для согласования волнового сопротивления имеется резистор 120 Ом, подключаемый перемычкой XT3.
  • разъем X42 - для согласования волнового сопротивления имеется резистор 120 Ом, подключаемый перемычкой XT4.

С помощью простых команд echo и cat посылают и принимают данные между двумя устройствами.

Если тестирование выполняется на одной плате с одним терминальным соединением, то с помощью следующей команды можно посылать символ «1» в интерфейс /dev/ttyUSB0 (rs-485 канал «0», разъем X40):

root@am3517-pmvent:~# while [ 1 ] ; do echo "1" > /dev/ttyUSB0 && sleep 1 ; done &

При этом поочередно переставляя кабель в два другие разъема rs-485 на плате и читая данные с двух других интерфейсов /dev/ttyUSB1 (разъем X41) и /dev/ttyUSB2 (разъем X42) можно убедится в работоспособности интерфейсов rs-485

root@am3517-pmvent:~# cat /dev/ttyUSB1
root@am3517-pmvent:~# cat /dev/ttyUSB2

WLAN 802.11

Работа модуля WLAN возможна только при подключенной антенне! Антенну подключают к UFL разъему на самом модуле Tiwi-R2.

Для проверки работоспособности WLAN модуля используйте команды, описанные здесь: wlan-setup

Обратите внимание, что интерфейс wlan0 будет иметь MAC-адрес DE:AD:BE:EF:00:00 при старте. Это значение по умолчанию, которое назначается автоматически. Чтобы избежать конфликтов в сети при активации нескольких wifi интерфейсов каждому из них необходимо присвоить свой MAC-адрес.

ifconfig wlan0 down
ifconfig wlan0 hw ether 00:22:33:44:55:66
ifconfig wlan0 up

Дополнительная информация по этой теме здесь: http://omappedia.org/wiki/Mac80211_based_open_source_architecture

wiki/pmvent.txt · Последнее изменение: 2012/11/20 19:14 — 127.0.0.1