- Boot Code와 Startup Code를 합쳐서 Boot Loader라 칭하며
	- "crt0.s" 라는 assembly file 이 Startup Code이며 Boot Code 또한 여기에 같이 담겨있다.
Booting Procedure
	- Boot Code를 통한 Hardware setting
	- Startup Code 실행 
	- main()함수로 분기하여 program 실행
Boot Code & Startup Code
PC에서 program의 시작점은 어디인가? main()??
main()도 함수인데 누군가에 의해 호출되야 작동이 되지 않겠는가라는 의문.
또한 C program에서 사용하는 stack이나 heap, static memory등은 누가 만들어 주는가?
이러한 과정 즉, 
전원이 들어오고 HW 초기화, 
C program이 작동되기 위한 준비과정을 해주는 코드가 바로 Boot Code와 Startup Code이다.
 1. Boot Code
	1)Entry Point 지정:
	  - entry point는 프로그램의 시작을 알리는 역할을 한다. 즉, 가장 먼저 시작되는 포인트를 정함.
	2)Exception Vector 설정(예외처리벡터)
	  - ARM의 경우, 예외 처리벡터는 보통 ROM의 시작주소인 0x0번지에 위치한다.
	  - 예외 처리 벡터는 예외가 발생했을 때, 예외를 처리하는 코드들이 있는 테이블이다. 
	  - 각 예외에 할당한 메모리는 4byte이므로 명령어 하나로 예외처리를 해야함.
	  - 그래서 벡터에는 실제 핸들러가 있는 위치로 분기하는 분기명령으로 이루어져 있음.
 	3)System clock 설정: system에서 사용되는 clock을 설정한다.
	4)Memory 초기화: system에서 사용되는 ROM이나 RAM등의 메모리에 필요한 설정을 해주는 과정
 2. Startup Code
	1)Interrupt Disable
	2)RW_DATA ROM에서 RAM으로 복사
	3)ZI 영역 Clear
	4)Mode별 Stack생성
	5)Heap생성
	6)Interrupt Enable
	7)main()호출

댓글 없음:
댓글 쓰기