임베디드 시스템 개발 업무를 담당하면서 가장 많이 들은 단어가 펌웨어이다. 다만 펌웨어가 무엇인지에 대한 정확한 개념이 정립되어있지 않아 꽤나 고생을 했다.
Firmware(펌웨어)는 전자 장비의 HW와 SW를 이어주는 다리 정도로 이해할 수 있다. 따라서 펌웨어는 하드웨어와 소프트웨어의 특성을 동시에 가지며 하드웨어의 논리 회로의 기능을 보완하가너 대신하며 소프트웨어가 구동할 수 있는 환경을 구성한다. 새로운 소프트웨어가 나올 때마다 전용의 하드웨어를 새로 생산할 수 없기에 하드웨어의 제한된 논리회로를 가지고 여러 소프트웨어의 기능을 가능케 하는 펌웨어의 영역은 매우 중요하다.
펌웨어는 기본적으로 하드웨어의 제어와 구동이 가능하며 주로 Flash나 PROM에 저장된다. 기능의 업데이트가 있을 시 이 펌웨어만 새로 Flash 해주면 동일한 하드웨어 상에서 새로운 펌웨어 기반의 기능을 수행할 수 있다. 예시로 PC 메인보드의 BIOS 등이 있다. 과거에는 ROM에 펌웨어를 작성하였으나 ROM은 수정이 불가능하기에 최근에는 위에 서술했듯이 Flash나 PROM으로 넘어가는 추세이다.
거창한 디바이스의 펌웨어라 생각할 수 있지만 가장 간단하게 접할 수 잇는 펌웨어는 아두이노의 소스 코드 등이 있다. 아두이노 보드도 엄연히 ATmega128, 2560 등의 MCU 기반의 micro computing device로 여기에 우리가 작성해서 업로드하는 코드 또한 해당 보드에 대한 펌웨어라고 할 수 있다!
반응형
댓글