1. Entry.S

Entry.S .S 어셈블리어 소스코드를 의미하며 power on되고 가장먼저 실행하는 소스코드이다.

임베디드 OS 구현하기위해서는 어셈블리어도 사용하지만 .c파일 c언어도 많이 사용한다 하지만 c 사용하기 위해서는 기본적으로 stack 임베디드 기본 exception handler 메모리가 모두 설계되고 set되어야 한다.

 

때문에 가장 처음 시작되는 소스코드는 c가아닌 어셈블리어로 작성하며 해당 코드에서 메모리 set 작업을 진행한다.

 

 

2. Exception handler

기본적으로 임베디드에서 사용하는 Exception handler 6개가 존재한다.

UND, ABT, FIQ, IRQ, SVC, USRSYS 6개의 모드가 존재하고 각각의 모드를 담당하는 Memory 크기를 설계하고 메모리 start위치, stack 쓰기 때문에 메모리 Stack TOP 주소를 미리 설계하고 정의해야한다.

 

위의 START, SIZE, TOP 값은 Entry.S에서 정의해도되고 gcc컴파일러를 사용한다는 가정하에 .h 헤더파일을 사용해도 된다.

중요한 것은 각각읨 모드에 대한 stack pointer(sp) 지정해주는 작업을 Entry.S에서 해줌으로써 메모리 set작업을 해야한다는 것이다.

<STACK은 sp를 기준으로 메모리를 운용하기 때문에 실질적으로 STACK_TOP부분을 sp로 설정해줌으로써 메모리 set작업을 할 수 있다.>

 

위와 같이 기본적으로 임베디드에서 무조건 사용하는 6개의 모드에 대하여 메모리 주소의 시작 주소, size, TOP(스택이기 때문에 반대로 쌓여서 메모리 쌓는 시작 지점을 sp 정해줘야 ) 직접 정해야 한다.

 

위와 같이 메모리 설정이 모두 어셈블리어에서 완료된 이후에는 .c파일을 사용이 가능하며

.c파일을 사용하기 위해서는 SYS모드 상태로 c언어 도입부인 main 연결시켜서 사용할 있다.

 

  • ref

https://kjt9109.tistory.com/entry/%EC%9E%84%EB%B2%A0%EB%94%94%EB%93%9C-OS-%EA%B0%9C%EB%B0%9C-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-4

 

임베디드 OS 만들기

+ Recent posts