임베디드 시스템 개요 및 하드웨어 : : 다루 두루 
 리눅스 노트 정리 / 임베디드 리눅스 2018 . 12 . 28 . 11 : 43 
 임베디드 시스템 개요 및 하드웨어 ( 노트 정리 ) 
 임베디드 시스템 은 어떤 기기 속 에 내장 되 어 정해진 일 을 수행 하 도록 만들 어 진 디지털 시스템 이 다 . 
 우리 주변 에서 흔히 볼 수 있 는 전자 제품 안 에 는 무조건 임베디드 시스템 이 들 어 있 다고 생각 하 면 될 것 이 다 . 이 시스템 은 그 자체 로 제품 이 되 기 보 다는 다른 제품 속 에서 그 역할 을 하 게 된다 . 
 단순 한 기능 만 수행 하 는 제품 의 경우 적당 한 속도 의 프로세서 와 적 은 양 의 메모리 를 사용 해서 구현 이 가능 하 겠 지만 리눅스 같 은 OS 가 올라가 서 복잡 한 기능 을 구현 하 는 녀석 들 은 좀 더 큰 용량 의 메모리 와 32 비트 이상 의 프로세서 를 사용 해야 할 것 이 다 . 
 2 . 1 SoC ( System on Chip ) 
 반도체 기술 의 발전 으로 작 은 소자 안 에 CPU 는 물론 메모리 및 주변 장치 들 을 포함 하 는 ' 시스템 온 칩 ' 이 등장 하 였으며 같 은 CPU 를 사용 하 면서 주변 장치 의 구성 을 조금 씩 달리 한 것 들 을 Family 의 Chip 이 라고 한다 . 
 여기 서 말 하 는 CPU 에 는 AVR 같이 단순 한 작업 을 위해서 사용 되 는 8 비트 코어 와 좀 더 복잡 한 작업 을 할 수 있 는 ARM 의 32 비트 코어 등 이 있 다 . 
 생각 보다 많 은 일 을 할 수 있 는 임베디드 시스템 에서 는 한 종류 의 메모리 만 으로 는 그 역량 이 부족 하 기 때문 에 상황 에 따라서 다양 한 종류 의 메모리 가 사용 된다 . 
 적 은 용량 의 데이터 를 사용 하 는 8 비트 CPU 의 경우 메모리 의 크기 가 수십 KByte 이 면 되 기 때문 에 SRAM ( 수십 KByte ) , EPROM ( 수십 KByte ) , NOR Flash ( 수 MByte ) 형태 로 메모리 가 구성 되 는 데 8 비트 의 ATmega 128 의 경우 NOR Flash 는 128 KByte 이 며 SRAM 은 4 KByte 이 고 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 ) 
 PROM ( Programmable ROM ) _ ROM Write 이용 해서 데이터 써 넣 음 . 한 번 쓰여진 데이터 삭제 불 가능 
 EPROM ( Erasable PROM ) / EEPROM ( Electrically Erasable PROM ) _ 자외선 , 전압 을 이용 해서 내용 삭제 하 고 다시 쓸 수 있 음 . 
 * 전원 OFF _ 데이터 저장 
 * CPU 에서 명령어 로 데이터 써 넣 을 수 있 고 읽 어 올 수 있 음 . 
 * 전원 OFF _ 데이터 소멸 
 ■ SDRAM 
 CPU 에서 데이터 읽 고 쓸 수 있 지만 데이터 유지 를 위해 콘덴서 사용 하 며 속도 가 SRAM 에 비해서 느리 기 때문 에 큰 용량 의 RAM 이 필요 할 때 사용 된다 . 
 데이터 읽 고 쓰 는 과정 이 복잡 하 기 때문 에 CPU 와 SDRAM 사이 에 제어기 가 필요 하 다 . 
 SDRAM 은 입력 클럭 의 상승 엣지 나 하강 엣지 에서 만 Read , Wirte 작업 수행 을 하 기 때문 에 한 번 에 1 Word 데이터 접근 할 수 있 지만 DDR SDRAM 은 상승 , 하강 엣지 모두 Read / Write 가능 하 기 때문 에 2 Word 접근 이 가능 하 고 두 배 의 효율 이 있 다 . 
 일정 한 블럭 단위 로 데이터 를 읽 거나 쓰 며 초기 상태 에서 는 어떠 한 데이터 를 써도 된다 . 하지만 한 번 쓰여진 데이터 중 에서 1 > 0 변경 은 가능 하 지만 0 > 1 변경 은 불 가능 하 기 때문 에 다른 데이터 를 쓸 때 는 영역 지우기 ( block erase ) 를 한 후 다시 값 을 써야 하 고 데이터 고정 ( fusing or programming ) 을 해야 한다 . ( 영역 지우기 를 하 면 모든 값 이 1 로 초기 화 됨 . ) 
 플레시 메모리 는 NOR 형 과 NAND 형 이 있 는데 NOR 은 펌웨어 저장 용 으로 사용 되 며 데이터 를 쓸 때 와 지울 때 시간 이 오래 걸리 지만 ROM , RAM 읽 기 가 가능 하 다 . 반면 NAND 형 은 우리 가 사용 하 는 컴퓨터 의 하드 디스크 처럼 보조 기억 창지 로 사용 되 며 ROM 형태 의 읽 기 가 불 가능 하 다 . 하 지만 읽 고 쓰 는 속도 및 영역 지우기 속도 가 빠르 면서 가격 이 저렴 한 장점 이 있 다 . 
 2 . 3 주변 장치 
 명령어 수행 을 통해 많 은 일 을 하 는 CPU 의 부담 을 줄여 주 기 위해서 다양 한 주변 장치 ( peripheral ) 가 사용 된다 . 
 임베디드 시스템 , 하드웨어