am3358 임베디드 리눅스 보드사용중에 기가랜으로 인터넷이 연결되지 않고 100m으로만 되는 문제가있어

계속 찾아보던중

 

이런 내용을 발견하였고 내부클럭 지연모드를 활성화하는 방법에 대해 찾아보니

https://ethernetfmc.com/rgmii-interface-timing-considerations/ 이런 링크를 찾을수 있었다.

디바이스 트리에 내용을 수정하여 간단히 변경할수 있는것 같았는데 애초에 디바이스 트리가 뭔지 모르는 상태여서 한참동안 찾아보았다.

리눅스 부팅을 위해서 디바이스 정보들을 바이너리 형태로 저장해둔 것이라고 하는데 수정은 어떻게 해야할까?

우선 dtc (device tree compiler)를 설치해야한다.

sudo apt install device-tree-compiler

컴파일러가 설치되고나면 dtb파일이 있는 디렉토리로 이동한다. 작성자는 beaglebone-black을 사용

cd KERNEL/arch/arm/boot/dts/

해당 디렉토리로 이동한뒤에 바이너리 상태로 있는 am335x-boneblack.dtb파일을 dts파일로 변환해준다.

dtc -I dtb -O dts -o am335x-boneblack.dts am335x-boneblack.dtb
#                    <output file>        <input file>

이제 dts파일을 수정해준다.

phy-mode 를 rgmii-id로 바꿔 내부지연모드로 변경하였다.

그럼이제 dtb파일로 다시 컴파일 해준다.

dtc -I dts -O dtb -o am335x-boneblack.dtb am335x-boneblack.dts

 이렇게 만든 디바이스 트리를 sd카드의 boot부분에 복사해주면 된다.

 

이걸 적용했지만 여전히 기가랜안된다. 하하

 

******************************************

IDE=<your-device-name> //am335x-boneblack

SRC=$IDE.dts

TMP=$IDE.tmp.dts

DST=$IDE.dtb

cpp -nostdinc -I include -undef -x assembler-with-cpp $SRC > $TMP

dtc -O dtb -b 0 -o $DST $TMP rm $TMP

+ Recent posts