펌웨어

펌웨어(firmware)는 컴퓨팅과 공학 분야에서 특정 하드웨어 장치(read-only memory, ROM)에 포함된 소프트웨어로, 소프트웨어를 읽어 실행하거나, 수정하는 것도 가능한 영구적 소프트웨어(permanant software)를 뜻한다. 

하드웨어의 '로우 레벨 제어'(low-level control) 즉, 운영체제 없이 한정된 자원(리소스)으로 단순한 로직 또는 '미세 기능'(micro function)만을 수행하는 마이크로 프로그램이다. ROM이나 PROM에 저장되며, 하드웨어보다는 업그레이드하기가 쉽지만, 소프트웨어보다는 업데이트가 어렵다.

펌웨어의 일종인 바이오스는 하드웨어 추상화(hardware abstraction) 작업을 수행한다.

역사 
애셔 오플러(Ascher Opler)는 펌웨어(firmware)라는 용어를 1967년 《데이터메이션》 기사에서 만들어냈다. 원래는 마이크로코드를 담고 있고 컴퓨터의 명령 집합을 구현한, 쓰기 가능한 컨트롤 스토어(크기가 작은 특수 고속 메모리)의 내용물을 의미했는데 중앙 처리 장치(CPU)가 실행할 수 있는 명령을 수정하기 위해 다시 로드할 수 있었다.

1990년대 중순까지 펌웨어를 업데이트하는 일은 일반적으로 소켓 형태의 ROM 집적 회로였던, 펌웨어를 포함하는 기억 매체를 교체하는 일이 수반되었다. 플래시 메모리는 시스템으로부터 물리적으로 집적 회로를 제거하지 않고 펌웨어를 업데이트할 수 있게 해준다.

펌웨어의 예 

 PC에서 흔히 볼 수 있는 바이오스
 애플 매킨토시에 사용되는 오픈 펌웨어
 롬 집적 회로의 컴퓨터 프로그램
 EPROM 칩은 특정한 하드웨어로 수정이 가능한 프로그램이지만, 응용 프로그램으로는 수정이 되지 않는다.
 산업용 프로그램
 각종 계측기, 오실로스코프 등의 프로그램
 각종 로봇의 프로그램
 휴대전화의 프로그램
 스마트폰
 PDA의 프로그램
 내비게이션의 프로그램
 홈 네트워크
 MP3 플레이어의 프로그램
 디지털 TV
 PMP
 DVR
 DMB
 디지털 카메라의 프로그램
 USB 기억 장치, USB 허브 등 각종 USB 장치
 가전 전자제품의 프로그램
 전기밥솥
 냉장고

펌웨어와 장치 드라이버 
현대의 시스템에 들어가는 대부분의 장치들은 저들만의 소프트웨어를 실행하는 특수 목적의 컴퓨터들이다. 이 장치들 가운데 일부는 장치 안에 있는 ROM 안에 소프트웨어 (펌웨어)를 저장한다. 그러나, 여러 해에 걸쳐, 제조업체들은 호스트 시스템에서 펌웨어를 불러내는 것이 값이 싸면서도 유연성이 있다는 사실을 알아 냈다. 그 결과, 현재의 많은 하드웨어는 호스트 컴퓨터가 필요한 펌웨어가 채워질 때까지 어떠한 방법으로도 기능을 할 수 없다. 이러한 펌웨어 로드는 장치 드라이버에서 구현된다.

많은 장치들의 펌웨어는 추가 하드웨어를 설치하지 않고, 보통 판매업체가 제공하는 소프트웨어를 통해 업데이트할 수 있다.

함부로 펌웨어를 수정할 경우 때때로 제작자가 의도치 않은 결과를 가져올 수 있다. 일례로 DVD 플레이어의 지역 코드를 지웠을 경우를 들 수 있다.

펌웨어 해킹 

커스텀 펌웨어는 새로운 기능을 제공하고자 하거나, 숨겨진 기능을 언락(unlock)하고자 하는 서드 파티들에 의해 생성된 비공식적 버전의 수정된 펌웨어를 말한다. 그리고 이러한 수정 작업을 펌웨어 해킹이라고 한다.

대부분의 커스텀 펌웨어는 오픈 소스 자유 소프트웨어이다.

이런 해킹된 커스텀 펌웨어는 설치하거나 실행하기 위해, 많은 장치들에 있는 펌웨어 업데이트 기능을 사용한다. 그러나, 몇몇 장치 제작사가 라이선스 없는 코드 실행을 막기 위해 하드웨어에 락을 걸려고 시도했기 때문에, 몇몇 커스텀 펌웨어는 실행하기 위해 익스플로잇에 의지해야 한다.

예시 
 CHDK: 캐논 디지털 카메라
 OpenWRT: 무선 공유기(라우터)
 게임 콘솔의 홈브루 프로젝트
 PSP 커스텀 펌웨어: 휴대용 게임기
 락박스(Rockbox): 디지털 오디오 플레이어
 아이팟 리눅스(:en:iPodLinux): 기능이 제한된 장치에서 범용 컴퓨팅 기능(둠 등을 실행)을 언락하는 예
 스마트폰: 몇몇 안드로이드폰은 루팅시 커스텀 펌웨어로 변환이 가능하다. 예로는 MIUI, CM6, CM7 등이 대표적이다. 하지만 잘못할 경우 작동 불가. 즉 벽돌상태가 될 수 있으며, 이로 인해 고장날 시 유상수리를 해야 하므로 하지 않거나 사용자의 주의가 필요하다. 만들어지는 이유는 대부분 휴대전화를 최적화시키거나 필요없는 애플리케이션을 삭제하거나 펌웨어를 조금씩 변환하여 좀 더 보기 좋게 만들려고 커스텀 펌웨어를 만든다.

같이 보기 

 펌웨어 해킹
 마이크로프로그램
 플래시 메모리
 바이오스
 연방 표준 1037C
 MIL-STD-188

각주 

임베디드 시스템