지난주에 안드로이드 공개특강에서 유형목(embryo1103)님에게 S5PC100의 NAND Boot 시 BL1 처리 어떻게 하는지 질문 했으나 결국 BL1은 알아서 만들어 써야 한다고 해서 하나 만들었어요.
SD boot 도 결국은 부팅 가능한 SD에서 초기 8KB를 추출해서 사용하면 된다고 하셨는데 재료가 없어서 NAND boot용 BL1만 만들어 봤는데 잘 동작 하네요.
저같은 경우엔 NAND Block0 - 16K를 BL1으로 하고 Block 2~3(256KB)를 Bootloader로 저장해서 BL1이 DRAM에 Bootloader 로딩 한 후에 Program Counter 변경하여 Bootloader 실행되도록 했고 잘 되네요.
양산까진 잘 살펴봐야 하겠지만...뭐 BL1이 하는일이 지극히 간단한 것이므로 크게 문제가 없을 듯 하네요. ㅎㅎ
[간단 설명]
BL0(iROM)은 NAND Boot시 NAND Block 0의 16KB(BL1)을 iRAM에 로딩 후 Program Counter를 iRAM start address로 바꿔 점프합니다.
이때 BL1은 CPU / NAND / Memory(DRAM) init을 간략히 한뒤에 NAND에 저장되어 있는 이미지를 Memory(DRAM)에 로딩 한 뒤에 DRAM으로 점프해서 이후 동작을 하게 됩니다.
중요한 점은 BL1이 iRAM에 16KB로 제한 되어있으므로 최대한 간단한 동작만을 할 것을 조언합니다.
나중에 시간남거나 필요성이 있으면 SD 용 BL1도 하나 준비해 볼까 합니다.
저도 리눅스 시작한지 별로 안되어서 잘모르지만 연락 주시면 도움 드리겠습니다.
[email protected]
Don't worry, be happy.
네.. 테스트는 해놓았는데, 시간이 없어서 릴리즈를 하지 않았습니다.
소스코드 정리해서 곧 릴리즈 하겠습니다. :)