|
|
(не показано 30 промежуточных версий 3 участников) |
Строка 1: |
Строка 1: |
| {{DISPLAYTITLE:Wiren Board 7.2 и 7.3.x: Низкоуровневая работа с железом}} | | {{DISPLAYTITLE:Wiren Board 7.2: Низкоуровневая работа с железом}} |
| | {{Draft}} |
| {{Wbincludes:Peripherals}} | | {{Wbincludes:Peripherals}} |
| == GPIO на клеммниках == | | == GPIO на клеммниках == |
| {| border="1" class="wikitable" | | {| class="wikitable" |
| ! Метка (label) ||Примечание | | !клеммник |
| |-
| | !функция |
| ! colspan="2" | Выходы A1-A3, D1 | | !GPIO |
| |-
| | !GPIO number |
| | A1 OUT || Выход «открытый коллектор»
| | !вывод i.mx6UL |
| |-
| | !комментарии |
| | A2 OUT || Выход «открытый коллектор»
| |
| |-
| |
| | A3 OUT || Выход «открытый коллектор»
| |
| |-
| |
| | D1 OUT || Выход «открытый коллектор»
| |
| |-
| |
| ! colspan="3" | Входы A1-A3, D1 (1 — нет сигнала) | |
| |-
| |
| | A1 IN ||
| |
| |-
| |
| | A2 IN ||
| |
| |-
| |
| | A3 IN ||
| |
| |-
| |
| | D1 IN ||
| |
| |-
| |
| ! colspan="2" | Onewire | |
| |-
| |
| | W1 || 1-wire/DI
| |
| |- | | |- |
| | W2 || 1-wire/DI | | | colspan="6" style="text-align:center; vertical-align:middle;" | '''Выходы A1-A4''' |
| |- | | |- |
| |} | | |A1(out) |
| | | |FET |
| == Имена GPIO боковых модулей WBIO ==
| | |GPIO3_IO15 |
| {{Wbincludes:WBIO GPIO Names}}
| | |109 |
| | | |LCD_DATA10 |
| == Реализация UART ==
| | |Выход "открытый коллектор"; |
| {| class="wikitable"
| |
| |'''Название порта в Linux''' | |
| |'''Альтернативное имя порта в Linux''' | |
| |'''Разъём на контроллере''' | |
| |'''Примечание''' | |
| |- | | |- |
| |/dev/ttyS0 | | |A2(out) |
| |/dev/ttyCONSOLE | | |FET |
| |Debug-uart контроллера (micro-usb) | | |GPIO3_IO16 |
| |Настройки по умолчанию: 115200-8-N-1 | | |108 |
| | |LCD_DATA11 |
| | |Выход "открытый коллектор"; |
| |- | | |- |
| |/dev/ttyS2 | | |A3(out) |
| |/dev/ttyRS485-1 | | |FET |
| |Подписан ''RS-485'', клеммники A и B | | |GPIO3_IO17 |
| |Неизолированный порт, установлен терминатор | | |107 |
| | |LCD_DATA12 |
| | |Выход "открытый коллектор"; |
| |- | | |- |
| |/dev/ttyS4 | | |D1(out) |
| |/dev/ttyRS485-2 | | |FET |
| |Подписан ''RS-485'', клеммники A/L и B/H (этот порт может использоваться и как CAN) | | |GPIO3_IO18 |
| |Неизолированный порт, установлен терминатор, мультиплексирован с CAN | | |106 |
| | |LCD_DATA13 |
| | |Выход "открытый коллектор"; |
| |- | | |- |
| |/dev/ttyS7 | | | colspan="6" style="text-align:center; vertical-align:middle;" | '''Входы A1-A4''' (инвертированы; т.е. "1" на gpio появляется, когда на входе нет напряжения) |
| |/dev/ttyMOD1 | |
| |UART на модуле расширения MOD1
| |
| |
| |
| |- | | |- |
| |/dev/ttyS6 | | |A1 (in) |
| |/dev/ttyMOD2 | | |DI |
| |UART на модуле расширения MOD2 | | |GPIO3_IO14 |
| | |231 |
| | |LCD_DATA09 |
| | | | | |
| |- | | |- |
| |/dev/ttyS5 | | |A2 (in) |
| |/dev/ttyMOD3 | | |DI |
| |UART на модуле расширения MOD3 | | |GPIO3_IO13 |
| | |230 |
| | |LCD_DATA08 |
| | | | | |
| |- | | |- |
| |/dev/ttyS3 | | |A3 (in) |
| |/dev/ttyMOD4 | | |DI |
| |UART на модуле расширения MOD4 | | |GPIO3_IO28 |
| | |227 |
| | |LCD_DATA23 |
| | | | | |
| |- | | |- |
| |} | | |D1 (in) |
| | | |DI |
| <gallery>
| | |GPIO3_IO27 |
| Файл:MOD12.png|Распиновка разъемов Mod1, Mod2 и Mod3 на WB7 под модули расширения
| | |228 |
| Файл:MOD3.png|Распиновка разъема Mod4 на WB7 под модули расширения
| | |LCD_DATA22 |
| Файл:wbc_mod.png| Распиновка разъема WBC на WB7 под модули 4g модемов (сигналы RX и TX не подключены)
| |
| </gallery>
| |
| | |
| == Сигналы на модулях расширения ==
| |
| {| border="1" class="wikitable"
| |
| ! Функция || Примечание
| |
| |- | |
| ! colspan="2" | MOD1
| |
| |- | | |- |
| | MOD1 RTS || | | | colspan="6" style="text-align:center; vertical-align:middle;" | '''Onewire''' |
| |- | | |- |
| | MOD1 TX || | | |W1 |
| | |'''1-wire'''/DI |
| | |GPIO3_IO4 |
| | |226 |
| | |LCD_RESET |
| | |по умолчанию используется драйвером w1-gpio |
| |- | | |- |
| | MOD1 RX || | | |W2 |
| |- | | |'''1-wire'''/DI |
| ! colspan="2" | MOD2
| | |GPIO1_IO11 |
| |-
| | |271 |
| | MOD2 RTS ||
| | |JTAG_TMS |
| |-
| | |по умолчанию используется драйвером w1-gpio |
| | MOD2 TX ||
| |
| |- | |
| | MOD2 RX || | |
| |-
| |
| ! colspan="2" | MOD3
| |
| |- | |
| | MOD3 RTS ||
| |
| |-
| |
| | MOD3 TX ||
| |
| |-
| |
| | MOD3 RX ||
| |
| |-
| |
| ! colspan="2" | MOD4
| |
| |-
| |
| | MOD4 RTS ||
| |
| |-
| |
| | MOD4 TX ||
| |
| |-
| |
| | MOD4 RX ||
| |
| |-
| |
| | MOD4 SPI MOSI ||
| |
| |-
| |
| | MOD4 SPI MISO ||
| |
| |-
| |
| | MOD4 SPI CLK ||
| |
| |-
| |
| | MOD4 SPI CS ||
| |
| |-
| |
| ! colspan="2" | GSM (WBC)
| |
| |-
| |
| | GSM Status || Modem power status (input)
| |
| |-
| |
| | GSM PWRKEY || Modem PWRKEY (output)
| |
| |-
| |
| | GSM ON || On/OFF 5 V
| |
| |-
| |
| | SIM_SELECT || SIM slot select (low: 1, high: 2)
| |
| |- | | |- |
| |} | | |} |
|
| |
|
| == Аналоговые входы == | | == Реализация UART == |
| Аналоговые входы в Wiren Board 7 доступны через стандартный ядерный интерфейс IIO.
| | [[Файл:MOD12.png|300px|thumb|right| Распиновка разъемов Mod1, Mod2 и Mod3 на WB7 под модули расширения]] |
| Конвертация сигналов с учётом внешний по отношению к процессору делителей происходит внутри ядра.
| | [[Файл:MOD3.png|300px|thumb|right| Распиновка разъема Mod4 на WB7 под модули расширения]] |
| | [[Файл:wbc_mod.png|300px|thumb|right| Распиновка разъема WBC на WB7 под модули 2g/3g/4g модемов]] |
|
| |
|
| Каждому аналоговому входу соответствует своё устройство в подсистеме IIO. Приложения должны считывать текущие значения из файлов с суффиксом raw, текущий масштаб и сдвиг из файлов scale и offset.
| | == Сигналы на модулях расширения == |
| | |
| В Wiren Board 7 scale аналоговых входов постоянный, а offset всегда равен нулю.
| |
| | |
| Пример чтения напряжения Vin на контроллере:
| |
| | |
| <pre>
| |
| root@wirenboard-AHIN3TB:~# cat /sys/bus/iio/devices/iio\:device4/name
| |
| vin-volt
| |
| root@wirenboard-AHIN3TB:~# cat /sys/bus/iio/devices/iio\:device4/in_voltage0_raw
| |
| 1779
| |
| root@wirenboard-AHIN3TB:~# cat /sys/bus/iio/devices/iio\:device4/in_voltage0_scale
| |
| 13.481987847
| |
| | |
| # 1779 * 13.481987847 mV = 23 984 mV
| |
| </pre>
| |
| | |
| Приложения должны искать IIO устройства по именам, номера не являются стабильными.
| |
| | |
| {| class="wikitable"
| |
| !Клеммник
| |
| !Имя IIO устройства
| |
| |-
| |
| |A1
| |
| |a1-volt
| |
| |-
| |
| |A2
| |
| |a2-volt
| |
| |-
| |
| |A3
| |
| |a3-volt
| |
| |-
| |
| |Vin
| |
| |vin-volt
| |
| |-
| |
| |}
| |
|
| |
|
| | == Каналы АЦП == |
| == Ножки для внутреннего использования == | | == Ножки для внутреннего использования == |
| {| border="1" class="wikitable"
| |
| ! Метка (label)|| Примечание
| |
| |-
| |
| | BUZZER ||
| |
| |-
| |
| | Red LED || rowspan="2" | [[Control_led_indicator_WB | Управление индикатором]]
| |
| |-
| |
| | Green LED
| |
| |-
| |
| | W1 UP ||
| |
| |-
| |
| | W2 UP ||
| |
| |-
| |
| | Pushbutton ||
| |
| |-
| |
| | USB0 ON ||
| |
| |-
| |
| | Wi-Fi ON ||
| |
| |-
| |
| | 5VOut ON ||
| |
| |-
| |
| | VOut ON ||
| |
| |-
| |
| | RS-485-1 Termination ||
| |
| |-
| |
| | RS-485-1 Failsafe ||
| |
| |-
| |
| | RS-485-2 Termination ||
| |
| |-
| |
| | RS-485-2 Failsafe ||
| |
| |-
| |
| |}
| |
|
| |
| == Расположение данных на внутреннем накопителе ==
| |
| {| class="wikitable"
| |
| |- style="font-weight:bold; text-align:center;"
| |
| ! style="font-family:'Courier New', Courier, monospace !important;" | Offset (in bytes)
| |
| !
| |
| !
| |
| |-
| |
| | style="font-family:'Courier New', Courier, monospace !important;" | 0x00000000
| |
| | rowspan="5" style="text-align:center;" | MBR
| |
| | rowspan="2" style="background-color:#fd6864;" | Device-specific factory data
| |
| |-
| |
| | style="font-family:'Courier New', Courier, monospace !important;" | 0x000000D9
| |
| |-
| |
| | style="font-family:'Courier New', Courier, monospace !important;" | 0x000001BE
| |
| | rowspan="2" | Partition table
| |
| |-
| |
| | style="font-family:'Courier New', Courier, monospace !important;" | 0x000001FE
| |
| |-
| |
| | style="font-family:'Courier New', Courier, monospace !important;" | 0x000001FF
| |
| |
| |
| |-
| |
| | style="font-family:'Courier New', Courier, monospace !important;" | 0x00002000
| |
| | rowspan="2" | Bootloader
| |
| |
| |
| |-
| |
| | style="font-family:'Courier New', Courier, monospace !important;" | 0x00087fff
| |
| |
| |
| |-
| |
| | style="font-family:'Courier New', Courier, monospace !important;" | 0x00088000
| |
| | rowspan="2" | Bootloader environment
| |
| |
| |
| |-
| |
| | style="font-family:'Courier New', Courier, monospace !important;" | 0x000a7fff
| |
| |
| |
| |-
| |
| | style="font-family:'Courier New', Courier, monospace !important;" | 0x000fc000
| |
| | rowspan="2" style="background-color:#fd6864;" | Device-specific factory data<br /><br />Factory DT overlay with revision,<br />batch, adc and crystal calibration data<br />and so on
| |
| |
| |
| |-
| |
| | style="font-family:'Courier New', Courier, monospace !important;" | 0x000fffff
| |
| |
| |
| |-
| |
| | style="font-family:'Courier New', Courier, monospace !important;" | 0x00100000
| |
| | rowspan="4" style="background-color:#fd6864;" | /dev/mmcblk0p1<br />Device-specific factory data
| |
| |
| |
| |-
| |
| | style="font-family:'Courier New', Courier, monospace !important;" | 0x00500000
| |
| | rowspan="2" style="background-color:#fd6864;" | hiddenfs<br /><br />Ext3 filesystem, currently holding device-specific<br />cryptographic certificates
| |
| |-
| |
| | style="font-family:'Courier New', Courier, monospace !important;" | 0x005fffff
| |
| |-
| |
| | style="font-family:'Courier New', Courier, monospace !important;" | 0x010fffff
| |
| |
| |
| |-
| |
| | style="font-family:'Courier New', Courier, monospace !important;" | 0x01100000
| |
| | rowspan="2" | /dev/mmcblk0p2<br />Rootfs partition
| |
| |
| |
| |-
| |
| | style="font-family:'Courier New', Courier, monospace !important;" | 0x410fffff
| |
| |
| |
| |-
| |
| | style="font-family:'Courier New', Courier, monospace !important;" | 0x41100000
| |
| | rowspan="2" | /dev/mmcblk0p3<br />Rootfs partition
| |
| |
| |
| |-
| |
| | style="font-family:'Courier New', Courier, monospace !important;" | 0x810fffff
| |
| |
| |
| |-
| |
| | style="font-family:'Courier New', Courier, monospace !important;" | 0x81200000
| |
| | rowspan="2" | /dev/mmcblk0p5<br />Swap partition
| |
| |
| |
| |-
| |
| | style="font-family:'Courier New', Courier, monospace !important;" | 0x911fffff
| |
| |
| |
| |-
| |
| | style="font-family:'Courier New', Courier, monospace !important;" | 0x91300000
| |
| | rowspan="2" | /dev/mmcblk0p6<br />/mnt/data partition
| |
| |
| |
| |-
| |
| | style="font-family:'Courier New', Courier, monospace !important;" | end
| |
| |
| |
| |}
| |
Это черновик страницы. Последняя правка сделана 18.05.2022 пользователем A.Degtyarev.
Введение
Эта статья предназначена, в первую очередь, для разработчиков стороннего ПО для контроллеров Wiren Board.
Самый простой и удобный способ работы с железом контроллера — через MQTT, связываясь с сервисами wb: wb-mqtt-gpio, wb-mqtt-adc, wb-mqtt-gpio и т.п. Сервисы wb- позволяют работать с железом через унифицированный интерфейс MQTT и скрывают аппаратные различия между аппаратными ревизиями контроллеров.
Работа в обход стандартных сервисов wb- обычно используется, когда программное обеспечение выполняется на разных Linux-контроллерах разных вендоров, и работа через соответсвующие интерфейсы ядра уже реализована в ПО. Данная статья содержит описание периферии, нужное для работы с ней через стандартные интерфейсы ядра. При работе с ядерными интерфейсами не забудьте отключить соответствующий сервис wb-.
Большая часть периферии, описанной в этой статье, описана также в ноде /wirenboard в Devicee Tree контроллера. Сервисы wb-mqtt-gpio, wb-mqtt-adc и т.д. берут описание периферии именно оттуда, считывая описание каждый раз при старте контроллера. Этот способ является предпочтительным и для стороннего ПО, чтобы сохранить совместимость с прошлыми и будущими аппаратными ревизиями оборудования.
Работа с GPIO в Linux
GPIO (General-purpose input/output — ввод/вывод общего назначения) — контакт электрической схемы, который может принимать одно из двух логических состояний — единицу или ноль. Пользователь может устанавливать и считывать состояние GPIO.
В разных устройствах высокий логический уровень может представляться разным напряжением — следите за этим. В контроллерах Wiren Board логическая единица — это 3.3 В.
ВНИМАНИЕ: не подключайте напрямую к GPIO контроллера сигналы с напряжением больше 3.3 В! Если нужно подключить устройство, которое выдает сигнал с более высоким напряжением — используйте схемы согласования. В некоторых случаях, если напряжение сигнала не больше 5 В, то можно согласовать сигналы через резистор на 20 кОм.
Подробно про работу с GPIO читайте в статье Работа с GPIO. Также рекомендуем прочитать соответствующий раздел документации к ядру Linux.
Для других версий контроллера смотрите Таблицы GPIO разных версий контроллера.
Посмотреть таблицу GPIO можно командой cat /sys/kernel/debug/gpio
, или в разделе ниже.
GPIO на клеммниках
клеммник
|
функция
|
GPIO
|
GPIO number
|
вывод i.mx6UL
|
комментарии
|
Выходы A1-A4
|
A1(out)
|
FET
|
GPIO3_IO15
|
109
|
LCD_DATA10
|
Выход "открытый коллектор";
|
A2(out)
|
FET
|
GPIO3_IO16
|
108
|
LCD_DATA11
|
Выход "открытый коллектор";
|
A3(out)
|
FET
|
GPIO3_IO17
|
107
|
LCD_DATA12
|
Выход "открытый коллектор";
|
D1(out)
|
FET
|
GPIO3_IO18
|
106
|
LCD_DATA13
|
Выход "открытый коллектор";
|
Входы A1-A4 (инвертированы; т.е. "1" на gpio появляется, когда на входе нет напряжения)
|
A1 (in)
|
DI
|
GPIO3_IO14
|
231
|
LCD_DATA09
|
|
A2 (in)
|
DI
|
GPIO3_IO13
|
230
|
LCD_DATA08
|
|
A3 (in)
|
DI
|
GPIO3_IO28
|
227
|
LCD_DATA23
|
|
D1 (in)
|
DI
|
GPIO3_IO27
|
228
|
LCD_DATA22
|
Onewire
|
W1
|
1-wire/DI
|
GPIO3_IO4
|
226
|
LCD_RESET
|
по умолчанию используется драйвером w1-gpio
|
W2
|
1-wire/DI
|
GPIO1_IO11
|
271
|
JTAG_TMS
|
по умолчанию используется драйвером w1-gpio
|
Реализация UART
Распиновка разъемов Mod1, Mod2 и Mod3 на WB7 под модули расширения
Распиновка разъема Mod4 на WB7 под модули расширения
Распиновка разъема WBC на WB7 под модули 2g/3g/4g модемов
Сигналы на модулях расширения
Каналы АЦП
Ножки для внутреннего использования