Part Number:TDA4VM
您好
我们在使用TDA4VM评估板时,发现CAN设备号是变动的,尝试使用别名的方式,将CAN设备号固定下来,dts文件如下:
/ { chosen { stdout-path = "serial2:115200n8"; bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000"; };aliasis{can0 = &mcu_mcan0;can1 = &mcu_mcan1;can2 = &main_mcan0;can3 = &main_mcan2;};
但是还是出现设备号变动的情况,比如我们使用的是mcu_mcan0,发现真实设备号can3,并不是can0。查看/sys下aliasis下can0~3内容,传递参数也是对的
cat /sys/firmware/devicetree/base/aliasis/can0 /bus@100000/bus@28380000/can@40528000 cat /sys/firmware/devicetree/base/aliasis/can1 /bus@100000/bus@28380000/can@40568000 cat /sys/firmware/devicetree/base/aliasis/can2 /bus@100000/can@2701000 cat /sys/firmware/devicetree/base/aliasis/can3 /bus@100000/can@2721000
想了解下,这个问题如何解决?或者是否有其他方式来固定can设备号
Cherry Zhou:
您好,您的问题我们需要升级到英文论坛看下,链接如下。由于国外假期,给到答复的时间可能会有所延迟,敬请谅解:
https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1244130/tda4vm-device-number-cannot-be-fixed
,
davied zhang:
好的,发现之前aliases拼写有问题,重新尝试时换成非自动枚举的设备名,如下所示:
aliases{mcu_can0 = &mcu_mcan0;mcu_can1 = &mcu_mcan1;main_can0 = &main_mcan0;main_can2 = &main_mcan2;};然后发现,CAN设备还是使用的自动枚举的名字,不是别名。
can0: flags=128<NOARP>mtu 16metric 1unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00txqueuelen 10(UNSPEC)RX packets 0bytes 0 (0.0 B)RX errors 0dropped 0overruns 0frame 0TX packets 0bytes 0 (0.0 B)TX errors 0dropped 0 overruns 0carrier 0collisions 0device interrupt 23can1: flags=128<NOARP>mtu 16metric 1unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00txqueuelen 10(UNSPEC)RX packets 0bytes 0 (0.0 B)RX errors 0dropped 0overruns 0frame 0TX packets 0bytes 0 (0.0 B)TX errors 0dropped 0 overruns 0carrier 0collisions 0device interrupt 25can2: flags=128<NOARP>mtu 16metric 1unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00txqueuelen 10(UNSPEC)RX packets 0bytes 0 (0.0 B)RX errors 0dropped 0overruns 0frame 0TX packets 0bytes 0 (0.0 B)TX errors 0dropped 0 overruns 0carrier 0collisions 0device interrupt 55can3: flags=128<NOARP>mtu 16metric 1unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00txqueuelen 10(UNSPEC)RX packets 0bytes 0 (0.0 B)RX errors 0dropped 0overruns 0frame 0TX packets 0bytes 0 (0.0 B)TX errors 0dropped 0 overruns 0carrier 0collisions 0device interrupt 57从现象来看,貌似是别名未生效。但是在系统信息中,别名传递应该没问题,确实有新增的别名信息,不知道为什么没有生效
root@j7-evm:~# ls /sys/firmware/devicetree/base/aliases/ ethernet0main_can2mcu_can1 mmc1serial0serial10serial2serial4serial6serial8 main_can0mcu_can0mmc0 nameserial1serial11serial3serial5serial7serial9
,
Cherry Zhou:
您好,
您检查下在/sys/class/net下的实例?是否是按照别名中所述的顺序?
,
davied zhang:
net下还是can0 can1 can2 can3这些自动自动识别出的实例。
root@j7-evm:~# ls /sys/class/net/ can0can1can2can3 docker0eth0eth1eth2lolrwxrwxrwx 1 root root 0 Mar3 23:11 can0 -> ../../devices/platform/bus@100000/bus@100000:bus@28380000/40568000.can/net/can0 lrwxrwxrwx 1 root root 0 Mar3 23:11 can1 -> ../../devices/platform/bus@100000/bus@100000:bus@28380000/40528000.can/net/can1 lrwxrwxrwx 1 root root 0 Mar3 23:11 can2 -> ../../devices/platform/bus@100000/2721000.can/net/can2 lrwxrwxrwx 1 root root 0 Mar3 23:11 can3 -> ../../devices/platform/bus@100000/2701000.can/net/can3
,
davied zhang:
您好,我们想尝试使用udev的方式来固定can 设备号,在/etc/udev/rules.d下添加新的规则,想知道这种方式可行么?
如果可行的话,我理解can属于net子系统,在当前net相关的/etc/udev/rules.d/autonet.rules下增加CAN规则。从当前的现象来看,can设备的DEVPATH基本是固定的,以DEVPATH为依据创建设备名,这个思路是否可行
,
Cherry Zhou:
您好,
所以即使使用aliasing,device order也没有改变对吗?
,
davied zhang:
是的,没有生效
,
Cherry Zhou:
您好,
有一个问题,在您贴出的代码中,"aliases" 拼写是不正确的。
,
davied zhang:
您好,之前发现了,拼写改正之后也没生效。尝试使用不同的别名,但是均未生效。我们在尝试使用udev机制来修改can名称,对于can相关的udev规则可查的资料太少,您这边有什么建议么