게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
임베디드란 무엇인가 ? - 2
게시물ID : programmer_12395짧은주소 복사하기
작성자 : 구차니
추천 : 2
조회수 : 2453회
댓글수 : 27개
등록시간 : 2015/07/28 10:39:33
음.. 오늘은 임베디드의 구조에 대해서 적어 볼까 합니다.

임베디드는 앞에 말했듯이. 매우 광범위한 분야의 기술/제품을 의미합니다.
자동 판매기 역시 임베디드가 될 수 있고,
지하철 개표기 도 임베디드라 할 수 있죠
그리고 편의점의 바코드 리더기도 임베디드라 할 수 있고
밥솥, 냉장고, 세탁기, 로봇 청소기, 인터폰, 핸드폰 모두 임베디드라 할 수 있습니다.

이렇듯 임베디드는 형태가 다양하기에 단순화 하긴 어려우나 그럼에도 불구하고 구조를 정리하자면


프로세서(Processor)
말그대로 데이터를 처리하는 녀석입니다.
임베디드의 일반적인 요구사항은 저전력, 실시간성입니다.
물론 저전력이기에 배터리로 작동하는 녀석들도 있기도 하고, AC 전원을 연결해서 작동하는 경우도 있겠지만
우리가 사용하는 intel / AMD x86 혹은 x64에 비하면 정말 이슬 먹고 사는 정도의 전원을 소비합니다.
하지만 특화된 기능을 위해서 만들어진 시스템이기 때문에 누르면 빠릿빠릿하게 작동해야 하며 제한적이거나 완전한 실시간성을 요구하게 됩니다.
그리고 임베디드 장비는 가격보다는 수량으로 승부하는 경우도 많기 때문에(예를 들어 센서 네트워크 장비.. 그냥 살포하는 수준으로..)
개별 비용이 높을수가 없고 그렇기에 프로세서도 요구사항에 맞춰 최소한의 성능을 보장하는 저가의 CPU를 사용하게 됩니다.
그렇기에 intel cpu 같은 부르주아의 제품을 쓰는 경우는 극히 드물며
ARM사의 ARM 계열 CPU나 intel의 8015 계열 저는 다뤄보진 않았지만 Zilog의 Z80 계열 ATMEL 사의 AVR 계열을 사용하게 됩니다.
저가 임베디드의 경우 AVR에서 cortex-m3 계열의 ARM 으로 전환하는 추세이고(가격이라던가 성능으로)
이러한 프로세서들은 원칩솔루션으로 CPU 안에 RAM과 FLASH가 내장되어 하나의 칩으로 모든 기능을 구현하기도 합니다.
- 이전 글의 댓글이나 CPU 종류 관련 용어 정리 를 참고 하시면 다른분들의 댓글에 보석같은 내용들이 있습니다.


범용 입출력 포트(GPIO - General Purpose Input Output)
임베디드의 꽃이라고 해야하려나.. 핵심이라고 해야하려나..
일반 x86 계열의 cpu 들은 gpio가 제한되거나 없습니다. 외부와의 데이터를 주고 받는데 있어서 저속의 통신 채널 보다는
고속의 전용장비(rs-232 시리얼, 패러럴 포트, SCSI, IDE, SATA, Fast Ethernet, GbE ...) 등을 통해 통신을 해서 처리해야지
cpu가 핀 하나 가지고 벌벌 떨면서 다른 작업 못하면 아까울 테니까요.
그리고 표준 규격화된 통신 채널을 가지고 있기 때문에 비표준이고 장비마다 다 다른 통신방법을 지원할 이유가 없습니다.
하지만 임베디드는 장비에 특화되거나 특정한 프로토콜을 이용해야 하기 때문여 사용양이 많지 않은 통신 하드웨어를 제공해주지 못하기 때문에
cpu 소비를 많이 하더라도 GPIO를 통해 직접 통신을 구현해야 할 수 밖에 없는 상황입니다.
일반적으로 while() 루프를 통해 핀의 데이터를 읽거나 interrupt 방식으로 rising edge나 falling edge를 탐지하여 값의 변화를 탐지하여 작동하며
탐지 이후에는 ISR(Interrupt Service Routine)을 통해 cpu가 직접 데이터를 처리하게 됩니다.
PC에서 랜카드를 통해 통신 할때, CPU는 랜 카드로 데이터만 전달해주고 전송에 대한 모든 처리는 LAN에서 하는 것과는 대조적이며
이런 과정에서 CPU를 많이 소모하게 되기에 LAN 이라는 하드웨어 통신 장치를 만들게 됩니다.

아무튼, 이런 GPIO가 있기에 편리하게 LED를 on/off 하거나
비표준의 장치들 그리고 PC에는 연결하기 힘든 수 많은 센서/반도체들을 자유자재로 연결 할 수 있습니다.


메인 메모리(RAM / Main Memory)
메모리는 컴퓨터가 작업을 하기 위한 공간으로 넓으면 넓을 수록 좋습니다.
하지만 임베디드 시스템에서는 OS가 존재하지 않거나, 간소화된 OS 혹은 RTOS를 통해 작동하게 되어
malloc등을 쓰지 않거나 쓸 수 없는 시스템으로 구성됩니다. 동적(dynamic)이라는 의미는 예측할 수 없으며
디버깅이 힘든 문제를 발생하므로 정적인 시스템으로 구성하여 성능과 안정성을 끌어 올리기도 합니다.
그리고 기본적으로 프로세서 내에 내장된 메모리는 SRAM으로 외부에 장착되는 DRAM보다 작동 속도가 빠르기에
신뢰성이 있으며 납득가능한 속도의 (빠른) 저가형 시스템을 구축하는데 도움을 줍니다.
물론 사용하는 용도에 따라 칩에 외부 메모리를 달 수 있는 옵션을 제공하는 경우도 있습니다.


스토리지(Storage)
우리가 사용하는 SD 메모리 HDD와 같이 OS나 프로그램을 담는 공간을 스토리지라고 합니다.
PC에서는 HDD나 SSD등을 이용하여 부팅을 하지만 HDD나 SSD는 단가 및 부피 면에서 문제가 있기에
제품에 칩 형태로 NAND FLASH 메모리를 장착하여 부팅을 하게 됩니다. EVK 레벨에서는 SD 카드를 통해 부팅을 진행하기도 하지만
일반적으로 wear leveling이나 SD 메모리 단자의 신뢰성의 문제로 제품화 하는 경우는 많지 않습니다.


인터페이스(interface)
인터페이스는 다른 장치나 같은 프로세서 끼리 통신을 위한 통신 수단이며
SoC(System on Chip)의 사양에 따라 UART 시리얼 포트가 3개 이상 장착되기도 하며
고가의 ARM 칩에서는 SATA나 PCI-Ex 포트 등도 장착이 가능합니다.
단, 임베디드 시스템은 주변 기기보다는 보드내 다른 칩들과 통신을 많이 하게 되므로
I2C(TWI), SPI, CAN, UART 그리고 끝판왕 GPIO를 다수 장착하게 됩니다.


특화된 하드웨어 가속장비
적용 분야에 따라 다르지만 영상의 경우(DVR,블랙박스, CCTV, 핸드폰...) ARM CPU와 같은 임베디드 프로세서 만의 성능으로는
재생이 불가능 합니다. 과거 486 시절만 해도 160x120 사이즈의 동영상도 힘들어 했으며,
H.264의 경우 펜4 급에서도 돌리기 힘들 정도의 성능입니다. 하지만 하드웨어 디코더를 프로세서에 내장함으로서
저전력의 시스템에서 충분한 성능의 비디오 디코딩/인코딩 성능을 보여주며
이로 인해, PC에서는 동영상이 끊어지는데 핸드폰은 잘보여! 라는 사태가 발생하기도 합니다.
이런 특화된 장비들은 SoC 개념으로 프로세서 내에 내장되며, 옵션에 따라서 지원가능한 사양들이 변경 됩니다.


운영체제(Operating System - OS)
저가의 소형 임베디드는 OS 없이 main() 함수 내의 while()을 통해 무한반복되는 프로그램으로 구성되며
약간 규모가 있는 임베디드는 ucos와 같은 OS나 RTOS 그리고 embedded linux를 탑재합니다.
규모가 더 커지면 embedded windows나 winCE 등을 탑재합니다만, 
라이센스/비용 문제로 인해 키오스크와 같은 GUI가 중요한 시스템이 아니라면 대개는 임베디드 리눅스를 탑재하게 됩니다.





임베디드란 무엇인가


프로그래밍 언어란

개발의 길로 들어서려는 분들을 위한 오늘의 조언
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호