본문 바로가기
IT

임베디드, 펌웨어 개발자가 되고싶다면, 임베디드시스템 SW 개발과정

by 제가이버 2020. 10. 24.
반응형

우리가 흔히 쓰는 스마트폰, 네비게이션, IoT 제품들을 구동시키기 위해서는 하드웨어도 준비가 되야하지만, 그것을 작동시킬 소프트웨어가 필요하다.

 

소프트웨어 개발자는 웹 개발자, 앱 개발자, 임베디드 개발자, 펌웨어 개발자, ERP(전사적 자원관리), 보안 개발자등 다양한 분야가 있다.

 

이 중 임베디드/펌웨어 개발자에 대해 알아보자.

 


임베디드 시스템이란 무엇인가? (3편)


 

임베디드 시스템 SW 개발과정


하드웨어가 제작되고 개발 환경이 구축되면, 다음으로 진행되는 과정은 <그림 6>과 같이 소프트웨어 개발 과정이다.
◆ OS 포팅(임베디드 리눅스 포팅)
◆ 디바이스 드라이버 제작

◆ TCP/IP 등 미들웨어 제작
◆ GUI 등 애플리케이션 제작

<그림 6> 임베디드 소프트웨어의 구조

OS 포팅(임베디드 리눅스 포팅)

타겟 보드에 부트로더가 올라가 있으면 이제는 커널을 이식하는 순서이다. 현재 전자밥솥에는 임베디드 리눅스를
포팅을 한다. 포팅에 필요한 내용은 다음과 같다.


우선 리눅스의 정식 버전을 어느 것으로 사용할 것인가 결정한다. 현재 포팅하려고 하는 리눅스 정식 버전은
2.4.18이다. 여기에 ARM 패치를 인가한다. 그리고 PXA255용 패치를 인가한다. 이 두 가지 패치는 일반적으로 공
개되어 있다. 나머지 밥솥용 패치는 개발자가 개발을 하여 패치 처리를 해야 한다. 여기에는 밥솥용 타겟 보드의 특
성에 맞는 리눅스 초기화 코드와 하드웨어에 있는 디바이스 드라이버가 추가된다. 이렇게 해서 개발된 리눅스 커널
은 밥솥을 위한 전용 커널이 된다.

 

디바이스 드라이버 제작

다양한 하드웨어 장치를 구동시키기 위해서 운영체제는 장치 드라이버를 필요로 한다. 임베디드 리눅스는 디바이스
드라이버를 캐릭터, 블럭, 네트워크 디바이스 드라이버로 구분한다. <그림 3>의 임베디드 시스템 하드웨어 구조를
참조하여 디바이스 드라이버를 분리해 보면 다음과 같다.

 

◆ 캐릭터 디바이스 드라이버 : 히터 디바이스 드라이버 제작, 사운드 디바이스 드라이버 제작, LCD 디바이스 드라
이버 제작, 터치 디바이스 드라이버 제작
◆ 블럭 디바이스 드라이버 : 여기서 블럭 디바이스 드라이버는 파일 시스템과 밀접한 관계를 가지고 있다. 밥솥용
임베디드 시스템에서는 파일 시스템을 플래시에 구현하였기 때문에 여기서 필요한 블럭 디바이스 드라이버는 플래
시를 제어하는 디바이스 드라이버이다. 이를 흔히 MTD(Memoty Technology Device)라고 하며 임베디드 시스템에서
는 매우 중요한 개념이다.
◆ 네트워크 디바이스 드라이버 : TCP/IP 제어를 받는 이더넷 디바이스 드라이버를 구현한다.

 

<그림 3> 임베디드 시스템 하드웨어 구조

TCP/IP 등 미들웨어 제작

또한 앞으로의 임베디드 시스템에서는 통신이 기본으로 자리를 잡게 될 것이다. TCP/IP를 기반으로 하는 프로토콜을 사용하여 임베디드 시스템이 다른 기기와 정보를 공유할 수 있다면 다양한 네트워크 서비스를 사용자에게 제공 할 수 있다.

 

GUI 등 애플리케이션 제작

애플리케이션은 크게 다음과 같이 3가지로 볼 수 있다.

◆ 기본 기능 : 밥솥의 본 기능
◆ 부가 기능 1 : TCP/IP를 이용한 통신 기능
◆ 부가 기능 2 : LCD를 이용한 GUI 기능

 

이 시스템의 가장 기본 기능은 밥솥의 기능이다. 이를 하나의 프로세스에 할당하여 애플리케이션을 제작한다. 그리
고 TCP/IP를 통해서 각종 네트워크 기능을 구현한다. 마지막으로 GUI 기능을 제공한다. 임베디드 시스템에서는 대
부분 제한된 크기의 디스플레이를 사용하고 있으며 이러한 장치에서 텍스트, 그래픽 및 영상을 표시하기 위해서는
특별한 GUI 기술이 필요하다. 현재 널리 사용되고 있는 내장형 시스템 GUI 기술들(타이니 X, 피코구이, Qt, 마이크
로윈도우)이 적용되어 텍스트, 그래픽, 영상 등을 사용자에게 제공한다.

 

무엇을 준비해야 할까?

앞서 살펴봤던 것과 같이 우리가 이제껏 알고 있던 그리고 흔히 접해왔던 일반적인 컴퓨터 기반의 하드웨어,
소프트웨어 개발과는 달리 임베디드 시스템의 경우엔 그 개발 환경 구축부터 개발에 이르기까지 여러 가지 상이한
점들이 존재하기 때문에 처음 이를 접하는 개발자들은 다소 혼란스럽고 적응에 실패하기도 한다.


그러나 임베디드 시스템 역시 CPU(프로세서)와 메모리로 되어 있는(어느 특정 목적을 위해 개발된) 조그만 컴퓨터라 생각하고 개발에 임한다면 그리 어렵지만은 않을 거라고 필자는 확신한다. 즉, 임베디드 시스템 개발시
다음의 기본 기술 요소들만 확실하게 닦아 놓는다면 나름대로 쉽게 적응할 수 있지 않을까 싶다.

 

 


 

함께 보면 좋은 글

 

 

PC와 임베디드는 개발환경이 다르다!

프로그래밍은 잘하는데 하드웨어를 잘 몰라도 임베디드 시스템 개발자가 될 수 있을까? 전자공학을 전공했는데 임베디드 시스템 소프트웨어 프로그램을 잘할 수 있을까? 임베디드 

jehyeon-lab.tistory.com

 

 

임베디드 시스템의 변화, 하드웨어의 필요성

임베디드 시스템이란 무엇인가? 우리가 흔히 쓰는 대부분의 기기들은 임베디드로 구성되어 있다. 전기회로에서 단순한 마이컴을 거쳐 부가기능이 있는 임베디드가 사용되기 까지 우리는 개발

jehyeon-lab.tistory.com

 

반응형

댓글