>pxa320 보드를 사용한데..

>부트로더 의 mobm 의 역할이 정확이 이해가 안가네여...

>질문 올립니다.



mobm 자체가 뭘 말하는지는 모르겠지만

답변 달아주신 분들의 말씀을 종합해보면 한가지로 집중되는군요...

 

바로 NAND Boot Loader입니다.

 

왜 이게 필요하냐! NAND는 실행할 수 없는 메모리 이기 때문입니다.

뭔말이고 하니, NAND로 부팅하려면 NAND에 PC(프로그램 카운터)를 보내야 된다는 말인데

NAND라는건 주소와 데이터버스로 이루어진 디바이스가 아니거든요-_-;;;

그래서 "주소" 라는 개념이 없고 "블럭/페이지"의 개념이 있습니다.

 

그래서 어떻게 하느냐...

NAND의 특정블럭(대부분 0번 블럭)부터 "일정량만큼"

내부DRAM이나 외부 SDRAM/DDRRAM 등에 복사를 한 후 (H/W적으로 하는겁니다)

그 코드를 RAM에서 수행하는 겁니다.

 

mobm이라는게 바로 이 "H/W적인 로직" 을 말하는 것인지

아니면 그렇게 들어갈 "코드" 를 말하는 것인지는 잘 모르겠네요.

이부분은 다른 분들이 답변 달아주실테고

 

하튼, 그럼 "일정량 만큼" 복사를 하게 되므로 용량 제한이 굉장히 강해집니다.

아무리 커도 Small block NAND의 경우에는 16KB

Large block NAND의 경우에는 64KB 를 넘지 못하게 되는거죠

(블럭을 넘어서 읽지는 않을껍니다. 0번 블럭은 Bad로부터 자유로운 블럭이지만 나머지는 아니니까요)

그러다보니 160KB에 육박하는 부트로더를 통채로 0번 블럭에 넣을 수는 없는겁니다.

아마 리눅스의 부트로더도 마찬가지겠지요

 

그래서 필요한게 NAND Boot Loader입니다.

이녀석의 역할은 딱 하나입니다

(물론 부가기능 몇가지 넣은 부트로더들도 있지만... 이론적으로...)

뭐냐! 바로 "진짜부트로더"를 NAND에서 읽어다가 SDRAM에 적재시키고 실행하는 겁니다.

물론 이를 위해서는 SDRAM을 초기화 하고 몇몇 H/W도 초기화 시켜야겠죠

그리고 "진짜부트로더"를 "업데이트" 하는 알고리즘도 들어가 있어야 할테구요

 

하여튼, 이런 "기본적인" 기능만 넣으면 수KB에도 구현이 가능합니다.

이것을 NAND Boot Loader라고 합니다.

용어는 매우 많습니다.

Loader, Boot, NBoot, stbloader 등등...

CPU벤더마다 부르는 방법이 거의 다 다르다고 보시면 됩니다.

하지만 하는 일은 딱 하나죠.



원문 : http://cafe.naver.com/wincepro/11557

'Embedded > Softwares' 카테고리의 다른 글

유용한 ARM 어셈블리 분기 명령어  (0) 2010.05.05
모듈명령, diff, patch  (0) 2009.06.08
minicom  (0) 2009.06.03
Code V  (0) 2009.05.25
ADS (ARM Developer Suite (v 1.2)소프트웨어  (0) 2009.05.25

WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,