임베디드, 펌웨어, 펌웨어 리호스팅 용어정리

두비니

·

2022. 4. 24. 01:47

 


임베디드, 펌웨어, 펌웨어 리호스팅

용어정리


 

 

1. Abstract

  갑자기 정확한 개념을 모르겠어서 쓰는 글입니다. 나중에 또 까먹을까봐! 혹시나 틀린 부분이 있다면 지적 부탁드립니다. 이런저런 공부를 하다보면 정말 자주 펌웨어는 딴거니? 리호스팅은 된거고? 덤프는 땄어? 가상화 지원은 안된대? 등등... 어설프게 아는것보다 한번 정리하고자 글을 작성합니다!

 

 

2. 임베디드 시스템(Embedded System)이란? 

  우선 임베디드 시스템이란 직역할 경우 '내장된 시스템'정도로 번역이 됩니다. 이정도 내용만 보고서는 음.. 그럼 컴퓨터도 임베디드 시스템이 아닌가? 라는 생각을 했었는데, 전혀 다릅니다. 한 글에서 임베디드 시스템은 개인용 컴퓨터(Personal Computer)의 정반대의 말이다, 라고 하는 것이 가장 정확한 설명이더라구요.[1] 설명드리도록 하겠습니다.

  우선 개인용 컴퓨터를 생각해봅시다. 물론 Windows와 Mac처럼 운영체제의 차이는 생기지만, 누군가는 코딩을 하기 위해, 누군가는 글을 쓰기 위해, 누군가는 예술 작품을 작업하기 위해 사용합니다. 이처럼 모두 같은 운영체제를 사용하지만, 사용자가 원하는 응용 소프트웨어를 다운받아 원하는대로 커스터마이징(customizing)이 가능합니다.

  반면 대표적으로 임베디드 시스템이 들어가는 세탁기, 냉장고 등을 생각해봅시다. 세탁기를 가지고 그림판을 쓸 건 아닌것처럼, 애초에 이런 가전제품의 경우 자유도가 매우 한정적입니다. 세탁기의 경우 어떤 종류의 빨래를 할건지, 시간은 어떻게 되는지 등등 아주 제한적인 일만 수행합니다. 이렇게 임베디드 시스템은 제한적인 일만 수행을 하는 시스템입니다. 이런 임베디드 시스템의 장점은 정해진 임무만 수행하면 되기 때문에 시스템의 구조가 단순하며, 빠른 속도를 가지고 있다는 장점이 있습니다.

  주로 이런 임베디드 시스템은 주로 PC에 사용되는 CPU와는 다른 CPU를 사용하며(ex. ARM), 따라서 이런 임베디드 시스템 위에서 사용되는 프로그램들은 당연히 PC에서는 돌아가지 않습니다. 결론부터 이야기하자면 이를 가능하게 해주는 기술들이 있는데, 이는 뒤에 논의할 펌웨어 리호스팅에서 다시 다루도록 하겠습니다.

 

 

3. 펌웨어(Firmware)란?

  다음은 펌웨어입니다. 펌웨어란 임베디드 시스템에서 구현되는 소프트웨어를 칭하는 단어입니다. 엥? 그러면 그냥 소프트웨어 아닌가? 라고 생각할 수 있겠지만, 펌웨어는 사용 용도가 전혀 다릅니다. 소프트웨어는 정보를 전달하여 하드웨어가 알맞는 연산을 할 수 있도록 하는 프로그램입니다. 따라서 사용자가 원하는 역할을 하도록 하는 것이 목적입니다.

  반면에 펌웨어의 경우, 하드웨어의 논리회로의 기능 들을 보강 및 대신할 수 있도록 만든 프로그램입니다. 기술이 발전함에 따라 소프트웨어가 하드웨어에게 전달해야하는 정보가 많아짐에 따라 하드웨어도 따로 부품을 교체하지 않고도 '업데이트'를 할 수 있게끔 하는 기술입니다. 물론 소프트웨어가 업데이트 됨에 따라서 하드웨어를 갈아엎는 방법도 있겠지만, 펌웨어를 사용하는 것이 시간/비용적으로 훨씬 더 효율적이기 때문에 펌웨어를 사용하고 있습니다. 

 

 

 

4. 펌웨어 리호스팅(Firmware Rehosting)이란?

  사실상 4번을 위한 빌드업.. 마지막으로 펌웨어 리호스팅에 대해서 알아봅시다. 리호스팅, 에뮬레이팅(Emulationg) 등등의 이름으로 알려져 있는데, 이에 대해서 알아봅시다. 우선 리호스팅과 에뮬레이팅은 엄밀히 보면 다른 것으로 알고있는데, 통용해서 쓰이는 것 같더라구요. 암튼 아까 위에서 기본적으로 펌웨어는 해당 임베디드 시스템이 아닌 경우 동작하지 않는다고 말했습니다. 그러나 이런 경우 프로그램을 분석할 때 직접 하드웨어가 필요하거나, 분석 도중 문제가 발생했을 경우 해당 테스트 베드를 아예 새로 구축해야한다는 문제 등이 있습니다.

  그래서 이런 문제를 해결하기 위해 일종의 변환을 진행하는 것을 펌웨어 리호스팅이라고 합니다. 대표적인 예시를 들자면 안드로이드 앱은 컴퓨터에서 실행할 수 없습니다. 당연히 컴퓨터와 핸드폰의 운영체제는 다르니까요(ex. Windows & Android). 그러나 Nox, Bluestack 등의 에뮬레이터를 깔 경우 어플리케이션들을 실행할 수 있게 됩니다. 이는 에뮬레이션(emulation)이 진행되기 때문입니다. 이러한 개념으로 안드로이드가 아닌 다른 임베디드 시스템의 펌웨어들도 실행할 수 있도록 가능하게 하는 것이 펌웨어 리호스팅입니다. 펌웨어 리호스팅의 대표적인 툴로는 QEMU, Simics 등이 있습니다.

 

 

5. Conclusion

  일단 이해한 바로 최대한 정리해보았는데, 혹시나 틀린 부분이 있다면 언제나 댓글 부탁드립니다. 이제 다시 공부하러...

끝!

 

 

Reference

[1] 임베디드 시스템과 펌웨어, 5분 정리: https://yozm.wishket.com/magazine/detail/340/

[2] 하드웨어, 소프트웨어, 펌웨어의 주요 특징과 차이점..:  https://r1.community.samsung.com/t5/%EA%B8%B0%ED%83%80/%ED%95%98%EB%93%9C%EC%9B%A8%EC%96%B4-%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%ED%8E%8C%EC%9B%A8%EC%96%B4%EC%9D%98-%EC%A3%BC%EC%9A%94-%ED%8A%B9%EC%A7%95%EA%B3%BC-%EC%B0%A8%EC%9D%B4%EC%A0%90/td-p/1139736

[3] [네이버클라우드 기술&경험] 가상화 개념 이해하기#1, QEMU vs KVM : https://medium.com/naver-cloud-platform/%EB%84%A4%EC%9D%B4%EB%B2%84%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EA%B8%B0%EC%88%A0-%EA%B2%BD%ED%97%98-%EA%B0%80%EC%83%81%ED%99%94-%EA%B0%9C%EB%85%90-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-1-qemu-vs-kvm-962113641799