如何更改linux设备树中标签的名称?

时间:2016-11-03 10:53:22

标签: linux linux-kernel linux-device-driver device-tree

我正在构建自己的内核。由于自己设计的主板,内核的设备树被修改。

我可以通过以下方式启用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

1 个答案:

答案 0 :(得分:3)

网络“设备”根本没有从DTS中取名。他们从赋予netdevice.name的名称中获取它。

在您的情况下,at91_can.c driver调用alloc_candev()明确将接口的名称设置为can%dcan0can1,...)。然后,为每个设备“分配”的数字严格依赖于硬件“枚举”的顺序及其在at91_can驱动程序中的注册。

更改设备树无助于您更改网络接口的名称。如果您确实需要更改can接口的名称,可以编写udev rules来执行此操作。