====== BLOB 분석 - SA1100 ====== 조금 늦은 감은 있지만, BLOB 라는 부트로더에 대해서 간략히(?) 분석해 볼 것이다. 여기서는 SA-1100 을 기준으로 설명한다. ====== 초기화 ====== | 함수 이름 | 설명 | | Start-ld-script | 각 섹션의 정의, 엔트리 포인트 설정(_Start) | | _Start -> reset | 모든 인터럽트 마스킹, 클럭설정(속도) | | _Start -> memsetup | 초기 메모리 설정(타이밍, 시그널 설정등) | | _Start -> ledinit | LED 초기화(GPIO) | | _Start -> sleepmode | 슬립모드라면 깨어나서 연산을 계속 수행한다 | | _Start -> normal_boot | I-cache 를 Enable 하고, 1Mbyte R/W 테스트 | | _Start -> copy_loop | 처음 1024KB 를 SKIP 하고 이후에 blob 를 메모리에 복사한다. 복사가 끝나면 PC 를 blob 가 시작되는 곳으로 옮겨서 실행이 계속되도록 한다 | | trampoline.s -> b main | C 프로그램 시작, 이후 serial 초기화 -> timer 동작 -> 시스템 메모리맵을 구한 후 blob 의 상태 초기화 | 커널과 RAM disk 를 Flash 로 읽어서 RAM 으로 가져다두게 되고 사용자의 입력을 기다림 ---- {{indexmenu>:#1|skipns=/^(wiki|etc|diary|playground)$/ skipfile=/^(todays|about|guestbook)$/ nsort rsort}} ----