2016-11-03 9 views
2

나는 내 자신의 커널을 만들고있다. 자체 메인 보드로 인해 커널의 장치 트리가 수정되었습니다.리눅스 장치 트리에서 레이블의 이름을 변경하는 방법은 무엇입니까?

나는에 의해 캔 장치를 활성화 할 수 있습니다

// 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는 명시 적으로 can%d에 (can0, can1, ...) 인터페이스의 이름을 설정 alloc_candev()를 호출합니다. 하드웨어의 "열거 (enumeration)"순서와 at91_can 드라이버 등록의 순서에 따라 엄격하게 각 장치에 "할당 된"번호입니다.

장치 트리를 변경해도 네트워크 인터페이스 이름을 변경하는 데 도움이되지 않습니다. can 인터페이스의 이름을 정말로 바꿀 필요가 있다면 udev rules이라고 쓰면된다.