RK3568 Quick Start Kernel 6.1

CAN

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

Терминальные резисторы выставлены в dts:

...
leds {
/*CAN A config pins*/
CAN_A_therm {
gpios = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>;
default-state = "on"; //on - enable 120 Ohm resistor
};
};
...
/*CAN B config pins*/
CAN_B_therm {
gpios = <&gpio4 RK_PC2 GPIO_ACTIVE_HIGH>;
default-state = "on"; //on - enable 120 Ohm resistor
};

Пример настройки интерфейса и проверки в режиме 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&
usleep 100000
cansend can1 500
sleep 2
cat /tmp/1.txt