2016-11-03 3 views
2

Я строю свое собственное ядро. Дерево устройств ядра модифицировано из-за собственной материнской платы.Как изменить имя метки в дереве устройств linux?

я могу позволить МОЖЕТ устройство с помощью:

// here ATMEL is defining the can0 and can1 memory mapped devices 
#include "sama5d3_can.dtsi" 
... 
can0: [email protected] { 
    status = "okay"; 
}; 
can1: [email protected] { 
    status = "okay"; 
};   

Но теперь я хочу, чтобы изменить название них. Can0 должен стать can1 и can1 должен быть can0.

Как это сделать? PS: печать ошибки при переключении этикетки и сборки ядра:

| ERROR (duplicate_label): Duplicate label 'can0' on /ahb/apb/[email protected] and /ahb/apb/[email protected] 
| ERROR (duplicate_label): Duplicate label 'can1' on /ahb/apb/[email protected] and /ahb/apb/[email protected] 
+0

Проверить sama5d3_can.dtsi –

+0

Изменение меток на sama5d3_can.dtsi не имеет эффектов. Являются ли этикетки переписаны в dtb? –

+0

Что именно вы хотите достичь? Почему вы хотите изменить ярлыки? Поскольку они не «перехватываются» в dtb и строго используются в dts, чтобы иметь ссылки на другие узлы. Имена ваших узлов будут оставаться 'can @ f000c000' и' can @ f8010000'. – Longfield

ответ

2

Сеть «устройство» не берет свое название от DTS вообще. Они получают это от имени, которое дается netdevice.name.

В вашем случае at91_can.c driver называет alloc_candev(), что явно задает имя интерфейса для can%d (can0, can1, ...). Число «назначено» каждому устройству в этом случае строго зависит от последовательности «перечисления» аппаратного обеспечения и его регистрации с помощью драйвера at91_can.

Изменение дерева устройств не поможет вам изменить имя сетевых интерфейсов. Если вам действительно нужно изменить имя интерфейсов can, вы можете написать udev rules, которые делают это.