[01] 하드웨어?? 펌웨어?? 소프트웨어?? (Hardware, Firmware, Software)

덧) 2018년 5월 25일에 작성된 글을 옮겨왔다.

[멋진 그림인듯.. 하드웨어와 펌웨어가 적절히 묘사된 듯 싶다]

 

아두이노는 아직 받아보지 않았기에 아직은 뭐 기다리자 싶기도 하지만, (그리고 이 글이 초보자들에게 도움이 되려면), 기본적으로 필요한 지식에 대해서 이야기를 해보고 싶다. 

자신만의 CPU를 포함하는 모든 전자 기계들은 (전자밥통에서 부터 컴퓨터까지도 – 엊그제 아는 분의 밥통을 고쳐드렸기에 밥통이 먼저 떠올랐음 ㅡㅡa) 크게 다음의 2가지 영역으로 구성이 되었있다. 

    1. Hardware / 하드웨어 

    2. Firmware  / 펌웨어

[하드웨어 공사중이군]


Hardware는 말 그대로 실제 눈에 보이는 전자부품들로 이루어진 겉모양을 말한다. 

아두이노 보드를 보면 (물론, 아직 실물을 보지는 못했지만) 보드 그 자체를 말하는 부분이 될 것이다. 이런 Hardware에는 다시 크게 3가지 정도의 영역으로 나뉜다고 볼수 있겠다. (전적으로 나의 기준으로 3가지라고 이야기하는 것이다) 하나는 Hardware의 Main이 되는 CPU와 그CPU를 동작시키기 위한 부분들, 그리고 CPU를 가지고 처리하고 싶은 데이터들을 받아들이고 출력하는 부분들, 마지막으로 전원을 인가해주는 부분들로 구성이 되어 있는 것이다. 나중에 아두이노 보드 회로도를 보면서 이 이야기를 다시 해보겠다. 

Firmware는 (우리가 종종 Software라고 혼용해서 말하기는 하지만) 엄밀하게 Software라고 부르는 것과 조금은 다른것으로 Hardware에 전원이 들어왔을때 그 Hardware가 기본적으로 동작하게 세팅을 해주는 Software라고 보면 될 것이다. 예를 들어 컴퓨터를 켜면 BIOS라고 부르는 부분은 컴퓨터의 OS와 상관없이 기본적인 하드웨어의 상태를 점검하고 OS가 실행되기 전에 세팅을 해주고 있다. 이것을 Firmware라도 부를수 있겠다. 이렇게 Hardware가 Firmware 에 의해서 준비가 되어지면 실제 Software인 Windows나 Mac OS가 실행이 되는 것이다. 다만, 아두이노처럼 간단한 동작을 위해 개발된 (원칩프로세서들의 경우) Firmware나 Software가 별다르게 구분되지 않기에 하나의 이름으로 부르게 되는 것이다. (전적으로 나의 경험과 기준에서 분류를 한 것임을 명시한다) 

[흔한, 개발실의 풍경 - 사진찍는다고 좀 치웠나?]


잠시 아두이노 시스템을 떠나서 실제 개발실(연구소)를 보면 2가지의 파트(부서)로 나뉘어있다. 먼저, Hardware와 Firmware를 개발하는 hardware Team (Hardware와 Firmware는 나눠서 존재할 수 없기때문에)과 여기에 좀 복잡한 Software를 개발해서 설치하는 Software Team으로 나뉘어 진다. (아, 모든 연구소에는 연구 지원팀이라고 하는 부서가 또 따로 존재한다. 말그대로 연구이 외의 업무를 지원해주는 팀이다) 

결국, 아두이노 보드를 가지고 혼자 무언가를 만들어보고 즐긴다는 것은 Software Team에 있다기보단, Hardware Team 에서 근무를 하고 있다는 것이고, 그러기에 이왕이면 기본적인 Hardware 설계도 알아야 한다는 것으로 이 글을 마무리 하고 싶다. 

덧1) 설이 좀 길었다. 다만, 조금 검색을 해보니 대부분 프로그램을 짜는 일에 (물론 프로그램도 중요하다) 치우쳐 있는 듯해서 하드웨어 설계에도 힘을 기울여야 한다는 것을 이야기 하고 싶었다. 

덧2) 실제로 난 하드웨어 엔지니어 출신인데, 내 동료였던 소프트웨어 엔지니어가 하드웨어와 펌웨어에 관해 지식이 부족하다고 배우고 했던 모습이 기억나서 글이 길어 진 것 같다.

반응형

'전공선택 > Arduino' 카테고리의 다른 글

[00] Arduino (아두이노)에 손을 내밀어 본다.  (0) 2020.07.19

댓글

Designed by JB FACTORY