[마우저=마크 패트릭(Mark Patrick)] 이 글에서는 임베디드 시스템 개발이 어떻게 변화하고 진화해 왔는지 살펴본다. 임베디드 개발은 지난 30년에 걸쳐서 변화를 거듭해 왔다. 코딩, 컴파일링, 디버깅에 사용되는 소프트웨어 툴체인 역시도 계속해서 진화해 왔다.

하드웨어 기능이 갈수록 정교해지고, 점점 더 많은 기능을 통합하고, 저전력, 커넥티비티, 보안에 대한 요구가 높아짐에 따라서 보드 지원 패키지, 드라이버, 라이브러리 같은 것들이 툴체인으로 추가됐다.

임베디드 개발의 진화

불과 몇 년 전까지만 하더라도 대부분의 임베디드 시스템이 커넥티비티를 포함하지 않았다. 보안도 마찬가지였다. 임베디드 개발의 주된 목적은 산업용 보일러 컨트롤러나 가정용 세탁기 같은 기기를 제어하는 것이다.

많은 임베디드 개발자들이 베어 메탈 기계어 코드를 사용해서 마이크로컨트롤러를 프로그램 하는 것을 배웠다. 옵코드를 사용한 프로그래밍은 시간이 많이 걸리고, 골치 아프고 따분했다. 다행히 다음 단계의 진화로서 어셈블리 언어를 사용해서 초기 개발자들의 부담을 덜게 됐으며, C 같은 고수준 언어로 나아가기 위한 발판을 마련했다.

C는 1980년대 초에 유닉스 운영 체제 용으로 개발됐으며 유닉스 운영 체제와 동의어로 취급됐다. 저수준에서 효율적으로 메모리 자원에 접근하고 토대 프로세서의 기계어 명령으로 맵핑하도록 설계된 이 언어가 자연스럽게 임베디드 시스템으로 널리 도입됐다.

SI 회사들이 자사 마이크로컨트롤러(MCU)와 마이크로프로세서(MPU)를 더 많이 채택되도록 하기 위해서 통합 개발 환경(IDE) 툴체인을 개발하기 시작했다. 오픈 에코시스템 개념은 존재하지 않았으며, 대다수 개발자들이 자체적으로 라이브러리와 기능 셋을 빌드하고 유지관리 했다. 마찬가지로 각기 업체들이 자체적인 명령어 셋 아키텍처를 사용했으며, 자사 제품과 함께 사용하도록 자체적인 드라이버, 라이브러리, 여타 IP를 판매했다. 

임베디드 개발, 어떻게 오늘에 이르고 있는가

오늘날 초보 엔지니어가 경력을 시작하기 위해서 뛰어드는 세상은 달라졌다. 가장 크게 변화된 점은 임베디드 개발 업계가 서로 문을 개방하고 있다는 것이다. 많은 SI  회사들이 갈수록 치열한 경쟁 속에서 자체적인 고유 아키텍처를 개발하고 선전하고 지원하기 위한 비용을 버거워하던 참에 Arm의 라이선스 기반 아키텍처가 등장했다.

지난 몇 년 사이에 많은 주요 마이크로컨트롤러(MCU)와 마이크로프로세서(MPU) 회사들이 자체 아키텍처 제품을 줄이고 Arm 기반 제품 라인업을 늘려왔다. Arm 코어 접근법은 갈수록 확대되는 Arm 아키텍처와 Arm의 연구개발(R&D) 투자를 활용할 수 있었다. 이들 업체들은 이제 커넥티비티 블록, 무선 트랜시버, 전원 관리, 아날로그 기능 같은 주변장치 기능을 추가하는 것으로서 자사 제품을 차별화하고자 한다.

Arm으로 옮겨감으로써 업체마다 자체적인 IDE를 개발하던 것에서 변화와 제3의 소프트웨어 회사들이 등장하게 됐다. 벤더 IDE는 지금도 존재하고 있으며, 어떤 회사들은 발빠르게 IDE 스타트업을 인수함으로써 역량을 키워 나갔다.

개발자들이 갈수록 더 복잡하고 다양한 하드웨어 디바이스와 기능 셋을 다루어야 하는 짐을 덜어주기 위해서 SI 회사들이 포괄적인 보드 지원 패키지와 소프트웨어 자원을 제공하기 위해서 투자하고 있다. 이러한 예로서 저수준 하드웨어 기능을 편리하고 단순한 고수준 함수 호출로 추상화하는 오픈 소스 라이브러리와 펌웨어를 들 수 있다

아두이노와 비글본이나 라즈베리 파이 같은 단일 보드 컴퓨터(SBC)가 등장함으로써 오픈 소스 개발 시대가 열렸다. 이들 보드가 등장함으로써 하드웨어와 소프트웨어 회사들이 참여한 에코시스템 커뮤니티가 형성했으며 개인 제작자와 학생들에게 마이크로컨트롤러 개발의 문호를 개방했다. 많은 SBC로 리눅스가 주된 운영 체제가 됐으며, FreeRTOS가 등장함으로써 실시간 운영 체제 도입이 한 차원 진전을 이뤘다.

오늘날 임베디드 개발 산업은 모든 것을 포괄한다. 프로토타입을 빠르게 개발하고 시간에 쫓기는 개발 일정을 단축할 수 있도록 SI 회사들이 포괄적인 평가 모듈, 개발 보드, 소프트웨어 개발 키트, 레퍼런스 디자인을 제공한다.

산업용 사물인터넷(IoT)/IIoT 같은 애플리케이션(앱)으로 저전력 배터리 구동 커넥티드 시스템이 중요해짐으로써 이러한 요구에 부응하기 위해서 프로세서 코어와 주변장치 블록들로 추가적인 슬립 모드가 도입되었다. 프로세서의 대기 전력과 동작 시의 전력 소모 프로파일을 잘 조화시키면서 앱 인터럽트에 빠르게 응답하도록 하는 것이 중요한 과제가 되었다.

로우코드, 이벤트 지향적 스크립트, 노드 레드(Node-red) 같은 언어, CoAP(Constrained Application Protocol)와 MQTT(Message Queueing Telemetry Transport) 같은 경량 통신 스택이 임베디드 개발로 또 다른 측면에서 활기를 불어넣고 있다. 이들 기법은 자원 제약적인 극저전력 마이크로컨트롤러로 IoT/IIoT 앱을 개발할 때 특히 유용하다.

플랫폼 구축과 클라우드 기반 IDE로 임베디드 산업의 발전

Zerynth 같은 통합적 하드웨어 및 소프트웨어 솔루션이 임베디드 업계로 또 다시 변화의 물결을 일으키고 있다. 이들 시스템은 IoT/IIoT 구축을 빠르게 할 수 있도록 포괄적인 하드웨어 플랫폼과클라우드 기반 인프라를 제공한다.

예를 들어서 산업 자동화 장비 회사가 주문받은 임베디드 시스템을 개발하고 보안적이며 신뢰할 수 있는 클라우드 인프라를 구축하기란 결코 쉽지 않은 일이다. 상당한 시간과 비용에다 해당 분야에 대한 전문성이 요구된다. 상품화되어서 나온 하드웨어를 사용함으로써 IIoT 앱 업체들이 소프트웨어 기능을 통해서 자사 가치 제안을 차별화하면서 필요한 데이터 보안과 암호화 기능을 제공할 수 있다.

이제는 또 TI Cloud Composer와 Arm mbed 같은 많은 IDE가 갈수록 더 온라인으로 전환함으로써 협업 임베디드 개발이 가능하게 됐다. 많은 오프 소스 프로젝트의 중요한 측면으로서 어떤 클라우드 IDE는 개인, 공유 GitHub 코드 저장도 가능하다.

PlatformIO 같은 다중 플랫폼과 다중 아키텍처 임베디드 개발 플랫폼은 단일의 온라인 환경으로 IDE, 저장소, 디버거, 정적 코드 분석 툴 일체를 포함함으로써 기존 툴체인을 대신할 수 있는 “원스톱” 협업 솔루션을 제공한다. 마이크로일렉트로니카(MikroE)나 세거마이크로컨트롤러(Segger) 같은 IDE와 툴 회사들은 자사 툴의 경쟁력을 높이기 위해서 RTOS를 포함시키고 RISC-V 같은 새로운 명령어 셋 아키텍처를 지원한다.

다음 단계의 진화는 어떤 모습일까

팬데믹 동안에 개발 팀들이 원격 근무를 해야 함으로써 온라인 개발과 협업 플랫폼의 사용이 크게 증가했다. 이러한 추세는 앞으로도 계속될 것이다. 임베디드 개발이 갈수록 더 온라인으로 전환함으로써 클라우드 IDE와 개발 협업 툴로 계속해서 더 많은 기능을 추가하고 혁신을 이어갈 것이다.

2020년 9월에 임베디드 툴 회사인 MikroE는 Planet Debug 서비스를 내놓았다. 이 회사는 자사의 Necto Studio IDE에 기반해서 개발자의 책상에서 하드웨어 목표 디바이스를 치워버릴 수 있도록 했다. Planet Debug 기능을 내장함으로써 개발자가 세계 어느 곳에서든 원격으로 프로그램하고 디버깅할 수 있다. MikroE의 Remote MikroE 개발 플랫폼은 Necto Studio 안에서 이용할 수 있으며, 보드로 실제로 무슨 일이 일어나는지 설명하는 비디오를 제공한다.

가상 하드웨어 플랫폼의 시대가 이제 막 시작되고 있다. 임베디드 개발의 진화는 지금도 계속되고 있다.

 

 

 

글 : 마크 패트릭(Mark Patrick)

제공 : 마우저 일렉트로닉스(Mouser Electronics)

회원가입 후 이용바랍니다.
개의 댓글
0 / 400
댓글 정렬
BEST댓글
BEST 댓글 답글과 추천수를 합산하여 자동으로 노출됩니다.
댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글수정
댓글 수정은 작성 후 1분내에만 가능합니다.
/ 400
내 댓글 모음
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지