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

How to change the name of a label in a linux 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

网络 "devices" 根本没有从 DTS 中获取他们的名字。他们从给 netdevice.name.

的名字中得到它

在您的例子中,at91_can.c driver calls alloc_candev() 明确地将接口名称设置为 can%dcan0can1、...)。然后,每个设备的编号 "assigned" 严格取决于硬件的 "enumeration" 序列及其在 at91_can 驱动程序中的注册。

更改设备树不会帮助您更改网络接口的名称。如果你真的需要更改 can 接口的名称,你可以写 udev rules 这样做。