Boot Code
Boot Loader Code |
▷ PC ( 다음 진행 명령어 ) 안에 다음 Label ( reset_handler ) 를 저장 ▼▼▼ ▷ LDMIA A, B , A 에 있는 레지스터 갯수 만큼 읽어 B 에 순차적으로 저장 ▷ ESP 를 TOP_OF_MEMORY 로 옮겨서 STACK 영역을 확보 ▼▼▼ ▷ r2 레지스터 안에 있는 레지스터들 ▼▼▼ ▷ r0 ( lowlevel_init 함수) ▷ Makefile ▷ sram 의 영역을 설정해준다. 스펙에 MemoryMap 확인을해보면 ▼▼▼ ▷ r0 = 1 > r2 = _lp_remap (Label) > r0 = &r2 ▷ Remap Command 전에는 Internal Memory Area 0 에 Flash 실행가능명령이 포함되어있다. ▷ Remap Command : MC_RCR 레지스터를 Set 시키면 Internal Memory Map Area 0 에서 SRAM 영역으로 접근이 가능해진다. <AT91SAM7S256.h 참조> ▼▼▼ ▷ STACK 에 Abort interrupt/Interrupt 영역 확보 ▷ msr instruction 을 통해서만 ~PSR Register 에 접근이 가능하고, 영역을 지정해줄수 있다. 주석참조 ▼▼▼ 실행파일은 ARM의 경우에 CODE/DATA/BSS/STACK 이 존재 ▷ 위의 소스를 그림으로 나타내면, DATA 와 BSS 영역의 변수들을 SRAM 에 있는 STACK 영역에 모두 복사해준다. ▷ Source 로 보면 elf32-littlearm.lds 에 보면 영역별로 SECTIONS 이 나뉘어져있음 ▼▼▼ ▷ main.c 로 점~프 ※ Litteral pools( Label 주소 ) |
▷ 파일 (2)_ARM 리버스 엔지니어링(신정훈)_참고자료.pdf |
'Cortex-M3' 카테고리의 다른 글
2013.10.23 _ ARM Cotex-M3 _ LCD 글자 띄우기 (0) | 2013.10.23 |
---|---|
2013.10.16_컴파일 및 프로그램 로드 방법 by 유진 (0) | 2013.10.16 |
20131008_ Cortex-M3 컴파일 및 다운로드 to 디바이스 (0) | 2013.10.08 |