임베디드 시스템이란? 정의 및 개념 총정리 - 도라가이드


호스트 시스템(Host System)

타깃 시스템을 개발하기 위한 개발환경을 제공하는 시스템.

타깃 시스템을 위한 어셈블러, 컴파일러, 링커 등 개발도구 제공

보통 IDE(Integrated Development Environment)형태로 제공.

 

타깃 시스템(Target System)

개발하고자 하는 임베디드 시스템

 


크로스 디벨롭(교차 개발, Cross Development)을 위한 개발 도구

 


1. 교차 컴파일러(cross compiler)

: 호스트 시스템의 프로세서와 운영체제 위에서 동작하면서, 

다른 프로세서 용 오브젝트 코드를 생성할 수 있는 컴파일러


- 교차컴파일러의 예:

- GNU의 GCC

- ARM의 ADS(ARM Devlopment Suit)/ RVDS(RealView Develpment Suit)

- CodeWarrior for ARM


임베디드 시스템 소프트웨어의 개발은 Cross Compiler를 이용함.

(보통 타깃 시스템에서 직접 개발하는 것은 어려움.)

 


2. 링커(Linker)

: 불완전한 오브젝트 파일들을 합쳐 모든 코드와 데이터를 포함한 새로운 오브젝트 파일을 생성해 내는 도구.

크로스 컴파일 후 생성된 오브젝트 파일은 단순히 명령어 코드로 해석만 되어있는 상태, 

문법적으로 해석만 되어있는 상태이다.

프로그래머가 선언한 변수의 메모리 공간이나 참조한 함수의 위치에 대한 정보 등이 결정되지 않은 상태.

링커는 각각의 오브젝트 파일들이 서로 참조하고 연결될 수 있도록 링크시키는 역할을 한다.

 


3. 로케이터(Locator)
: 메모리에서 실행 가능하도록 코드와 데이터를 배치하여 최종 바이너리 이미지를 생성하는 도구.

프로그램의 일부분은 ROM에 있어야 하고, 또 다른 부분은 RAM에 있어야 한다.

소스 코드는 전원이 꺼지더라도 지워지짖 않아야 하기 떄문에 ROM에 있어야 한다.

변수는 값이 변경되어야 하기 떄문에 RAM에 있어야 한다.

- 부팅 시 RAM영역으로 Copy.

- 부트코드에 ROM에서 RAM으로 복사하는 과정이 필요.


Linker Script 파일

: 코드와 데이터의 메모리 배치를 정의한 파일

대부분 링커에 포함되어 있다.


+ Recent posts