강좌 & 팁
제가 테스트 하는 보드는 imx6 cpu를 이용한 보드입니다.
최근의 kernel 에는 imx6 커널이 device tree를 이용한 부팅만 지원하더군요
그래서 device tree를 이용한 uboot 를 이용해서 부팅할때 이전의 부팅과 어떻게 다른지 보겠습니다.
이전에 ATAG를 이용한 커널 파라미터 전달방식을 이용할때
부트로더에서는 커널을 특정 메모리 번지로 복사하고 보통 " 메모리 + 0x100 " 위치에 커널 태그를 복사한후에
커널을 복사한 주소로 점프합니다.
즉...
1. 커널 복사
2. 태그 복사
3. r1 레지스터에 머신 번호를 r2 주소에 atags 주소를 넣는다
4. 커널 복사 위치로 점프
의 과정을 거칩니다.
device tree를 이용하게 되면 달라지는 것은
1. 커널 복사
2. device tree binary 복사
3. r1 레지스터에 머신번호를 r2 주소에 device tree binary(deb) 주소를 넣는다.
4. 커널 복사 위치로 점프
를 하게 됩니다.
결국 달라진 부분은 atags 의 주소와 device tree 주소가 바뀐 것 뿐이군요.
물론 uboot 명령은 전통적인 bootm 점프주소 대신에
bootm 점프주소 - dtb 주소
와 같이 dtb 주소가 필요해 졌습니다.
이전에 atags 는 전통적으로 물리번지 + 0x100 위치를 사용하였는데
dtb 는 크기가 커져서 그 위치에 넣을수가 없습니다.
어쨋든 원하는 위치에 복사하고 r2 레지스터를 이용해서 넘기게 됩니다.
오늘은 여기까지입니다.