TI中文支持网
TI专业的中文技术问题搜集分享网站

TDA4VM: 设备号无法固定

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	docker0eth0eth1eth2lo

lrwxrwxrwx 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规则可查的资料太少,您这边有什么建议么

赞(0)
未经允许不得转载:TI中文支持网 » TDA4VM: 设备号无法固定
分享到: 更多 (0)