개발자탐구생활

임베디드 개발자란?

|mincoding |2020-04-06 17:11 |48980

임베디드 개발자란?

 

임베디드 개발자는 임베디드 시스템을 개발하는 일을 주로 합니다.

한국의 큰 사업들을 예로 들면, 낸드 메모리에 들어가 있는 Firmware, 기계(자동차) 시스템 제어를 위한

미들웨어, 방산 업체에서의 무기 조작 시스템, 공장을 운영하는 스마트 펙토리 시스템 개발 등이 있습니다.

 



 

임베디드란?

 

임베디드 시스템은 기계나 기타 제어가 필요한 시스템이나, 특정 기능을 수행하는 컴퓨터 시스템입니다.

즉, 기기의 전체 장치의 일부분으로 구성되고 제어가 필요한 시스템을 위한 지휘자 역할을 하는

컴퓨터 시스템입니다. 대표적으로 냉장고의 온도 조절 및 디스플레이 작동과 스마트 티비

내에서 리모컨으로 TV 조작을 수행하고 스마트 티비 플랫폼을 작동시키는 모습을 볼 수 있습니다.

임베디드 시스템은 주로 필요한 기능 & 목적을 수행하는 코드를 메모리에 작성하고 이를 읽어

동작 시키는 방법을 사용합니다. 사실 임베디드라는 단어는 전자 하드웨어와 기계 부분을 포함하는

전체 장치의 일부로 내장되었다는 의미에서 사용되었습니다. 또한 실시간(real-time computing)

계산을 필요로 하는 항공이나 자동차(자율주행) 사업에 있어 제한을 많이 받기 때문에

높은 기술력이 필요로합니다.

 

임베디드 개발자란?

 

위에서 언급한 임베디드 프로그램들을 개발하는 직업군을 말합니다.

 



 

임베디드 개발자는 SW을 개발할때 아래와 같은 프로세스를 거쳐 작업합니다.

 
  1. 기획 & 분석 : 장치에 필요한 SW에 대한 계획과 개발 환경 & 방법등을 결정합니다. 진행하기로한 프로젝트내에서 필요한 환경 (운영체제, 보드, BSP 등의 개발 환경)을 마감기간과 비용을 고려하여 설계합니다.
  2. 설계 : HW 간의 통신을 위한 Driver, 모듈들을 구체화합니다. 앞의 단계에서 적용하기로한 장치들의 호환성이나 유지보수의 기능성을 판별하여 작업을 진행합니다.
  3. 개발 : HW와 운영체제를 시작으로 장치들을 사용할 수 있는 모듈들을 개발합니다. 쉽게 말하면 Device Drive를 개발하고 Data 통신체계를 구축합니다. 이후 장치들간의 데이터에 쓰레기 값이 존재하는지, 혹은 성능이 떨어지지 않는지 검증하면서 개발을 마무리합니다.
  4. 유지보수 : 개발이 끝나도 끝난게 아닙니다. 계속해서 발생하는 장치간의 오류를 잡아내야 합니다. 또한 회사에서 혹은 팀내에서 요구하는 성능을  올리기 위해 유지보수를 합니다. HW에 삽입되는 새로운 장치가 있을 수도 있지만 그보다, 새로 발생하는 예외나 변수에 대한 방책을 만들어 개선해 나갑니다.
 

High Level의 개발 (Server, Client, 시스템 등)에서 예외사항은 큰 문제가 될 수 있습니다.

하지만 Low level 개발단에서의 예외사항은 제품의 신뢰도와, 매출과도 큰 영향을 끼칩니다.

예를들어 자동차 내의 컨트롤러 FW 같은 경우, 급발진, 급제동과 같은 문제들이 발생하면 전량

리콜과 같은 사항 뿐만아니라 인명피해까지 감수해야하기 때문에 책임감이 크게 필요로 하기도 합니다.

임베디드 시스템 개발자라면, 세부분야에 대해 모든 지식을 공부해야하지만 업무별로

나누면 세부 분야는 다음과 같습니다.

 

임베디드 개발 분야

 

1. Firmware 개발

SW의 처리 순서를 ROM에 고정시켜, HW를 이용하는 구조를 가진 프로그램을 개발합니다.

펌웨어란 특정 HW 장치에 고정시킨 SW를 통해 HW를 읽어들여 실행하거나 수정하는 것도

가능한 프로그램을 말합니다.

 

2. Kernel 개발

Linux 혹은 Unix 시스템의 Kernel Porting 개발합니다. 회사에서 생산하는 제품에서 조건에 맞게

커널의 기능을 수행하고, 설계된 동작들을 사용할 수 있도록 커널을 포팅하는 일을 합니다.

또한 제품 뿐만 아니라 각  HW 장치간의 통신을 위해 Device Driver 를 개발하는 일을 합니다.

 

3. 시스템 & 플렛폼 개발

Data & Cloud 시스템 사업이 커지면서, 임베디드 개발자에 대한 수요가 늘고 있습니다.

임베디드 개발자는 Data Center 혹은 기업에서 기억장치 제어를 위한 SW 개발을 주로 합니다.

예를 들어, 시스템과 연결되어 있는 물리적 Flash Memory 내에 Data가 처리되는 과정 혹은 Network

통신을 위해 Driver 단의 모듈을 개발하기도 합니다.

 

임베디드 개발자가 사용하는 프로그래밍 언어는?

 

주로 C언어를 사용합니다. 하드웨어 제어를 위한 처리가 가장 단순하게 이뤄질 수 있기 때문입니다.

또한, 다른 언어들은 데이터의 수용량이 적은 칩에 내장되기 어렵기 때문에 보통은 C언어로

필요한 많은 부분까지 직접 코드로 작성하여 개발할때 사용합니다.

반면에, 삼성전자 같은 경우 임베디드 시스템 개발시에 C++를 사용하고 있다고 들었지만

그는 객체지향을 위한 도구일 뿐이며 필요한 부분들은 라이브러리를 사용하지 않고

C++로 직접 구현하서 개발할때 활용한다고 합니다.

 

임베디드 개발자가 일하는 분야의 예시

임베디드 개발자가 일할 수 있는 분야는 우주&항공/국방/자동차/메모리/전자기기 등이 있습니다.

여러 대기업 뿐만아니라 나라에 꼭 필요한 일들을 하는 공기업에서도 임베디드 개발자를 채용하고 있습니다.

 

1 : 현대자동차



전자제어 S/W : 자동차 각 부품 제어 및 RTOS 시스템 개발

지능형차 S/W : 인공지능 시스템 / ADAS / 음성인식 시스템 개발

차량IT S/W : 차량 부품 / 동작 모니터링 및 제어 시스템 개발

 

2 : 한화디펜스



발사체계 S/W : 발사대 제어, 벌사대 성능시험 SW 개발

국방로봇 S/W : 자율주행 / 물체탐지 / 추적 SW 개발

에너지 S/W : 베터리 및 에너지 관리 SW 개발

제어장치 S/W : 전투장치 통제장치 / 양산장비 사격통제 장치 SW 개발

 

3 : 삼성 



Firmware 개발 : 메모리 Firmware 개발 / 검증 툴 개발 / OS System 개발

Smart Factory 개발 : 공장 제어 및 모니터링 SW 개발

HW 제어 Firmware 개발 : 다양한 가전기기내의 SW 개발

프레임 워크 및 OS 개발 : 스마트 기기내의 프레임워크 및 Operating System (Tizen/Android) 개발

 

4 : 한국항공우주산업



비행체 시스템 SW 개발 / 항공전자 시스템 개발 / 항공 HW 제어 SW 개발

 

5 : LIG 넥스원



레이다 임베디드 SW 개발 : 레이다 신호처리, 표적 추적 SW 개발

레이다 신호처리 / 통제제어 SW 개발 : 신호처리, 제어 관련 SW 개발

 

6 : 한화테크윈



임베디드 리눅스 개발 : 리눅스 환경 BSP 개발, 리눅스 Cloud 서비스 연동, 형상/빌드 관리

영상저장장치 SW 개발 : 대용량 미디어 저장관리