728x90
반응형


리눅스


일반 리눅스


: 일반 데스크탑 환경인 고성능 프로셋와 대용량 메모리 환경에서 동작하는 범용 컴퓨터용 리눅스


임베디드 리눅스


: 저성능의 마이크로 프로세서와 제한된 메모리 환경에서 동작하는 임베디드 시스템용 리눅스







임베디드란?


: 임베디드는 아주 작은 형태의 전자회로를 가지고 있는 컴퓨터이다. 따라서 임베디드는 다양한 사물에 숨겨져있다. 임베디드의 뜻이 우리말로 번역하면 "내장된" 이라고 할 수 있다. 주위에 임베디드 장치를 쉽게 찾아 볼 수 있으며 대표적인 것들이 신호등, 지하철 개찰구, 선풍기 등이 있다. 


스마트폰도 임베디드 장치라고 할 수 있는데, 내부에서 다양한 센서와 액츄에이터 그리고 초소형 고성능 컴퓨터를 탑재하고 있다. 수백개에서 수천개의 전자회로를 가지고 있는 자동차도 대표적인 임베디드 장치이다. 



임베디드 시스템에서 가장 중요한 것은 사용자가 On 버튼을 누르거나 특정 이벤트를 일으켰을 때 바로 반응하는 것이 중요하다. 즉 부팅 속도가 제일 중요하다.


또한, 사용자가 이벤트를 발생시켰을 때(전원 버튼을 누른다던지...) 바로 실행되는 것이 보여질 수 있게 끔 하는 것이 관건이다. 즉, GUI 같은 것들이 제일 먼저 떠야 빠르게 실행되고 있다는 것을 인지 하게 된다. 컴퓨터에서도 USB를 인식하는 장치가 부팅 후 거의 마지막에 실행되는 것도 이러한 이유라고 한다.  






임베디드 개발 방식


: 아두이노(Aduino)를 이용해 다양한 프로젝트를 하는 것도 일종의 임베디드 개발이라고 할 수 있다. 임베디드는 기존 컴퓨터와는 달리 키보드와 모니터 같은 입력이나 출력장치가 없는 것이 일반적이다. 따라서 임베디드를 개발하기 위해서는 다른 컴퓨터에 연결해서 개발해야한다.


 

[그림 1] 임베디드 개발 방식



대개 컴퓨터 시스템과 임베디드가 서로 호환되지 않기 때문에 크로스 컴파일이라는 것을 이용한다. 예로 인텔의 x86 윈도우 컴퓨터에서 아트메가 칩을 사용하는 아두이노에서 사용할 프로그램을 컴파일 하는 것도 이에 해당된다. 






컴파일 (컴퓨터의 작동원리)


: 먼저 아두이노에서 setup, loop와 같이 사람이 인식할 수 있는 말로 작성한 것을 소스코드라고 한다. 이것을 다시 컴퓨터와 같은 기계가 알아들을 수 있는 말인 기계어 코드로 변환하는 것을 컴파일이라고 한다. 기계는 실제로 0과 1만 인식 할 수 있기 떄문에 기계어 코드는 0과 1이 조합되어서 만들어진다. 이렇게 기계어 코드가 생성되면 다시 CPU가 해석해서 동작하게 된다. 


컴퓨터와 임베디드는 컴퓨터 원리 측면에서는 동일하게 작동한다. 하지만 각 과정을 자세히 비교하면 서로 다른 특징을 갖고있다.


첫번째, 컴퓨터는 키보드나 마우스와 같은 입력장치를 이용해 사용자의 명령을 받는다면, 임베디드는 다양한 센서를 통해 정보를 입력 받는다. 


두번째, 컴퓨터는 32비트, 64비트와 같은 고성능 CPU를 이용한다면, 임베디드는 저전력 저비용 CPU가 많이 사용된다. 


세번째, 컴퓨터는 고성능 처리장치와 자원을 이용해 운영체제를 돌려 다양한 응용프로그램을 실행 할 수 있다. 반면 임베디드는 자원이 매우 제한적이어서 대게 특정 기능만 담당하는 펌웨어 하나만 돌아가는 경우가 많다. 


네번째, 컴퓨터는 모니터 및 스피커와 같은 정형화된 주변장치를 이용해 출력을 한다. 반면, 임베디드는 다양한 종류의 액추에이터를 이용해 출력을 한다.




 


Real-Time System


: 정해진 시간 내에 시스템이 결과를 출력하는 시스템, 


주어진 작업을 빨리 처리하는 것이 아니고 정해진 시간을 넘어서는 안된다는 뜻


임베디드 시스템은 대부분 실시간적인 요소를 내포하며, 실시간 시스템이 포함된다. 







호스트 시스템


: 일반 PC 또는 워크스테이션


크로스 컴파일 환경이 설정됨 -> 타겟의 모든 S/W 개발


시리얼 라인을 통하여 타겟 시스템의 콘솔 역할


TFTP, NFS 서비스 제공







타겟 시스템


: 리눅스를 올릴 장비


호스트 시스템에서 작성된 S/W들이 다운로드되어 실행됨







크로스 컴파일


: S/W가 타겟 시스템(processor)에서 돌아갈 수 있도록 하는 컴파일


호스트와 타겟 시스템은 일반적으로 프로세서가 다름


크로스 컴파일 포스팅 참고 : http://eehoeskrap.tistory.com/251











참고자료 1 : 한국과학창의재단_임베디드란무엇인가

참고자료 2 : http://ccrs.hanyang.ac.kr/webpage_limdj/embedded/Introduction.pdf





728x90
반응형

'Programming > Linux' 카테고리의 다른 글

[Linux] 커널 이미지  (0) 2018.08.05
[Embedded linux] timeconst.pl 에러 해결법  (2) 2018.08.05
[Linux] .bashrc 수정 후 적용  (0) 2018.08.05
[Embedded linux] 크로스 컴파일  (0) 2018.08.05
[Linux] 리눅스 버전 확인  (0) 2018.08.05