
펌웨어는 케이스, 기판, 그리고 몇 개의 센서를 하나의 반응하는 장치로 만들어주는 계층입니다.
일반적인 하드웨어 프로토타입은 물리적 부품으로 시작합니다. CAD로 모델링하고 3D 프린팅한 케이스, 장착 포스트에 맞는 PCB, 그리고 설계에 따라 배치된 센서, 버튼, LED 등이 그것입니다. 이렇게 조립된 프로토타입은 완성품과 거의 비슷하게 보일 수 있습니다. 하지만 펌웨어가 없으면 센서를 읽거나 입력에 반응하거나 다른 시스템과 통신할 수 없습니다.
펌웨어는 기기의 마이크로컨트롤러에서 실행되는 코드입니다. 일부 팀은 칩의 코드를 직접 작성하는 반면, 많은 팀은 외부 업체에 코드를 위탁합니다. 펌웨어 개발 기계 설계가 안정화되면 회사는 마이크로컨트롤러를 센서, 무선 장치 및 제한된 배터리와 안정적으로 작동시키려면 특정한 경험이 필요하기 때문에 펌웨어 개발에 착수합니다. 펌웨어는 하드웨어의 동작 순서와 오류 복구 방법을 정의합니다.
아래 섹션에서는 프로토타입 제작 과정에서 펌웨어 작업에 포함되는 내용, 일반적으로 필요한 서비스, 그리고 펌웨어 아웃소싱이 적합한 경우에 대해 설명합니다.
하드웨어 프로토타입에서 작동 가능한 제품으로
제품 개발에서 외형 설계, 기계 조립, 3D 모델 제작은 매우 중요한 부분입니다. 잘 만들어진 외형은 기기를 손에 쥐었을 때 편안한지, 통풍구가 제대로 배치되었는지, 힌지와 같은 움직이는 부품의 내구성이 얼마나 뛰어난지 등을 보여줍니다. 하지만 단순히 모양만 맞는 프로토타입은 물리적인 모형에 불과합니다. 온도를 측정하거나 스마트폰으로 데이터를 전송하려면 기기 내부 프로세서에서 실행되는 소프트웨어가 필요합니다.
기기 프로세서에서 실행되는 소프트웨어를 펌웨어라고 합니다. 펌웨어는 일반적으로 C 또는 C++로 작성되며, 물리적 전자 장치와 사용자가 상호 작용하는 기능을 연결합니다. 메모리 및 전력 제한은 플랫폼마다 다르므로 펌웨어는 선택한 하드웨어와 해당 작동 모드에 맞춰 설계해야 합니다. 센서를 교체할 경우 펌웨어도 함께 업데이트해야 합니다. 단가를 낮추기 위해 더 저렴한 마이크로컨트롤러로 교체하는 경우 소프트웨어 아키텍처에 따라 드라이버, 툴체인 및 애플리케이션을 변경해야 할 수도 있습니다.
하드웨어 변경은 종종 펌웨어 변경을 필요로 하므로, 하드웨어와 펌웨어는 순차적으로 개발하기보다는 병렬적으로 개발하는 것이 가장 좋습니다. 기계적 설계는 코드에 직접적인 영향을 미칩니다. 금속 브래킷 뒤에 안테나를 배치하면 펌웨어는 신호가 약해지고 재전송 횟수가 늘어나며, 배터리 용량이 작아지면 더욱 강력한 절전 모드가 필요합니다. 기계 엔지니어와 펌웨어 엔지니어가 초기 단계부터 협력하면 최초 조립 제품에서 테스트 중 발생하는 문제를 줄일 수 있습니다.
펌웨어 개발 회사는 하드웨어 프로토타입을 위해 어떤 일을 하나요?
시제품 제작 단계에서 펌웨어 개발 회사는 보드가 작동하도록 하고 하드웨어 설계가 변경되더라도 보드가 계속 작동하도록 유지하는 책임을 맡습니다. 이러한 작업은 일반적으로 여러 단계를 거칩니다.
첫 번째 단계는 대개 칩을 선택하는 것입니다. 대부분의 프로토타입은 STM32, ESP32 또는 nRF52와 같은 마이크로컨트롤러(MCU)를 사용합니다. 디스플레이, 더 높은 처리 능력 또는 임베디드 리눅스가 필요한 장치는 시스템 온 칩(SoC)을 사용합니다. 경험이 풍부한 펌웨어 엔지니어링 회사는 칩 선택에 대한 조언을 제공할 수 있는데, 이는 칩이 향후 사용 가능한 개발 도구와 무선 옵션을 결정하기 때문입니다.
다음 단계는 하드웨어 초기화입니다. 이 단계에서 엔지니어는 클럭이 안정적인지, 전원 레일에서 올바른 전압이 공급되는지, 디버거가 연결되는지, 각 주변 장치가 제대로 반응하는지 등을 확인합니다. 이 과정에는 오실로스코프와 로직 분석기 같은 도구가 필요합니다. 초기화 과정에서는 설계 검토 단계에서 발견되지 않았던 핀 위치 변경이나 풀업 저항 누락과 같은 회로도 오류도 종종 드러납니다.

실리콘 칩부터 사용자가 보는 동작에 이르기까지, 일반적인 프로토타입 펌웨어 스택입니다.
초기 구동 후, 팀은 가속도계, 온도 센서, 디스플레이, 모터 컨트롤러, 외부 플래시 메모리 등 보드에 있는 센서와 주변 장치용 드라이버를 작성합니다. 각 구성 요소는 I2C, SPI 또는 UART와 같은 버스를 통해 통신하며, 각 구성 요소에는 실제 작동 환경에서만 드러나는 데이터시트상의 세부 사양이 있습니다. 다음으로 통신 프로토콜이 추가됩니다. 모바일 앱과 연동되는 장치는 일반적으로 블루투스 저에너지(Bluetooth Low Energy)를 사용하고, 클라우드 보고에는 Wi-Fi 또는 셀룰러 데이터가 필요합니다. 차량은 일반적으로 CAN을 사용하고, 산업 장비는 종종 Modbus를 사용합니다.
마지막 단계는 사용자가 보게 될 동작을 정의하는 장치의 기본 로직입니다. 예를 들어, 전원 버튼을 3초 동안 누르면 장치가 페어링 모드로 전환되고, 배터리 잔량이 15% 미만이면 경고가 표시되고 LED가 어두워집니다. 페어링 및 배터리 부족 경고와 같은 규칙을 통해 작동하는 회로가 사용 가능한 제품으로 완성됩니다.
프로토타입 제작 단계에서 제공되는 주요 펌웨어 개발 서비스
펌웨어 개발 범위는 제품에 따라 다릅니다. 단일 센서 데이터 로거는 연결된 의료용 웨어러블 기기보다 훨씬 적은 펌웨어 개발이 필요합니다. 하지만 프로토타입 단계에서 제공되는 대부분의 펌웨어 개발 서비스는 다음과 같은 범주에 속합니다.
- 임베디드 펌웨어. MCU 상의 핵심 애플리케이션으로, 시작 코드, 메인 루프, 그리고 장치의 동작 방식을 정의하는 상태 머신을 포함합니다.
- 장치 드라이버는 프로세서가 보드의 각 구성 요소에서 데이터를 읽고 쓸 수 있도록 하는 저수준 코드입니다. 제조사에서는 인기 있는 부품에 대한 드라이버를 제공하지만, 제조사 코드가 모든 사용 사례를 포괄하는 경우는 드물기 때문에 일반적으로 사용자 정의 개발이 필요합니다.
- RTOS. 기기가 센서 샘플링, 화면 업데이트, 무선 패킷 수신을 동시에 수행해야 할 때, FreeRTOS나 Zephyr와 같은 실시간 운영 체제는 이 세 가지 작업을 예측 가능하게 스케줄링합니다.
- 연결성. BLE, Wi-Fi, LoRaWAN, 셀룰러 또는 유선 버스의 통합과 함께 페어링, 암호화 및 무선(OTA) 업데이트 기능을 제공합니다.
- 전력 관리에는 절전 모드, 클럭 스케일링, 사용하지 않는 주변 장치 꺼짐 등이 포함됩니다. 배터리 구동 장치의 경우 전력 관리는 한 번 충전으로 일주일 또는 1년 동안 사용할 수 있는지를 결정합니다. 또한 이 연구에는 데이터시트 값에만 의존하는 대신 실제 전류 소모량을 측정하는 작업도 포함됩니다.
- 디버깅. 일반적으로 보드에 JTAG 또는 SWD 디버거를 연결하여 충돌, 타이밍 문제 및 하드웨어-소프트웨어 충돌을 찾아 수정하는 작업입니다.
- 펌웨어 테스트. 단위 테스트, 하드웨어 인 더 루프 설정, 저전압, 고온 또는 불안정한 연결 상태에서의 스트레스 테스트.
마감일이 임박하면 디버깅과 테스트 시간이 단축되는 경우가 많은데, 이는 결국 나중에 비용 증가로 이어지는 경향이 있습니다. 수작업으로 조립한 시제품의 버그 수정에는 몇 시간밖에 걸리지 않지만, 수천 대의 제품을 생산한 후에 동일한 버그가 발견되면 현장 업데이트가 필요하거나 경우에 따라 리콜까지 이어져야 합니다.
제품 개발 과정에서 펌웨어 개발 파트너와 협력해야 하는 이유는 무엇일까요?
개념 증명 단계에서는 엔지니어 한 명이 회로도, 외함 모델, 코드를 모두 처리할 수 있는 경우가 많습니다. 하지만 기기에 안정적인 무선 연결, 긴 배터리 수명, 현장에서의 안전한 펌웨어 업데이트가 필요한 경우에는 작업량이 크게 증가합니다.
안정적인 무선 연결과 긴 배터리 수명은 펌웨어 개발 파트너를 고용함으로써 얻을 수 있는 이점 중 하나입니다. 다양한 보드를 개발해 온 엔지니어는 일반적인 칩 오류와 특정 벤더 SDK의 한계를 잘 알고 있습니다. 또한, 경험이 풍부한 펌웨어 엔지니어는 개발 키트에서 맞춤형 PCB로 전환할 때 처음부터 다시 시작할 필요가 없도록 코드를 구조화합니다. 대부분의 펌웨어 개발팀은 이미 전력 분석기 및 RF 테스트 도구와 같은 실험 장비를 보유하고 있으므로, 고객은 단일 프로젝트를 위해 고가의 테스트 장비를 구매할 필요가 없습니다.
파트너와 협력하면 개발 기간을 단축할 수도 있습니다. 동일한 칩을 사용하는 평가 보드에서 펌웨어 개발을 시작할 수 있으므로 최종 하드웨어를 기다릴 필요 없이 펌웨어와 기계 설계를 동시에 진행할 수 있습니다.
외부 전문가의 도움에 드는 비용은 기기에 따라 다릅니다. 펌웨어 개발 전문 업체에 의뢰하면 예산에 별도의 항목이 추가되고, 아주 간단한 기기의 경우 사내 전문가만으로도 충분할 수 있습니다. 하지만 연결형, 배터리 구동형 또는 규제 대상 기기의 경우 외부 전문가를 활용하면 기판 수정 횟수를 줄일 수 있으며, PCB 수정이 한 번 발생할 때마다 일정이 몇 주씩 연장되고 직접적인 비용도 증가합니다.
파트너를 선택할 때는 해당 팀이 어떤 MCU 제품군을 기반으로 제품을 출시했는지, OTA 업데이트는 어떻게 처리하는지, 그리고 엔지니어들이 귀사의 시장(FCC, CE 또는 의료 표준 등)에 적합한 인증 기기 개발 경험이 있는지 문의하십시오. 회로도와 요구 사항을 검토하는 1~2주간의 유료 사전 조사 기간은 영업 담당자와의 통화보다 훨씬 더 명확한 정보를 제공해 줄 수 있습니다.
외부 팀은 제품에 대한 자세한 배경 정보가 필요하며, 엔지니어에게 브리핑하는 데에는 시간이 소요된다는 점을 명심하십시오. 따라서 계약 시작 시 문서화 표준 및 소스 코드 소유권을 합의하여 계약 종료 후에도 펌웨어의 소유권이 귀사에 유지되도록 하십시오.
하드웨어 아이디어를 기능적인 장치로 구현하기
온실용 토양 수분 센서를 가상으로 생각해 보겠습니다. 다음 예시는 실제 고객 사례 연구가 아닌, 가능한 개발 과정을 보여주는 것입니다. 첫 번째 버전은 개발 보드가 내장된 3D 프린팅 케이스이며, 펌웨어는 USB를 통해 노트북으로 수분 측정값만 전송합니다. 이 첫 번째 버전만으로도 개념이 작동함을 확인할 수 있습니다.
두 번째 버전은 케이스의 장착 기둥에 맞는 맞춤형 PCB를 사용합니다. 펌웨어는 이제 10분마다 프로브를 읽고, 읽기 사이에는 절전 모드를 유지하며, 각 결과를 LoRaWAN을 통해 건물 내 다른 곳에 있는 게이트웨이로 전송합니다. 듀티 사이클링과 적절한 무선 전략을 통해 작동 시간을 연장할 수 있지만, 결과는 측정된 전류, 배터리 용량 및 실제 보고 조건을 사용하여 계산하고 검증해야 합니다.

펌웨어 작업은 최초의 3D 프린팅 케이스와 시범 생산 배치 사이에 이루어집니다.
시범 생산 단계에서는 펌웨어, 전자 장치, 기계 설계 및 생산 검증을 포함한 여러 작업이 남아 있을 수 있습니다. 시범 단계의 펌웨어 엔지니어링 서비스는 코드 안정화, 전력 소비 최적화, 보안 부팅 및 OTA 업데이트 추가, 그리고 조립 라인에서 출고되기 전 각 장치가 실행하는 자체 테스트 작성에 중점을 둡니다. 초기 버전은 엔지니어의 감독 하에 벤치 테스트용 장치 한 대에서 작동해야 했지만, 양산 버전은 현장에서 수백 대의 장치에서 일관되게 작동해야 합니다.
이 예시적인 워크플로에서는 팀이 장치를 검증함에 따라 케이스와 펌웨어 모두 발전합니다. 많은 하드웨어 프로젝트가 이와 같은 패턴을 따르며, 케이스 수정보다 펌웨어 수정이 더 자주 발생합니다. 하드웨어 프로젝트를 계획할 때는 복잡성, 통합 및 검증 요구 사항을 고려하여 펌웨어 작업에 대한 예산을 책정하고, CAD 파일이 최종 확정되는 단계부터 펌웨어 엔지니어를 참여시켜야 합니다.

