我正在构建自己的内核。由于自己设计的主板,内核的设备树被修改。
我可以通过以下方式启用can设备:
// here ATMEL is defining the can0 and can1 memory mapped devices
#include "sama5d3_can.dtsi"
...
can0: can@f000c000 {
status = "okay";
};
can1: can@f8010000 {
status = "okay";
};
但现在我想切换它们的名字。 Can0应该成为can1,can1应该是can0。
怎么做? PS:切换标签和构建内核时出现错误:
| ERROR (duplicate_label): Duplicate label 'can0' on /ahb/apb/can@f8010000 and /ahb/apb/can@f000c000
| ERROR (duplicate_label): Duplicate label 'can1' on /ahb/apb/can@f8010000 and /ahb/apb/can@f000c000
答案 0 :(得分:3)
网络“设备”根本没有从DTS中取名。他们从赋予netdevice.name
的名称中获取它。
在您的情况下,at91_can.c driver调用alloc_candev()
明确将接口的名称设置为can%d
(can0
,can1
,...)。然后,为每个设备“分配”的数字严格依赖于硬件“枚举”的顺序及其在at91_can驱动程序中的注册。
更改设备树无助于您更改网络接口的名称。如果您确实需要更改can接口的名称,可以编写udev rules来执行此操作。