본문 바로가기
Embedded System/소프트웨어 (C,C++)

임베디드 C언어/ 툴체인 개념

by MachineJW 2023. 1. 31.

임베디드는  H/W, F/W로 나눌 수 있으며

H/W의 경우 시스템을 구성하기위한 회로설계와 PCB를 개발하는 영역이고

F/W는 시스템의 핵심적인 MCU(마이크로컨트롤러유닛)에 프로그래밍하여 시스템을 가동하기위한 프로그래밍 영역이다. (이 경우 아두이노를 생각하면 쉬움)

그리고 마이크로프로세서(우리가 흔히 말하는 CPU)를 사용한 F/W는 보통 리눅스 환경의 OS를 설치 하고 기반하여 만든다. (이 경우는 라즈베리파이에 속한다.)

 

오늘은 임베디드의 F/W 개발에서 C언어와 임베디드의 개념에 대해서 기본적으로 정리해보려고 한다.

C언어의 특징

- 시스템 프로그래밍이 가능

운영체제(OS)를 개발하는 목적으로 만든 언어이기 때문에, 하드웨어를 제어하는 시스템 프로그래밍이 가능하다.

벌써부터  C언어가 임베디드에서 왜 쓰이는지 감이 잡힌다. 

- 이식성을 갖춘 프로그램을 만들 수 있다.

기종이 다른 컴퓨터에서도 사용가능한 프로그램이다. C언어 컴파일러는 표준화가 잘 되어 있어 다른 하드웨어에서도 사용이 가능하다.

- 함수를 사용한 개별 프로그래밍

함수 지향의 프로그래밍이 가능하다는 이야기이다.

ToolChain ( 툴체인 )

프로그램을 만들기 위해서는 소스 파일(Source file)이 필요하다.

소스파일은 C언어로 작성한 문서라고 이해하면 된다.

소스파일을 컴퓨터가 이해할수 있는 기계어로 바꾸는 과정이 컴파일(Compile)이다.

개인용PC의 경우에는 C소스파일을 비주얼스튜디오에서 바로 컴파일하여 프로그램을 만들 수 있다.

그러나 임베디드는 그런 개념이 아니다. 컴퓨터(개인용PC)에서 작성된 소스파일을 컴파일하여 다른 시스템(임베디드 MCU)에 기계어를 통신(UART,SPI 등)을 통하여 프로그램을 만든다. 결국 실제 프로그램은 다른 시스템에서 생기는 것이다. 이러한 과정을 '교차컴파일'이라고 하며 '교차컴파일'을 하기위한 PC의 개발환경을 '툴체인' 이라고 한다.

임베디드에서 툴체인 예시

- 전처리 :  C언어에서 제공되는 전처리 지시자에 따라서 소스파일을 가공

- 컴파일 :  전처리가 끝난 파일을 컴파일, 하드웨어(여기서 말하는 하드웨어는 CPU, MCU를 뜻함)가 이해할 수 있는 기계어로 번역, 이때 번연된 파일의 확장자는 obj 

- 링크 :  obj파일에 startup code를 결합. (임베디드 MCU에서 실행하기 전에 필요한 준비작업을 수행) main 함수를 호출하여 프로그램의 코드가 실행되도록 함.

- 라이브러리 : 툴체인은 MCU를 제조한 회사에서 제공할 수 있다. ESP32의 경우는 WiFi,블루투스와 임베디드 기능등을 편리하게 프로그래밍 할 수 있도록 라이브러리가 제공된다. 개발을 위해서 다른 툴체인에서 별도의 라이브러리를 가져와야하는 경우도 있다.