요약 : WinCE 개발 절차 중 첫번째 단계인 부트로더 포팅 부분을 분석한다.
(두번째 단계는 OAL포팅)
ARM 기반 WinCE 포팅된 시스템을 startup.s 부터 시작해서 low level -> kernel 까지 분석
ARM9TDMI, WINCE5.0core, DDR ram, NAND flash, UDMA HDD, 800x480 4.3 LCD, ,,,
NOR 장착 시스템
해당 위치에서 직접 실행이 가능
- 부트로더가 nk.nb0를 불러 ROM에서 실행 가능
- eboot.nb0 + nk.nb0 형태
NAND 장착 시스텝
해당 위치에서 직접 실행이 불가능
* 부트로더가 올려졌을 때 file이 쪼개져서 올라갈 수 있음.
- loader.bin (여러 이름) + eboot.nb0 + nk.nb0 형태나
- loader.bin + nk.bin 형태
...........................................................................
XIP 지원 시스템
부트로더 = EBOOT
NAND Flash Booting 지원 시스템
부트로더 = ILP + SPL
ILP(Initial Program Loader)
- 2KB 내외의 작은 프로그램
- NAND Flash의 특정영역에 저장되어 있는 EBOOT Code를 DRAM에 Load시켜 RUN하는 역할
SPL(Secondary Program Loader)
- EBOOT와 동일
XIP(eXcute In Place)
- ROM에서 실행
- RAM으로 NK.bin을 복사하지 않음
- RAM 용량 절약이 가능
.............................................................................
nk.nb0 - ROM 실행파일 형태
bin 파일
- 헤더를 비롯한 여러가지 섹션을 갖고 있는 이미지
nb0 파일
- plain binary (memory dump를 해서 얻어지는 nb0)
참고로
NK.bin은
Sync bytes(7bytes) + Image address(4bytes) + Image length(4bytes) + Record Address(4bytes) + Record length(4bytes) + Record checksum(4bytes)
nb0 는
첫 4kb 는 ResetHandler에 해당하는 Instruction code
그리고, 설정한 크기대로 생성 되면서 이외의 뒷부분은 0으로 채운다.
..............................................................................
startup.s파일에서 주요 수정 부분 / 기존 작성된 BSP 수정시~
1. sdram에 관한 클럭 및 뱅크에 해당하는 용량 부분
2. 부트로더에 대한 변경 사항 내용 (boot.bib와 같이 수정)
...............................................................................
RTC 초기화 문제 부분 수정 point
- platform/common/src/arm/samsung/s3c2440a/rtc의 rtc.c에서 OALIoCtlHalInitRTC함수에서
rc = OEMSetRealTime(pTime);