반응형
5. 임베디드 개발환경
Tool - Chain ?
리눅스에는 “gcc” 라는 C 컴파일러가 있다. 리눅스에서 gcc 컴파일러로 컴파일할 때 별도의 출력 파일 이름을 지정하지 않으면 a.out이라는 이름으로 생성된다. 생성된 파일은 “실행 가능한 ELF 파일” 타입으로 되어 있다. 즉, UNIX나 Linux에서 gcc로 컴파일하면 무조건 ELF 파일이 생성된다.
컴파일 과정(Compile)
- 텍스트로 되어 있는 소스 코드 파일을 이진 바이너리(Binary) 코드로 변환하는 과정.
- 가장 먼저 실제 컴파일을 진행하기 전에 소스 코드 상에
"#"
(전처리기, Preprocessor)으로 처리되어 있는 부분들을 먼저 처리한다. - 이후에 처리가 끝나면 C 문법 검사를 하게 된다. 오류가 없다면 이진 바이너리 코드로 변환을 하게 되고 이 때 생성되는 파일이
ELF
타입이다.Relocatable ELF
: 스스로 실행이 불가능한 바이너리 파일로 누군가 실행을 시켜줘야 되는( = 그래서 메모리에 올라가는(loading) 주소가 재배치(relocatable)되는) 파일.Executable ELF
: 자기 스스로 실행 가능한 파일.(ex. PC Windows 상에서의 "Hello.exe")
링킹 과정(Linking)
컴파일 과정을 통해 생성된
Relocatable ELF
파일로는 실행될 수 없으니, 실행되기 위해 필요한 정보들이 여기에 추가되어야 한다는 점. 이 추가 과정을 링킹이라 한다.링커(Linker)
- 링킹 과정에서 자동적으로 정보를 제공
- 프로그램이 실행되기 위해서 최소한으로 필요한 메모리 용량까지 알아서 계산해 해당 정보를 CPU 정보와 함게 "어딘가"에 저장 시켜준다.
로더(Loader)
- 프로그램이 실행될 때 OS에서 사용자 응용 프로그램을 실행시켜 주며, "어딘가"에서 CPU, 메모리 등의 정보를 읽어서 프로그램이 요구한 메모리 용량을 할당 받아 메모리 적재(Loading) 시켜준다.
"어딘가"
는ELF Header
이다. *ELF = ELF Header + ELF Body***
Firmware, RTOS, Non-RTOS?
Tool-chain 종류는 매우 다양하다.
Linux에서는 gcc, glibc, binutils (오픈 소스) / Windows에서는 Visual Studio (상용화된 제품)
임베디드 리눅스가 올라가는 CPU인 32비트 ARM 프로세서의 경우 ARM Core 로직(logic)을 개발한 ARM사에서 개발 및 판매하고 있는 RVDS(RealView Development Suite) 제품 사용(상용)
- Tool-Chain 중 어떤 기준으로 선택해야 하는가?
- 대기업이나 국가 연구소처럼 한 업체(혹은 기관)에서 다루어야 할 CPU 종류가 많을 때에는
- 상용 Tool-Chain 제품을 선택하는 게 좋다. 다양한 Tool-Chain 만큼 알아야 할 것(헤더 파일, 함수 매크로)이 많아 생산성이 떨어진다.
- CPU 제조사에서 개발한 Tool-Chain 이 있다면 해당하는 Tool-Chain을 선택하는 게 좋다.
- 기술 지원이 반드시 필요한 경우에는 가급적 상용 Tool-Chain 을 사용하는 것이 좋다.
- 공개용 Tool-Chain의 장점은 별도의 구매 비용이 발생하지 않는다. 그로 인해 별도의 기술 지원 역시 받을 수 없다.
- 특별한 기준이 없을 때는 가급적 사용자가 많이 선택한 Tool-Chain을 사용하라.
- 대기업이나 국가 연구소처럼 한 업체(혹은 기관)에서 다루어야 할 CPU 종류가 많을 때에는
반응형
'임베디드 > [ Embedded ]' 카테고리의 다른 글
[ Embedded ] 23. HAL(하드웨어 추상화 계층) (1) | 2020.12.02 |
---|---|
[ Embedded ] 22. 임베디드 리눅스 구성요소(BSP) (0) | 2020.10.30 |
[ Embedded ] 20. 임베디드 시스템의 개요와 이해 (0) | 2020.10.29 |
[ Embedded ] 19. 임베디드 OS(운영체제) (0) | 2020.10.29 |
[ Embedded ] 18. 마이크로 프로세서란? (0) | 2020.10.29 |