임베디드 시스템 개요 및 하드웨어
임베디드 시스템 개요 및 하드웨어 (노트정리)
1. 개요
임베디드 시스템은 어떤 기기 속에 내장되어 정해진 일을 수행하도록 만들어진 디지털 시스템이다.
우리 주변에서 흔히 볼 수 있는 전자제품 안에는 무조건 임베디드 시스템이 들어 있다고 생각하면 될 것이다. 이 시스템은 그 자체로 제품이 되기 보다는 다른 제품 속에서 그 역할을 하게 된다.
단순한 기능만 수행하는 제품의 경우 적당한 속도의 프로세서와 적은 양의 메모리를 사용해서 구현이 가능하겠지만 리눅스 같은 OS가 올라가서 복잡한 기능을 구현하는 녀석들은 좀 더 큰 용량의 메모리와 32비트 이상의 프로세서를 사용해야 할 것이다.
2. 하드웨어
임베디드 시스템의 하드웨어는 프로그램 명령어를 처리하는 CPU, 데이터 및 프로그램 등을 저장하고 있는 메모리, 그리고 각종 외부장치와 시스템을 연결해주는 주변장치들로 이루어져 있다. (TFT LCD = 동영상 재생, MMC/CF = 이동형 메모리 지원)
2.1 SoC(System on Chip)
반도체 기술의 발전으로 작은 소자 안에 CPU는 물론 메모리 및 주변 장치들을 포함하는 '시스템 온 칩'이 등장하였으며 같은 CPU를 사용하면서 주변장치의 구성을 조금씩 달리한 것들을 Family의 Chip이라고 한다.
여기서 말하는 CPU에는 AVR 같이 단순한 작업을 위해서 사용되는 8비트 코어와 좀 더 복잡한 작업을 할 수 있는 ARM의 32비트 코어 등이 있다.
일반적으로 8비트 코어에는 타이머, 시리얼 통신 장치, A/D 변환기 등의 주변 장치들이 사용되며 32비트 코어에는 DRAM, 플래시 메모리, 메모리 관리장치 (MMU = OS를 사용하기 위해서 필요) 등이 포함된다.
2.2 메모리
생각보다 많은 일을 할 수 있는 임베디드 시스템에서는 한 종류의 메모리 만으로는 그 역량이 부족하기 때문에 상황에 따라서 다양한 종류의 메모리가 사용된다.
적은 용량의 데이터를 사용하는 8비트 CPU의 경우 메모리의 크기가 수십 KByte이면 되기 때문에 SRAM(수십 KByte), EPROM(수십 KByte), NOR Flash(수 MByte) 형태로 메모리가 구성되는데 8비트의 ATmega128의 경우 NOR Flash는 128KByte 이며 SRAM은 4KByte이고 CPU가 메모리에 접근해서 프로그램을 실행한다.
32비트 코어를 사용하는 ARM의 경우 수십 MByte의 SDRAM과 NAND Flash가 사용되는데 이것들은 용량이 큰 반면 SDRAM은 계속해서 refresh를 해줘야 해서 제어기가 필요하며 NAND Flash는 CPU가 직접 접근할 수 없기 때문에 NAND에 저장된 OS를 SDRAM으로 옮긴 다음 CPU가 접근해서 실행을 하게 된다.
2.2.1 메모리의 종류
■ ROM(Read Only Memory)과 Static RAM(Random Access Memory)
ROM |
SRAM |
* 종류 PROM(Programmable ROM) _ ROM Write 이용해서 데이터 써 넣음. 한 번 쓰여진 데이터 삭제 불가능 EPROM(Erasable PROM)/EEPROM(Electrically Erasable PROM) _ 자외선, 전압을 이용해서 내용 삭제하고 다시 쓸 수 있음. * 전원 OFF _ 데이터 저장 |
* CPU에서 명령어로 데이터 써 넣을 수 있고 읽어 올 수 있음. * 전원 OFF _ 데이터 소멸 |
■ SDRAM
CPU에서 데이터 읽고 쓸 수 있지만 데이터 유지를 위해 콘덴서 사용하며 속도가 SRAM에 비해서 느리기 때문에 큰 용량의 RAM이 필요할 때 사용된다.
데이터 읽고 쓰는 과정이 복잡하기 때문에 CPU와 SDRAM 사이에 제어기가 필요하다.
SDRAM은 입력 클럭의 상승 엣지나 하강 엣지에서만 Read, Wirte 작업 수행을 하기 때문에 한 번에 1Word 데이터 접근 할 수 있지만 DDR SDRAM은 상승, 하강 엣지 모두 Read/Write 가능하기 때문에 2Word 접근이 가능하고 두 배의 효율이 있다.
■ 플래시 메모리
일정한 블럭 단위로 데이터를 읽거나 쓰며 초기 상태에서는 어떠한 데이터를 써도 된다. 하지만 한 번 쓰여진 데이터 중에서 1 > 0 변경은 가능하지만 0 > 1 변경은 불가능하기 때문에 다른 데이터를 쓸 때는 영역 지우기(block erase)를 한 후 다시 값을 써야 하고 데이터 고정(fusing or programming)을 해야 한다. (영역 지우기를 하면 모든 값이 1로 초기화 됨.)
플레시 메모리는 NOR형과 NAND형이 있는데 NOR은 펌웨어 저장용으로 사용되며 데이터를 쓸때와 지울 때 시간이 오래 걸리지만 ROM, RAM 읽기가 가능하다. 반면 NAND형은 우리가 사용하는 컴퓨터의 하드 디스크처럼 보조기억창지로 사용되며 ROM 형태의 읽기가 불가능하다. 하지만 읽고 쓰는 속도 및 영역 지우기 속도가 빠르면서 가격이 저렴한 장점이 있다.
2.3 주변 장치
명령어 수행을 통해 많은 일을 하는 CPU의 부담을 줄여주기 위해서 다양한 주변장치(peripheral)가 사용된다.
● 타이머 = 특정한 시간 간격 측정, 원하는 시간에 이벤트 발생
● 직렬통신장치 = 병렬 데이터를 직렬로 보내고 직렬로 받은 데이터를 병렬로 바꿔주는 역할을 한다. (직렬통신방식은 두 가닥의 선만 있어도 통신이 가능하다.)
● A/D 변환기 = 아날로그 신호를 디지털 신호로 바꿔줌.(센서의 아날로그 신호를 디지털 신호로 바꿀 때 A/D 변환기 필요.)
● 캐시 = 코어와 SDRAM 사이에 있는 작으면서 빠른 메모리로 가장 최근에 참조한 메모리의 프로그램이나 데이터를 저장하고 있다가 다시 사용하게 함으로써 성능을 향상 시킨다.
● MPU(Memory Protection Unit) = 멀티 태스킹 환경에서 각 태스크가 서로를 침범하지 못하도록 하는 장치이며 자원을 중재하는 역할도 담당한다.