보드 하나 붙이면 끝나는 줄 알았던 프로젝트가, 막상 시작하면 회로와 펌웨어와 상위 프로그램 세 갈래로 흩어집니다. 담당자가 다르고 일정도 다르니, 어느 순간 누가 뭘 책임지는지조차 헷갈립니다.
여기서 많이들 막힙니다.
임베디드 시스템이란, 특정 장비 안에 들어가 정해진 기능만 수행하는 하드웨어와 소프트웨어의 결합체입니다. 범용 PC처럼 여러 프로그램을 갈아 끼우는 구조가 아니라, 회로 설계 단계부터 그 장비 하나를 위해 짜여집니다. 기획을 잘못 나누면 나중에 되돌리는 비용이 훨씬 커집니다.

왜 세 팀이 아니라 한 팀이어야 하나
회로(PCB), 펌웨어, 상위 프로그램은 서로 다른 전공처럼 보입니다. 그런데 실제로는 데이터 하나가 이 세 구간을 그대로 통과합니다. 센서가 잰 값이 회로를 거쳐 펌웨어로 올라가고, 펌웨어가 정리한 값이 다시 상위 프로그램의 화면과 로그로 이어집니다.
따로 발주하면 이 경계에서 문제가 생깁니다. 회로 업체는 펌웨어 사양을 모르고, 펌웨어 개발자는 상위 프로그램이 원하는 데이터 형식을 모릅니다. 한쪽이 끝나야 다음이 시작되니 일정도 그만큼 늘어집니다.
기획 단계에서 정해야 할 세 가지
첫째, 데이터가 어디까지 올라가는지부터 정합니다. 현장 화면에서 끝나는지, 상위 MES·ERP까지 연동되는지에 따라 통신 방식과 저장 구조가 달라집니다.
둘째, 업데이트 방식을 정합니다. 현장에 나간 장비의 펌웨어를 나중에 무선으로 갱신할지, 유선으로 직접 붙어서 갱신할지는 초기 회로 설계 단계부터 갈립니다.
셋째, 인수인계 범위를 명확히 합니다. 소스코드, 빌드 환경, 부트로더, 버전 이력, 통신 프로토콜 문서까지 받아야 다음 개발사가 이어받을 수 있습니다. 이 중 하나라도 빠지면, 나중에는 처음부터 다시 뜯어봐야 합니다.
빠뜨리기 쉬운 항목이 인수인계 문서입니다.
자주 묻는 질문
임베디드 시스템과 일반 소프트웨어 개발은 뭐가 다른가요?
일반 소프트웨어는 범용 컴퓨터 위에서 돌아가지만, 임베디드 시스템은 정해진 하드웨어 자원 안에서만 동작합니다. 메모리와 처리 속도가 제한적이라, 코드 하나하나가 회로 사양에 맞춰져야 합니다.
기존에 쓰던 장비에 기능만 추가할 수도 있나요?
가능합니다. 다만 기존 펌웨어 구조와 통신 방식을 먼저 파악해야 하고, 인수인계 자료가 부족하면 분석에 시간이 더 걸립니다.
회로와 펌웨어와 상위 프로그램을 따로 발주하기 전에, 한 팀이 끝까지 맡는 구조부터 검토해 보시길 권합니다.



