▶ ARM _ cstartup.S 알아보기
ldr = load register pc라는 load register에 _low_level_init 를 넣어라 -PC(program count) |
-함수가 컴파일 하면 기계어로 바뀜. -올리는 작업(로딩) -기계어로 바뀐 함수의 시작주소를 CPU에 옮기는 작업(실행) -CPU의 PC(IP:명령있는 포인터) -EIP라고 한다. 인텔 32bit에서는 확장되어 이름이 Extention 이 붙음. 0.142번째줄에서 실행 1.reset-0번지로 보냄 2.reset handler 호출 3.low_level_init 4. _lp_ll_init 5. lowlevel_init 함수 실행 (LCD.c 에 있음, 전반적인 실행을 끌어올려줌) ... 순차적으로 실행해나감 |
▶ Lowlevel.c에서 35재 줄 ==발진기를 더 높게 올려주는 함수 |
-67: 점프 branch, 코드는 여기 없음 다른 곳에 있음. -벡터 테이블: 점프할 수 있는 위치를 모아놓고 저장해 놓은 곳. ▶ _exception_vectors ( 예외 벡터 ) 오류구문이나 리셋 등등의 일때 호출하는 부분 |
위의 사진은 링커가 쓰는 소스 elf32 -링커가 사용 링커- 실제 실행파일과 플래시를 만들어 주는 곳 elf-파일포맷-파일을 어떤 모양으로 저장할지.... -파일 포맷은 운영체제마다 틀리다. -littlearm 에서 little은 리틀방식을 얘기한다. ARCH(arm) ENTRY point(진입점) -내가 만든 프로그램에서 제일 처음 실행 ex)main 함수 ENTRY(여기다 적는 것을 여기로 가져와라) section-메모리의 5가지 code영역을 다른 말로 text라고도 함. Heap 과 stack 영역표기가 없는 이유는 링커는 실행하기전에만 필요하므로 Heap, stack 은 필요없음. ▶ makefile 은 컴파일할때 쓰임. ▶ cstartup.S 은 실행할때 쓰임. ▶ elf32-littlearm.lds 는 실행하기전에 씀. |
'AT91SAM7S256' 카테고리의 다른 글
2013.04.25_깨알팁_폰트테이블_ (0) | 2013.04.25 |
---|---|
2013.04.25_타이밍도이용딜레이최적화_문자열출력하기_ (0) | 2013.04.25 |
2013.04.22_makefile읽어보기 (0) | 2013.04.22 |
2013.04.19_지금까지의 과정정리 (0) | 2013.04.19 |
2013.04.18_Instruction SET 설정하기 (0) | 2013.04.18 |