임베디드란 무엇인가??? ( 펌웨어, IDE )



임베디드라는 말은 많이 들어봤지만 실제로 무엇인지는 잘 모르고 있었다.

임베디드를 검색해보고 공부를 좀 해봤다.

임베디드에 대해서 쉬운 설명(정의)으로 요약해봤다. 


★ 임베디드란 무엇인가????  => 다양한 사물에 전자기기를 내장해 개발하는 방식

(embbeded => 숨어있다, 내장되어있다.) 즉 사물에 전자기기가 숨어있다? 정도로 이해하면 편할 듯 하다. 


위키백과에서는 다음과 같이 정의하고 있다.   임베디드 시스템(영어: embedded system, 내장형 시스템)은 기계나 기타 제어가 필요한 시스템에 대해, 제어를 위한 특정 기능을 수행하는 컴퓨터 시스템으로 장치 내에 존재하는 전자 시스템이다. 즉, 임베디드 시스템은 전체 장치의 일부분으로 구성되며 제어가 필요한 시스템을 위한 두뇌 역할을 하는 특정 목적의 컴퓨터 시스템이다. 이에 비해 개인용 컴퓨터와 같은 특정되지 않는 일반적인 목적을 수행하는 컴퓨터 시스템과 대조된다. 특정 목적을 수행하는 컴퓨터 시스템이므로 목적을 설정하고 이를 수행하는 프로그램 코드를 작성하여 메모리에 기록하고 이를 읽어 동작 시키는 방법이 일반적이다.



★ 임베디드가 사용되는 곳 => 냉장고, 핸드폰, 선풍기, 자동차 등등

출처 : 위키피디아 -> 거의 안쓰이는 곳이 없다고 봐도 무방하다. 



★ 임베디드 개발 방식 =>  

 개발자가 컴퓨터로 프로그래밍을 한다 -> 크로스 컴파일을 한다. -> 임베디드에서 사용가능.

여기서 크로스 컴파일이 뭘까?? : 크로스 컴파일 같은 경우에는 컴퓨터와 아두이노 같은 임베디드 제품의 시스템이 다르기 때문에 호환되지않는다. 따라서 호환이 가능하게 변환을 해주는 것이다. 

ex) 인텔 CPU <----크로스 컴파일----> 아두이노    like    한국인 <---번역자----> 외국인 


★컴퓨터 vs 임베디드의 차이? 


핵심 : 컴퓨터는 사용자가 입력한다.  vs  임베디드는 입력 주체가 다양하다. 


★ IDE: Integrated Development Enviroment (통합 개발 환경)이란?? 

위키백과에서는 다음과 같이 정의하고 있다. 통합 개발 환경(統合開発環境, Integrated Development Environment, IDE)은 코딩디버그,컴파일배포 등 프로그램 개발에 관련된 모든 작업을 하나의 프로그램 안에서 처리하는 환경을 제공하는 소프트웨어이다. 종래의 소프트웨어 개발에서는 컴파일러텍스트 편집기디버거 등을 따로 사용했다. 이러한 프로그램들을 하나로 묶어 대화형 인터페이스를 제공한 것이 통합 개발 환경이다. 최근의 통합 개발 환경(IDE)은 그래픽 사용자 인터페이스(GUI) 응용 프로그램 개발용 고속 개발 도구가 많다.

요약하면  코드편집 + 컴파일 + 디버깅 기능을 제공하는 프로그램 이라고 하겠다.


★ 펌웨어란??? 

위키백과에서는 다음과 같이정의하고 있다. 펌웨어(firmware)는 컴퓨팅과 공학 분야에서 특정 하드웨어 장치에 포함된 소프트웨어로, 소프트웨어를 읽어 실행하거나, 수정되는 것도 가능한 장치를 뜻한다. [1]펌웨어는 ROM이나 PROM에 저장되며, 하드웨어보다는 교환하기가 쉽지만, 소프트웨어보다는 어렵다.

잘 안 와닿을 수 있다. ODIY 에서 제공하는 동영상에서는 이렇게 말한다. 

아두이노 같은 경우에는 운영체제가 없다. 하나의 app 이 하나의 cpu 를 직접 제어한다. 

이렇게 운영체제가 없는 방식으로 시스템이 작동되는 것을 펌웨어라고 한다. 

앱 하나가 시스템을 제어하는 것 == 펌웨어 라고 보면 될 것 같다. 


★임베디드에서는 최적화된 시스템이 중요하다. 

무슨 말일까?? 가령 PC같은 경우에는 고사양을 요하는 작업을 많이 하기 때문에 CPU 와 그래픽 카드 같은 하드웨어의 성능이 크게 중요하다고 볼 수 있다. 

그리고 계산기를 예로 보자. 계산기 같은 경우에는 intel-i5 같은 고사양의 CPU 가 필요없다. 

계산기 마다 다르겠지만 쌀집 계산기든 공학용 계산기든 자신에게 적절한 CPU 정도만 사용하면 된다. 

뭐 사양이 높으면 낮은것보다야 좋겠지만은 단가, 전력소비량, 부피 같은 요소들이 임베디드에서는 매우 중요한 것이다. 

누가 20만원 짜리 쌀집계산기를 쓰겠는가?? 단지 계산이 다른 쌀집 계산기보다 더 빠르다는 이유로? 

또 누가 전력소모가 큰 i5 를 사용하여 1~2시간만 휴대하면 전력이 다 떨어지는 핸드폰을 원하겠는가. 

지금보다 엄청나게 빠르고, 휴대폰에서 게임까지 된다고 해도 말이다. 

엄청난 계산량을 요하는 부피가 커다란 슈퍼컴퓨터의 경우는 부피가 크더라도 누가 뭐라고 하지 않는다. 

뭐 모든 분야에서 그렇겠지만, 용도에 맞게 시스템 사양을 적절하게 설정하고 조절하는게 매우 중요하다. 


위키피디아에서는 다양성과 경향성이라는 말로 아래와 같이 말하고 있다. 임베디드 시스템은 특정 임무에 전념하기 때문에 설계자들이 최적화하여 그 크기와 생산 비용을 줄이고 신뢰성과 성능을 향상시킬 수 있다. 어떤 임베디드 시스템은 대량생산되어 규모의 경제로부터 득을 보기도 한다.

외형적으로 임베디드 시스템의 범위는 들고 다닐 수 있는 디지털 시계와 MP3 재생장치 부터 커다란 고정 설비, 예를 들어 교통 신호등, 공장 제어 장치, 또는 원자력 발전소 제어 시스템에 이른다. 복잡성도 다양하여 간단히 한개의 마이컴만 사용한 것 부터 매우 복잡한, 여러 단위와 주변장치, 네트워크를 갖추고 큰 캐비넷 안에 설치되는 것도 있다.


한 마디로 임베디드란 전자제품의 모든것? 이라고 봐도 무방 할 것 같다. 


=======================    출  처   =============================

공부한 곳1 , 그림 출처 : ODIY =>  http://opensource.kofac.re.kr/edu/detail_view.do?aIdx=47

공부한 곳2  : http://ingami.tistory.com/27

공부한 곳3  : 위키피디아 -> 임베디드 검색