Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| boards:nms-sm-rk3568:firmware_opensource:quick_start [2024/02/26 14:30] – [ETH LED configuration] Артем Слепов | boards:nms-sm-rk3568:firmware_opensource:quick_start [2025/02/18 09:23] (текущий) – [Работа с GPIO] Артем Слепов | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ===== RK3568 Quick Start Kernel 6.1 ===== | ===== RK3568 Quick Start Kernel 6.1 ===== | ||
| - | ==== CAN ==== | + | ===== CAN ===== |
| Для корректной работы шины CAN на отладочной плате NMS_SM_EVM необходимо подключить терминаторы - установить джамперы X13 и X14.\\ | Для корректной работы шины CAN на отладочной плате NMS_SM_EVM необходимо подключить терминаторы - установить джамперы X13 и X14.\\ | ||
| Строка 17: | Строка 17: | ||
| candump -T 1000 can0 > / | candump -T 1000 can0 > / | ||
| sleep 1 | sleep 1 | ||
| - | cansend can1 500 | + | cansend can1 500#DEADBEEF |
| sleep 2 | sleep 2 | ||
| Строка 29: | Строка 29: | ||
| **fd on**</ | **fd on**</ | ||
| {{: | {{: | ||
| - | ==== ETH LED configuration ==== | + | ===== ETH LED configuration |
| Светодиоды Ethernet управляются [[https:// | Светодиоды Ethernet управляются [[https:// | ||
| Строка 38: | Строка 38: | ||
| < | < | ||
| - | {{tablelayout}}^ SMARC Pin ^ SMARC Name ^ PHY LED ^ PHY Reg ^ | + | ^ SMARC Pin ^ SMARC Name ^ PHY LED ^ PHY Reg ^ |
| | P21 | GBE0_LINK100# | | P21 | GBE0_LINK100# | ||
| | P22 | GBE0_LINK1000# | | P22 | GBE0_LINK1000# | ||
| Строка 47: | Строка 47: | ||
| </ | </ | ||
| - | Для работы с регистрами светодиодов используется General Extend Mapping: | + | Для работы с регистрами светодиодов используется General Extend Mapping: |
| + | |||
| + | ^ Offset | ||
| | 0x1E | EXT_ADD | | 0x1E | EXT_ADD | ||
| | 0x1F | EXT_DATA | | 0x1F | EXT_DATA | ||
| + | |||
| В EXT_ADD требуется записать адрес желаемого Extended Register, в/из EXT_DATA можно писать/ | В EXT_ADD требуется записать адрес желаемого Extended Register, в/из EXT_DATA можно писать/ | ||
| Строка 69: | Строка 72: | ||
| </ | </ | ||
| + | |||
| + | ===== Работа с GPIO ===== | ||
| + | |||
| + | Стандарт модулей SMARC предусматривает GPIO0-GPIO13, | ||
| + | * В [[https:// | ||
| + | * В [[https:// | ||
| + | * В [[https:// | ||
| + | |||
| + | Также при необходимости некоторые интерфейсные пины(в соответвии с таблицей " | ||
| + | |||
| + | Процессор содержит 5 банков по 32 пина. Все GPIO прописаны dts и видны /// | ||
| + | < | ||
| + | root@192-168-1-101: | ||
| + | gpiochip0: GPIOs 0-31, parent: platform/ | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | gpiochip1: GPIOs 32-63, parent: platform/ | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | gpiochip2: GPIOs 64-95, parent: platform/ | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | gpiochip3: GPIOs 96-127, parent: platform/ | ||
| + | | ||
| + | | ||
| + | | ||
| + | ..... | ||
| + | | ||
| + | | ||
| + | |||
| + | gpiochip4: GPIOs 128-159, parent: platform/ | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | === Пример использования интерфейсного пина в качестве GPIO === | ||
| + | Например, | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Необходимо в таблице " | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Управление пином: | ||
| + | < | ||
| + | root@192-168-1-101: | ||
| + | | ||
| + | root@192-168-1-101: | ||
| + | root@192-168-1-101: | ||
| + | | ||
| + | root@192-168-1-101: | ||
| + | root@192-168-1-101: | ||
| + | | ||
| + | </ | ||
| + | === I2C-GPIO расширитель на отладочной плате | ||
| + | |||
| + | Отладочная плата содержит PCA9535PW расширитель на адресе 0x20, подключенный к i2c-контроллеру с адресом fe5c0000. В {{ : | ||
| + | |||
| + | < | ||
| + | gpiochip5: GPIOs 496-511, parent: i2c/3-0020, 3-0020, can sleep: | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | Фрагмент dts с описание gpio-line-names: | ||
| + | < | ||
| + | i2cgpio: pca9535@20 { | ||
| + | compatible = " | ||
| + | /* vcc-supply = <& | ||
| + | reg = < | ||
| + | /*GPIO.3 -> P111 (som) -> gpio3_d2*/ | ||
| + | interrupt-parent = <& | ||
| + | interrupts = <27 IRQ_TYPE_LEVEL_LOW>; | ||
| + | interrupt-controller; | ||
| + | # | ||
| + | |||
| + | gpio-controller; | ||
| + | #gpio-cells = <2>; | ||
| + | gpio-line-names = | ||
| + | " | ||
| + | " | ||
| + | }; | ||
| + | |||
| + | </ | ||
| + | |||
| + | Выводы GPIO на headers: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Пример управления I2C_GPIO5: | ||
| + | < | ||
| + | root@192-168-1-101: | ||
| + | root@192-168-1-101: | ||
| + | </ | ||
| + | |||
| + | ===== I2C в Debian ===== | ||
| + | Если в Debian при попытке // | ||
| + | < | ||
| + | root@192-168-1-101: | ||
| + | Error: Could not open file `/ | ||
| + | </ | ||
| + | |||
| + | Для этого необходимо в /// | ||
| + | |||
| + | {{: | ||
| + | |||
| + | После перезагрузки в dev появятся i2c-линии: | ||
| + | < | ||
| + | root@192-168-1-101: | ||
| + | | ||
| + | 00: -- -- -- -- -- -- -- -- | ||
| + | 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
| + | 20: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
| + | 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
| + | 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
| + | 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
| + | 60: 60 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
| + | 70: -- -- -- -- -- -- -- -- | ||
| + | </ | ||
| + | |||
| + | ===== SPI в Debian ===== | ||
| + | Для общения с SPI устройствами в ядре должен быть модуль spidev. | ||
| + | |||
| + | В качестве примера в ///root/// лежит программа //run_spi// и ее исходный код //spi.c// (либо на [[https:// | ||
| + | |||
| + | Инструкция JEDEC ID для данного устройства имеет вид: 0x9F [MF7-MF0] [ID15-ID8] [ID7-ID0]. | ||
| + | |||
| + | То есть, первый байт последовательности указывается нами - 0x9F. Далее получаем 3 оставшихся байта. | ||
| + | |||
| + | Скриншот выполнения инструкции JEDEC ID для SPI FLASH: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Как видно на скриншоте, | ||
| + | |||
| + | Если использовать несколько байт подряд, | ||