728x90
반응형
- 펌웨어란 하드웨어 장치를 제어하는 목적을 가진 소프트웨어로, 하드웨어 내부의 제어 부분에 존재하며 논리회로의 기능을 보강하거나 대신하는 제어 프로그램의 일종이다.
- 등장 배경
- 하드웨어는 소프트웨어를 통해 전달된 정보를 받아들여 내부의 논리 회로를 거쳐 출력을 낸다. 그런데 소프트웨어는 항상 발달하고, 이에 따라 하드웨어의 논리 회로도 바뀌어야 하는데, 그때마다 새로운 하드웨어를 만드는 것은 비효율적이므로 하드웨어 내의 제어 부분에 저장 공간을 만들고 그곳에 펌웨어를 집어넣어 통해 논리 회로의 기능을 보강하거나 대신하게 되었다. 즉, 펌웨어는 하드웨어 내부에 존재하며 논리 회로의 기능을 업데이트하여 새로운 소프트웨어 기능을 사용할 수 있게 한다.
- 펌웨어의 특징
- 프로그램의 형태를 갖추고 있어 기능적으로는 소프트웨어이고, 하드웨어 내부에 위치하여 사용자가 쉽게 내용을 바꿀 수 없으므로 하드웨어적 특성을 동시에 가지고 있다.
- 펌웨어는 다른 소프트웨어보다 우선적으로 하드웨어의 기본적인 동작을 제어할 수 있다.
- 대부분의 펌웨어에는 OS(운영체제)가 없다.
- 어플리케이션 개발자가 해당 어플리케이션이 작동할 OS를 잘 이해하고 아키텍쳐를 잘 알아야 하는 반면 펌웨어 개발자는 해당 임베디드 시스템의 CPU나 회로, 소자 등에 대해 잘 알아야 함
- 어플리케이션은 기능이 복잡한 반면 펌웨어는 안정성이나 정밀성과 같은 성능이 중요하므로 하드웨어를 잘 알아야 함
- 임베디드 시스템의 성능적 제한으로 인해 크로스 컴파일 방식을 통해 펌웨어를 개발함
- 대부분의 펌웨어는 끝이 없이 일정부분을 연속해서 도는 while문 안에 갇혀있다.
// 펌웨어 알고리즘 예시
main()
{
while (1) {
toggle_led(); // 함수 계속 호출
serial_process();
}
}
void toggle_led() { // LED 제어 함수
static unsigned int time;
if (time < 6000) // 시간 변수가 특정 시간에 도달하기 전까지 시간 변수 1증가
time++;
else { // 특정 시간에 도달하면 LED의 상태를 바꿈
if (LED == 1)
LED = 0;
else
LED = 1;
time = 0; // 시간변수 초기화
}
}
void serial_process() { // 직렬통신을 이용해 문자를 하나씩 전송
}


- 펌웨어 예시
- PC를 키면 처음 실행되는 BIOS (Basic Input/Output System) : PC의 하드디스크가 손상되어 OS의 부팅이 실패해도 BIOS는 정상적으로 작동하며 OS 구동에 필요한 데이터를 찾을 수 없다는 오류 메시지 표시
- 디지털카메라가 메모리카드를 삽입받기 전 전원을 켜면 뜨는 초기 화면. 저장 매체를 받아들일 준비를 함
- 마이컴(마이크로컨트롤러) 안에서 연산을 하는 것이 마이크로프로세서
마이컴에 프로그래머가 원하는 제어 명령을 하기 위해 프로그래밍한 것이 펌웨어
- 예전에는 펌웨어가 하드웨어 내부의 ROM에 저장되어 내용 변경이 힘들었으나, EPROM (필요할 때 기억된 내용을 지우고 다른 내용을 기록할 수 있는 ROM) 이나 플래시 메모리가 개발되면서 비교적 수월하게 펌웨어의 내용을 수정할 수 있게 됨
* BIOS란
바이오스는 PC에 탑재된 모든 하드웨어 및 소프트웨어의 기본적인 동작을 제어하는 프로그램을 뜻한다. PC의 전원을 켜면 가장 먼저 가동 되는 프로그램이 바이오스로, 일반적으로 검은색 바탕에 PC 제조사의 이름 및 CPU의 속도, 메모리의 용량 등의 하드웨어 정보를 화면에 표기한다. 바이오스는 이렇게 주요 하드웨어의 정상 동작 여부를 확인 한 뒤, 보조기억장치(하드디스크나 CD-ROM)에 접근, 그곳에 저장된 운영체제를 불러와 부팅을 시작한다. 만약 보조기억장치가 없거나 보조기억장치 내에 운영체제 파일이 없으면 바이오스는 부팅 불가 메시지를 출력한다.

참고 자료 :
https://blog.naver.com/ojh6t3k/20194131448
펌웨어(Firmware)
펌웨어도 소프트웨어이다. 일반적으로 전자 시스템을 하드웨어와 소프트웨어로 분류한다. 하드웨어는 눈에 ...
blog.naver.com
728x90
반응형
'Study_Embedded' 카테고리의 다른 글
About AVR, ARM Processor, and Protocol (0) | 2023.10.09 |
---|---|
Jetson Nano 'System throttled due to Over-Current 관련 (0) | 2023.09.08 |
USB, COM 포트 차이 (0) | 2023.02.13 |
임베디드 시스템이란? (0) | 2022.07.23 |