INMYS WIKI

Инженерами для инженеров

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

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


boards:nms-sm-rk3568:firmware_opensource:quick_start

Это старая версия документа!


RK3568 Quick Start Kernel 6.1

CAN

Для корректной работы шины CAN на отладочной плате NMS_SM_EVM необходимо подключить терминаторы - установить джамперы X13 и X14.

Драйвер CAN собирается как модуль ядра .ko с помощью buildroot-external. Исходники взяты из ядра 4.19, которое предоставляется Rockchip. Модуль ядра подгружается в /etc/init.d/S49CANinit.

Пример настройки интерфейса и проверки в режиме loopback CAN0↔CAN1:

#configure
ip link set dev can0 down
ip link set dev can1 down
ip link set can0 up type can bitrate 1000000 dbitrate 1000000 fd on
ip link set can1 up type can bitrate 1000000 dbitrate 1000000 fd on

#test
candump -T 1000 can0 > /tmp/1.txt&
sleep 1
cansend can1 500
sleep 2

cat /tmp/1.txt
CAN в ядре 6.1 работает только в режиме

fd on

ETH LED configuration

Светодиоды Ethernet управляются PHY DAP8211. Описания регистров п. 4.3.10 - 4.3.14

PHY управляется через MDIO регистры. Для доступа к регистрам используется утилита mdio-tool

Связь SMARC-пинов и регистров

SMARC Pin SMARC Name PHY LED PHY Reg
P21 GBE0_LINK100# LED0 0xA00C
P22 GBE0_LINK1000# LED1 0xA00D
P25 GBE0_LINK_ACT# LED2 0xA00E
S19 GBE1_LINK100# LED0 0xA00C
S22 GBE1_LINK1000# LED1 0xA00D
S31 GBE1_LINK_ACT# LED2 0xA00E

Для работы с регистрами светодиодов используется General Extend Mapping:

Offset Name Description
0x1E EXT_ADD Extended Register Address Registe
0x1F EXT_DATA Extended Register Data Register

В EXT_ADD требуется записать адрес желаемого Extended Register, в/из EXT_DATA можно писать/читать данные.

Пример настройки на NMS-SM-EVM

На отладочной плате на ETH заведены GBE0_LINK1000 - на YELLOW LED, GBE1_LINK_ACT - на GREEN

По умолчанию PHY настроен на режим 0x0620 - Yellow ACT 1Gbit/s; Green ACT 100Mbit/s;

Пример настройки, при котором Yellow и Green будут ACT на скорости 1000:

./mdio-tool w eth0 0x1e 0xA00D #set EXT reg
./mdio-tool r eth0 0x1f #read EXT reg
./mdio-tool w eth0 0x1f 0x0660 #write new value 
./mdio-tool w eth0 0x1e 0x0 #set EXT_ADDR reg to default

Работа с GPIO

Стандарт модулей SMARC предусматривает GPIO0-GPIO13, но не все они имплементированы в модулях NMS-SM-RK3568:

Также при необходимости некоторые интерфейсные пины(в соответвии с таблицей «Распиновка разъема») можно переопределить как GPIO.

Все GPIO прописаны dts и видны /sys/kernel/debug/gpio. Для управления состоянием пина по имени (имя во 2 столбце) можно использовать скрипт gpio.sh

root@192-168-1-101:~# cat /sys/kernel/debug/gpio 
gpiochip0: GPIOs 0-31, parent: platform/fdd60000.gpio, gpio0:
 gpio-0   (GPIO0_A0            )
 gpio-1   (GPIO0_A1            )
 gpio-2   (GPIO0_A2            )
 gpio-3   (GPIO0_A3            )
 gpio-4   (GPIO0_A4            |cd                  ) in  hi IRQ ACTIVE LOW
 gpio-5   (GPIO0_A5            )
 gpio-6   (GPIO0_A6            )
 gpio-7   (GPIO0_A7            )
 gpio-8   (GPIO0_B0            )
 gpio-9   (GPIO0_B1            )
 gpio-10  (GPIO0_B2            )
 gpio-11  (GPIO0_B3            )
 gpio-12  (GPIO0_B4            )
 gpio-13  (GPIO0_B5            )
 gpio-14  (GPIO0_B6            )
 gpio-15  (GPIO0_B7            )
 gpio-16  (GPIO0_C0            )
 gpio-17  (GPIO0_C1            )
 gpio-18  (GPIO0_C2            )
 gpio-19  (GPIO0_C3            )
 gpio-20  (GPIO0_C4            )
 gpio-21  (GPIO0_C5            )
 gpio-22  (GPIO0_C6            )
 gpio-23  (GPIO0_C7            )
 gpio-24  (GPIO0_D0            )
 gpio-25  (GPIO0_D1            )
 gpio-26  (GPIO0_D2            )
 gpio-27  (GPIO0_D3            )
 gpio-28  (GPIO0_D4            )
 gpio-29  (GPIO0_D5            )
 gpio-30  (GPIO0_D6            )
 gpio-31  (GPIO0_D7            )

gpiochip1: GPIOs 32-63, parent: platform/fe740000.gpio, gpio1:
 gpio-32  (GPIO1_A0            )
 gpio-33  (GPIO1_A1            )
 gpio-34  (GPIO1_A2            )
 gpio-35  (GPIO1_A3            )
 gpio-36  (GPIO1_A4            )
 gpio-37  (GPIO1_A5            )
 gpio-38  (GPIO1_A6            )
 gpio-39  (GPIO1_A7            )
 gpio-40  (GPIO1_B0            )
 gpio-41  (GPIO1_B1            )
 gpio-42  (GPIO1_B2            )
 gpio-43  (GPIO1_B3            )
 gpio-44  (GPIO1_B4            )
 gpio-45  (GPIO1_B5            )
 gpio-46  (GPIO1_B6            )
 gpio-47  (GPIO1_B7            )
 gpio-48  (GPIO1_C0            )
 gpio-49  (GPIO1_C1            )
 gpio-50  (GPIO1_C2            )
 gpio-51  (GPIO1_C3            )
 gpio-52  (GPIO1_C4            )
 gpio-53  (GPIO1_C5            )
 gpio-54  (GPIO1_C6            )
 gpio-55  (GPIO1_C7            )
 gpio-56  (GPIO1_D0            )
 gpio-57  (GPIO1_D1            )
 gpio-58  (SMARC_GPIO10        )
 gpio-59  (GPIO1_D3            )
 gpio-60  (SMARC_GPIO11        )
 gpio-61  (GPIO1_D5            )
 gpio-62  (GPIO1_D6            )
 gpio-63  (GPIO1_D7            )

gpiochip2: GPIOs 64-95, parent: platform/fe750000.gpio, gpio2:
 gpio-64  (GPIO2_A0            )
 gpio-65  (GPIO2_A1            )
 gpio-66  (GPIO2_A2            )
 gpio-67  (GPIO2_A3            )
 gpio-68  (GPIO2_A4            )
 gpio-69  (GPIO2_A5            )
 gpio-70  (GPIO2_A6            )
 gpio-71  (GPIO2_A7            )
 gpio-72  (GPIO2_B0            )
 gpio-73  (GPIO2_B1            )
 gpio-74  (GPIO2_B2            )
 gpio-75  (GPIO2_B3            )
 gpio-76  (GPIO2_B4            )
 gpio-77  (GPIO2_B5            )
 gpio-78  (GPIO2_B6            )
 gpio-79  (GPIO2_B7            )
 gpio-80  (GPIO2_C0            )
 gpio-81  (GPIO2_C1            )
 gpio-82  (GPIO2_C2            |led_user            ) out lo 
 gpio-83  (GPIO2_C3            )
 gpio-84  (GPIO2_C4            )
 gpio-85  (GPIO2_C5            )
 gpio-86  (GPIO2_C6            )
 gpio-87  (GPIO2_C7            )
 gpio-88  (GPIO2_D0            )
 gpio-89  (GPIO2_D1            )
 gpio-90  (GPIO2_D2            )
 gpio-91  (GPIO2_D3            )
 gpio-92  (GPIO2_D4            )
 gpio-93  (GPIO2_D5            )
 gpio-94  (GPIO2_D6            )
 gpio-95  (GPIO2_D7            )
gpiochip3: GPIOs 96-127, parent: platform/fe760000.gpio, gpio3:
 gpio-96  (GPIO3_A0            )
 gpio-97  (GPIO3_A1            |reset               ) out hi 
 gpio-98  (GPIO3_A2            )
 gpio-99  (GPIO3_A3            )
 gpio-100 (GPIO3_A4            )
 gpio-101 (GPIO3_A5            )
 gpio-102 (GPIO3_A6            )
 gpio-103 (GPIO3_A7            |snps,reset          ) out hi ACTIVE LOW
 gpio-104 (GPIO3_B0            |snps,reset          ) out hi ACTIVE LOW
 gpio-105 (GPIO3_B1            )
 gpio-106 (GPIO3_B2            )
 gpio-107 (GPIO3_B3            )
 gpio-108 (GPIO3_B4            )
 gpio-109 (GPIO3_B5            |sata_usb3_mux_hog   ) out lo 
 gpio-110 (GPIO3_B6            )
 gpio-111 (GPIO3_B7            )
 gpio-112 (GPIO3_C0            )
 gpio-113 (GPIO3_C1            |reset               ) out hi 
 gpio-114 (GPIO3_C2            )
 gpio-115 (GPIO3_C3            )
 gpio-116 (GPIO3_C4            )
 gpio-117 (GPIO3_C5            )
 gpio-118 (GPIO3_C6            )
 gpio-119 (GPIO3_C7            )
 gpio-120 (GPIO3_D0            )
 gpio-121 (GPIO3_D1            |can_i2c2_mux_hog    ) out lo 
 gpio-122 (SMARC_GPIO3         |sysfs               ) out hi 
 gpio-123 (SMARC_GPIO1         )
 gpio-124 (SMARC_GPIO2         )
 gpio-125 (SMARC_GPIO0         |reset               ) out lo 
 gpio-126 (GPIO3_D6            )
 gpio-127 (GPIO3_D7            )

gpiochip4: GPIOs 128-159, parent: platform/fe770000.gpio, gpio4:
 gpio-128 (GPIO4_A0            )
 gpio-129 (GPIO4_A1            )
 gpio-130 (GPIO4_A2            )
 gpio-131 (GPIO4_A3            )
 gpio-132 (GPIO4_A4            )
 gpio-133 (GPIO4_A5            )
 gpio-134 (GPIO4_A6            )
 gpio-135 (GPIO4_A7            )
 gpio-136 (GPIO4_B0            )
 gpio-137 (GPIO4_B1            )
 gpio-138 (GPIO4_B2            )
 gpio-139 (GPIO4_B3            )
 gpio-140 (GPIO4_B4            )
 gpio-141 (GPIO4_B5            )
 gpio-142 (GPIO4_B6            )
 gpio-143 (GPIO4_B7            )
 gpio-144 (GPIO4_C0            )
 gpio-145 (GPIO4_C1            )
 gpio-146 (GPIO4_C2            )
 gpio-147 (GPIO4_C3            )
 gpio-148 (GPIO4_C4            )
 gpio-149 (GPIO4_C5            )
 gpio-150 (GPIO4_C6            |sysfs               ) out lo 
 gpio-151 (GPIO4_C7            )
 gpio-152 (GPIO4_D0            )
 gpio-153 (GPIO4_D1            )
 gpio-154 (GPIO4_D2            )
 gpio-155 (GPIO4_D3            )
 gpio-156 (GPIO4_D4            )
 gpio-157 (GPIO4_D5            )
 gpio-158 (GPIO4_D6            )
 gpio-159 (GPIO4_D7            )

gpiochip5: GPIOs 496-511, parent: i2c/3-0020, 3-0020, can sleep:
 gpio-496 (DSI0_TP_RST_N       )
 gpio-497 (DSI1_TP_RST_N       )
 gpio-498 (DSI0_RST_N          )
 gpio-499 (DSI1_RST_N          )
 gpio-500 (CAM0_PWDN           )
 gpio-501 (I2C_GPIO05          |sysfs               ) out lo 
 gpio-502 (I2C_GPIO06          |sysfs               ) out hi 
 gpio-503 (I2C_GPIO07          )
 gpio-504 (I2C_GPIO10          )
 gpio-505 (I2C_GPIO11          )
 gpio-506 (I2C_GPIO12          )
 gpio-507 (I2C_GPIO13          )
 gpio-508 (I2C_GPIO14          )
 gpio-509 (I2C_GPIO15          )
 gpio-510 (I2C_GPIO16          )
 gpio-511 (I2C_GPIO17          )
root@192-168-1-101:~# 

boards/nms-sm-rk3568/firmware_opensource/quick_start.1713785594.txt.gz · Последнее изменение: 2024/04/22 11:33 — Артем Слепов