기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.
안녕하세요..
보드가 동작하질 않으니 결국엔 로우레벨로 점차 파고들어가고 있네요..
IRAM은 사이즈가 커진 Stepping Stone이라 생각되고,
IROM은 개량된 이전 버전의 NAND 부트로더라고 생각되는데요.
데이터쉬트를 보다보니 IROM과 IRAM의 메모리 맵 구성이 애매하게 나와있네요.
궁금한 점들을 적어봅니다.
(아시는 부분에 대해서라도 답변 주세요.)
1. IROM 코드 섹션의 설명을 참고하면 NAND 부팅시 Integrity체크 이후 0x34010으로 점프한다고 되어있습니다.
제가 WinCE 6.0에서 StepLoader를 컴파일해서 nb0 파일을 열어보면..
맨앞 16Byte에 [00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00]이 들어가 있습니다.
이솝 사이트에서 받은 uBoot의 경우엔..
이렇게 구성되어있지 않고 Eboot 처럼 바로 점프 코드부터 나오는데요..
(그래서 Download & Run을 하면 실행이 되는 것 같은데..
그마저도 제 보드에서는 uBoot 실행 중에 다운이 됩니다.)
uBoot든 Steploader든 NAND 부트를 이용하는건 같으니 구조가 같아야하지 않나요?
아님 uBoot가 NAND 라이트용과 실행용이 따로 있나요? (그럴 것같진 않은데..)
2. Secure 부팅은 어떻게 설정하는 건가요? 내부 롬에 설정 값이 저장이 되어있는건가요?
부팅시에 적용되려면 CPU 내부에 저장되어 있거나 외부 핀으로 조정하는 수밖에 없는 것 같은데..
외부 핀으로 조정하는건 Secure 부트라고 보기 어려우니 내부 롬에 저장되어 있는 것이 맞을 것같은데..
Secure 부트가 동작하기 위한 조건이 어떻게 되는지 아시는 분 있으시면 알려주시기 바랍니다.
(Startup.s에 TZ레지스터 몇개 설정하는게 있긴 한데 혹시 이게 맞나요?)
=============================================================================================
1.2 MEMORY MAP
(S5PC100_USER'S_MANUAL.pdf, 17p)
Start Addr |
Limit Addr |
Size |
Usage |
Note |
0x0000_0000 |
0x0000_8000 |
32KB |
IROM |
|
0x0002_0000 |
0x0003_8000 |
96KB |
IRAM |
Mirrored Region of 0xD000_0000~0xD003_8000 |
0x2000_0000 |
0x6000_0000 |
1GB |
DRAM |
Start Addr |
Limit Addr |
Size |
Usage |
0x0002_0000 |
0x0002_1000 |
4KB |
IROM’s Stack |
0x0002_1000 |
0x0002_4000 |
12KB | User specific purpose |
0x0002_4000 |
0x0003_4000 |
64KB |
Secure Domain Manager |
0x0003_4000 |
0x0003_8000 |
16KB |
BL1 |
=============================================================================================
2.1 IROM CODE
(S5PC100_USER'S_MANUAL.pdf, 46p)
2.2 FUNCTIONAL SEQUENCE
Full booting sequence in BL0 is as follows,
1. Initialize the PLL & Clock setting with fixed value
2. Initialize the stack and heap region.
3. Initialize the Instruction Cache controller.
4. Load BL1 from the booting device to iRAM.*
5. If secure booting is enabled, execute integrity check.
6. If integrity check passes, then jump to 0x34010. (First 4words are reserved.)
7. If integrity check fails, then it stops.
* NOTE. In case of SD/MMC, iROM code loads 9KB at 0x34000 from the end of the booting device.
* NOTE. In case of OneNAND and NAND, iROM code loads 16KB at 0x34000 from the beginning (Block 0) of the
booting device.
* NOTE. Bad block information is in the 6th byte of the spare area in case of 512 byte page NAND devices. And
the other NAND devices have bad block information in the first byte of the spare area.
정상동작하는 저희 stepldr.nb0 앞 부분입니다. 저도 앞부분은 님과 같습니다.
0020 0000 0000 0000 0000 0000 0000 0000
0600 00EA FEFF FFEA FEFF FFEA FEFF FFEA
FEFF FFEA FEFF FFEA FEFF FFEA FEFF FFEA
0000 A0E3 150F 07EE 560F 07EE 100F 11EE
010A 80E3 100F 01EE 9001 9FE5 920F 0FEE
혹시나 해서 그러는데요, 부팅 모드는 NAND 부팅 모드로 설정되어 있겠죠?
저희 장비에서 정상 동작하는 stepldr.nb0 첨부합니다....