최신 임베디드 시스템과 컴퓨터에서 펌웨어와 소프트웨어는 핵심적인 역할을 하는 두 가지 주요 용어입니다.
오늘날 세상은 디지털 환경으로 빠르게 변화하고 있으며, 컴퓨터를 통한 작업이 매우 중요해졌습니다. 컴퓨터를 이야기할 때 소프트웨어와 하드웨어는 가장 흔하게 사용되는 용어입니다.
현대 기술 장치를 만드는 데에는 다양한 요소들이 결합됩니다. 여러 종류의 소프트웨어와 하드웨어가 존재하며, 이와 함께 펌웨어도 자주 접하게 됩니다.
전자 산업에서 펌웨어와 소프트웨어는 널리 사용되며, 때로는 동일한 기능을 수행하기도 하여 이 두 용어를 구분하기 어려울 수 있습니다.
예를 들어, 안드로이드 운영체제(OS) 업데이트를 수동으로 설치하는 경우 펌웨어라는 용어가 사용될 수 있습니다. 즉, 안드로이드 스마트폰에서 OS 업데이트를 플래싱할 때, 소프트웨어는 특정 장치의 하드웨어나 펌웨어를 위해 구축됩니다.
이러한 개념이 다소 혼란스럽게 느껴질 수 있으므로, 이 주제에 대해 자세히 알아보도록 하겠습니다.
본 글에서는 소프트웨어와 펌웨어의 차이점, 유사점 및 몇 가지 활용 사례를 살펴보겠습니다.
시작해 볼까요?
펌웨어란 무엇인가?
컴퓨터 분야에서 펌웨어는 특정 장치의 하드웨어를 낮은 수준에서 제어하는 컴퓨터 소프트웨어의 한 종류입니다. 펌웨어는 장치의 필수적인 기능들을 포함하며, 운영 체제와 같은 상위 수준의 소프트웨어에 하드웨어 추상화 서비스를 제공합니다.
비교적 단순한 장치에서는 펌웨어가 제어, 모니터링 및 데이터 조작 기능을 수행하는 완전한 운영 체제 역할을 할 수 있습니다. 이는 EPROM, EEPROM, 플래시 메모리 및 ROM과 같은 비휘발성 메모리 장치에 저장됩니다.
미국의 과학자 아셔 오플러(Ascher Opler)는 1967년에 “펌웨어”라는 용어를 처음 사용했습니다. 그는 소프트웨어와 하드웨어 사이의 마이크로 프로그램을 설명하기 위해 이 용어를 만들었습니다.
펌웨어를 업데이트할 때, 물리적으로 ROM을 교체하거나 특정 절차를 통해 EPROM을 다시 프로그래밍해야 합니다. 일부 펌웨어 메모리 장치는 한 번 설치되면 변경할 수 없습니다.
펌웨어 업데이트의 중요한 이유 중 하나는 버그 수정 및 장치에 새로운 기능을 추가하는 것입니다. 펌웨어는 단순히 “하드웨어를 위한 소프트웨어”라고 생각할 수 있습니다. 소프트웨어는 별도의 용어이지만, 펌웨어와 관련되어 있으며, 이 둘을 서로 바꿔 사용할 수는 없습니다.
장치 제조업체는 하드웨어가 원활하게 작동하고 새로운 미디어와 호환되도록 정기적인 업데이트를 제공합니다. 네트워크 라우터 제조업체는 네트워크 성능을 개선하기 위해 펌웨어 업데이트를 제공하기도 합니다. 스마트폰이나 카메라 제조업체도 마찬가지입니다. 이러한 업데이트를 다운로드하려면 제조업체의 웹사이트를 방문하면 됩니다.
펌웨어는 하드웨어 통합 수준에 따라 세 가지 주요 범주로 나눌 수 있습니다. 다음과 같습니다.
- 저수준 펌웨어: 장치 하드웨어의 필수적인 부분으로 간주되며, ROM과 같은 읽기 전용 비휘발성 칩에 저장됩니다. 따라서 다시 쓰거나 변경할 수 없습니다. 시스템에 저수준 펌웨어를 포함하는 장치는 한 번만 프로그래밍할 수 있는 메모리를 갖습니다.
- 상위 수준 펌웨어: 업데이트가 가능하지만 저수준 펌웨어보다 약간 더 복잡하며 플래시 메모리 칩에 저장됩니다.
- 하위 시스템 펌웨어: 임베디드 시스템의 일부로 제공됩니다. 예를 들어, 서버의 전원 하위 시스템은 서버와 반독립적으로 작동하는 서버 하드웨어의 일부입니다.
예시: BIOS 또는 확장 가능한 통합 펌웨어 인터페이스(Extensible Firmware Interface), USB 드라이브, 센서, 소형 컴퓨터, 스마트 카드 등
펌웨어 업데이트는 어떻게 이루어지는가?
펌웨어 업데이트는 주로 펌웨어 해킹을 방지하고 보안을 강화하며, 버그를 수정하고, 새로운 기능을 추가하거나 최신 미디어와 호환성을 유지하기 위해 제공됩니다. 이는 하드웨어가 새로운 방식으로 동작하도록 지시하는 코드로 구성됩니다.
인터넷에 연결된 일부 장치는 정기적으로 새로운 펌웨어를 확인하여 자동으로 다운로드하고 설치합니다. 하지만 일부 사용자는 펌웨어 업데이트를 다운로드하고 설치하기 위해 웹사이트를 방문해야 합니다. 업데이트 빈도는 장치의 사용 상황에 따라 달라질 수 있으며, 스마트 기기의 경우 펌웨어 업데이트가 자주 필요하지 않을 수도 있습니다.
스마트폰은 일반적으로 소프트웨어 업데이트와 함께 펌웨어를 업그레이드하므로 사용자가 펌웨어 버전을 직접 업데이트할 필요 없이 휴대폰이 원활하게 작동합니다. 펌웨어 업데이트를 진행하는 동안에는 대부분의 전자 장치를 켜둔 상태로 유지해야 합니다.
소프트웨어란 무엇인가?
소프트웨어는 특정 작업을 실행하기 위해 컴퓨터에서 사용되는 데이터, 프로그램 또는 명령어입니다. 이는 컴퓨터 시스템의 물리적 측면을 의미하는 하드웨어의 반대되는 개념이며, 무형의 형태를 갖습니다.
소프트웨어는 모든 장치에서 실행되는 스크립트, 프로그램 및 애플리케이션을 총칭하는 용어로 사용됩니다. 따라서 소프트웨어는 컴퓨터의 가변적인 부분입니다. 소프트웨어의 주요 범주는 다음과 같습니다.
- 응용 소프트웨어: 특정 컴퓨터 요구 사항을 충족하거나 일부 필수 작업을 수행하는 데 사용되는 소프트웨어입니다.
- 시스템 소프트웨어: 장치의 하드웨어를 실행하도록 설계된 소프트웨어 유형이며, 응용 프로그램을 실행할 수 있는 플랫폼을 제공합니다.
- 프로그래밍 소프트웨어: 소프트웨어 개발자에게 필요한 프로그래밍 도구를 제공하며, 시스템 소프트웨어와 응용 소프트웨어 사이에 있는 미들웨어라고도 합니다. 또한 컴퓨터 장치와 주변 장치를 작동시키는 드라이버 소프트웨어도 포함됩니다.
1980년대 초, 소프트웨어는 플로피 디스크 형태로 판매되었고, 이후 CD와 DVD로 판매되었습니다. 현재는 대부분의 소프트웨어가 인터넷을 통해 구매하거나 다운로드 방식으로 제공됩니다. 다양한 종류의 소프트웨어를 공급업체 웹사이트에서 쉽게 찾을 수 있습니다.
아래에서 몇 가지 소프트웨어 디자인 유형을 살펴보겠습니다.
- 건축 설계: 소프트웨어의 기본 골격을 형성하며, 건축 설계 도구를 사용하여 시스템의 구조, 주요 구성 요소 및 이들 간의 관계를 식별합니다.
- 고급 설계: 소프트웨어 스택에서 지원하는 모듈 형태의 구성 요소와 함께 시스템 구현에 초점을 맞춘 소프트웨어 설계의 두 번째 단계입니다. 시스템과 데이터 흐름의 다양한 모듈과 기능 사이의 관계를 설명합니다.
- 세부 설계: 지정된 소프트웨어 아키텍처에 대한 구현 세부 사항에 중점을 둔 소프트웨어 설계 프로세스의 세 번째 단계입니다.
소프트웨어 품질은 접근성, 호환성, 기능, 성능, 이식성, 설치 가능성, 현지화, 효율성, 유지보수 용이성, 보안, 사용 편의성, 테스트 가능성, 신뢰성 등 여러 특성을 기준으로 평가할 수 있습니다.
소프트웨어는 어떻게 작동하는가?
모든 소프트웨어는 사용자의 요구 사항을 충족하고 작동하기 위해 컴퓨터에 데이터와 지침을 제공합니다. 위에서 논의한 것처럼 응용 프로그램과 시스템 소프트웨어는 서로 다른 방식으로 작동합니다.
응용 소프트웨어
응용 소프트웨어는 웹사이트 탐색이나 보고서 작성과 같이 최종 사용자의 특정 작업을 수행하는 데 사용되는 여러 프로그램을 포함합니다. 다른 응용 프로그램에 대한 작업도 수행합니다. 응용 소프트웨어는 그 자체로 실행될 수 없으며, 컴퓨터의 운영 체제 및 기타 지원 시스템 소프트웨어의 실행이 필요합니다.
이러한 응용 프로그램은 컴퓨터 메모리를 사용하여 특정 작업을 수행하기 위해 사용자의 컴퓨터에 설치됩니다. 하드 드라이브에 저장 공간을 차지하며, 작업을 수행하는 데 인터넷 연결이 필요하지 않습니다.
반면에 웹 응용 프로그램은 작동하기 위해 인터넷 연결이 필요합니다. 시스템 소프트웨어나 하드웨어에 의존하지 않고 웹 브라우저가 있는 장치를 통해 사용자가 빠르게 실행할 수 있습니다.
시스템 소프트웨어
시스템 소프트웨어는 응용 소프트웨어와 컴퓨터 하드웨어 사이에 위치하며, 백그라운드에서 실행되어 컴퓨터의 필수 기능을 처리합니다. 시스템 소프트웨어는 하드웨어를 조정하여 특정 작업을 수행하기 위해 상위 수준의 소프트웨어를 실행할 수 있도록 합니다.
시스템 소프트웨어는 컴퓨터가 부팅될 때 작동을 시작하여 컴퓨터 시스템이 켜져 있는 동안 계속 실행됩니다. 저수준 기계어 또는 어셈블리 언어로 작성되며, 독립적으로 실행되어 컴퓨터 시스템이 원활하게 작동하도록 합니다.
펌웨어와 소프트웨어의 유사점
펌웨어와 소프트웨어는 임베디드 시스템과 관련하여 종종 상호 교환 가능한 용어로 사용됩니다. 임베디드 시스템 산업에서는 몇 가지 유사점이 있으며, 펌웨어는 저수준 소프트웨어의 한 유형으로 볼 수 있습니다.
구직 공고에서 “임베디드 소프트웨어 엔지니어” 또는 “임베디드 펌웨어 엔지니어”라는 동일한 직무 설명을 찾아볼 수 있습니다. 이는 시스템의 응용 프로그램 부분과 시스템 측면이 함께 개발되기 때문입니다.
예를 들어, 운영 체제 없이 베어본 디자인으로 작업할 때 일부 마이크로컨트롤러 공급업체별 파일(드라이버와 헤더를 지원하는 CPU)과 일부 타사 드라이버(디스플레이 및 TCP/IP용)만 있을 수 있습니다. 이러한 파일은 소프트웨어의 하드웨어 측면을 처리할 수 있습니다.
드라이버와 헤더를 사용하여 응용 프로그램 소프트웨어를 작성할 수 있습니다. 나중에 모든 파일이 하나의 이진 파일로 결합됩니다. FreeRTOS 또는 VxWorks와 같은 운영 체제를 사용하는 경우 RTOS는 메모리 관리 및 컨텍스트 전환을 담당합니다. 그럼에도 불구하고 마이크로컨트롤러 드라이버, 타사 드라이버 및 RTOS 파일을 사용하여 응용 프로그램 소프트웨어를 작성해야 합니다.
펌웨어와 소프트웨어의 차이점
이제 펌웨어와 소프트웨어의 차이점을 자세히 살펴보겠습니다.
펌웨어 | 소프트웨어 | |
정의 | 하드웨어를 제어하고 정기적으로 업데이트하는 소프트웨어 유형입니다. | 컴퓨터 시스템에 대한 일련의 지침입니다. |
위치 | 운영 체제와 하드웨어 사이에 위치하는 하위 수준 소프트웨어입니다. | 운영 체제 상단에 있으며 하드웨어와 직접 상호 작용하지 않습니다. |
범주 | 저수준, 고급, 하위 시스템 펌웨어를 포함합니다. | 응용 프로그램, 시스템, 프로그래밍, 미들웨어 및 드라이버 소프트웨어를 포함합니다. |
크기 | 비교적 작습니다. | 가상적이지만 크기가 매우 클 수 있습니다. |
수정 | 수정되지 않도록 설계되었습니다. | 사용자의 기본 설정이나 요구에 따라 맞춤화 또는 수정될 수 있습니다. |
프로그래밍 | 한 번만 프로그래밍됩니다. | 원하는 만큼 설치 및 제거할 수 있습니다. |
저장 위치 | 하드웨어의 플래시 저장소에 저장됩니다. | 보조 장치에 저장됩니다. 컴퓨터 시스템의 저장 장치에 저장됩니다. |
개발 언어 | 개발 중에 저급 프로그래밍 언어가 사용됩니다. | 개발 중에 고급 및 저급 프로그래밍 언어가 모두 사용됩니다. |
실행 위치 | 비휘발성 보조 메모리인 메모리 칩에서 직접 실행됩니다(예: EEPROMS 및 플래시). | DVD, USB 등과 같은 이동식 미디어에서 복사되어 SSD 또는 하드 디스크와 같은 저장 장치에 설치됩니다. |
예시 | 컴퓨터 마더보드 제조업체에서 제공하는 UEFI 및 BIOS 펌웨어, OpenWrt 및 DD-WRT와 같은 오픈 소스 라우터 펌웨어 등이 있습니다. | 리눅스, 안드로이드, 윈도우 등과 같은 운영 체제와 브라우저, 앱, 게임, MS Office 등과 같은 응용 프로그램이 있습니다. |
펌웨어와 소프트웨어의 사용 사례
펌웨어 사용 사례
펌웨어는 복잡한 장치를 포함한 다양한 컴퓨팅 장비에서 사용됩니다. 펌웨어의 실제 사용 사례는 다음과 같습니다.
- 개인용 컴퓨터: 컴퓨터의 펌웨어는 작은 메모리 칩에 내장되어 있으며, 비디오 카드, 그래픽 카드와 같은 컴퓨터 주변 장치에도 펌웨어가 포함되어 있습니다.
- 가전 제품: 세탁기와 식기세척기는 펌웨어를 사용하여 기기가 설정 및 제어를 구성하는 컴퓨터와 통신할 수 있도록 합니다.
- 저장 장치: 하드 드라이브, 휴대용 저장 장치 및 USB 드라이브에는 장치가 컴퓨터 시스템과 작동할 수 있도록 하는 펌웨어가 포함되어 있습니다.
- 스마트 카드: 스마트 카드에는 기본 기능, 암호화 및 인증을 제공하기 위해 칩에 명령을 내장하는 펌웨어가 포함되어 있습니다.
- 자동차: 차량에는 센서, 소형 컴퓨터 및 작업을 수행하는 데 도움이 되는 펌웨어가 포함된 임베디드 시스템이 포함되어 있습니다.
- 모바일 장치: 랩톱, 태블릿, 스마트폰 및 기타 모바일 장치에는 하드웨어를 여러 소프트웨어와 함께 실행할 수 있는 펌웨어가 포함되어 있습니다.
소프트웨어 사용 사례
현재 대부분의 사용자가 소프트웨어에 익숙하다고 생각합니다. 컴퓨터나 다른 장치에 설치하고 다운로드하는 모든 것은 소프트웨어의 형태입니다. 소프트웨어 사용은 이미 일상생활에 필수적인 부분이며, 전 세계적으로 광범위하게 사용되고 있습니다.
응용 소프트웨어 측면에서 몇 가지 예시는 다음과 같습니다.
- 워드 프로세싱 소프트웨어: MS Word, 메모장, 워드패드
- 스프레드시트 소프트웨어: Microsoft Excel, Apple Numbers 등
- 데이터베이스 소프트웨어: MS Access 및 Oracle 등
- 시뮬레이션 소프트웨어: 과학 시뮬레이터 및 비행 시뮬레이터
- 엔터프라이즈 소프트웨어: 고객 관계 관리 시스템(CRM)
- 멀티미디어 소프트웨어: 미디어 플레이어 및 리얼 플레이어
- 교육용 소프트웨어: Encarta, BritannicaMathematical, Google Earth, NASA World Wind
- 프레젠테이션 소프트웨어: Keynotes 및 Microsoft Powerpoint
- 정보 근로자 소프트웨어: 자원 관리 도구, 문서 도구 등
- 애플리케이션 제품군: Microsoft Office, OpenOffice 등
- 콘텐츠 액세스 소프트웨어: 웹 브라우저, 미디어 플레이어를 통한 콘텐츠 액세스 등
시스템 엔지니어링 측면에서 몇 가지 예시는 다음과 같습니다.
- Windows, macOS 및 Linux와 같은 운영 체제
- 장치 드라이버
- 펌웨어
- BIOS 및 UEFI
- 프로그래밍 언어 번역기
- 유틸리티 프로그램
결론
펌웨어는 일반적으로 대부분의 하드웨어에서 임베디드 시스템을 마이크로 코딩하는 데 사용되는 반면, 소프트웨어는 더 높은 수준의 프로그램을 나타냅니다. 펌웨어 교체는 복잡할 수 있지만 소프트웨어의 경우에는 비교적 어렵지 않게 교체할 수 있습니다.
그러나 펌웨어는 장치의 하드웨어를 제어하는 시스템 소프트웨어이고, 소프트웨어는 컴퓨터나 다른 장치가 작업을 수행할 수 있도록 하는 일련의 지침을 의미합니다. 이 글을 통해 펌웨어와 소프트웨어의 주요 차이점과 유사점을 명확하게 이해하셨기를 바랍니다.
또한 사물 인터넷(IoT)에 대해 배우는 데 관심이 있으실 수도 있습니다.