마이크로 컨트롤러 (MCU)
- 칩 위의 컴퓨터
: 컴퓨터 본체의 기능을 하나의 칩 위에 구현
- 전원만 주어지면 컴퓨터로 동작 : 저전력으로 이용
- 입출력 장치 연결로 완전한 컴퓨터로서 동작 가능
- 다른 시스템의 일부로 포함되어 사용
- 목적 : 범용화된 Device보다 훨씬 저렴하게 사용하자 !
용도
- 특수 목적용 -> 데스크탑과 비교했을때 낮은 성능 + 작은 메모리
- 작고 간단한 제어 장치 제작용
- 용도에 맞게 사양 세분화 및 최적화가 가능
- 목적에 맞는 다양한 종류의 제품이 존재
-> CPU, RAM, main board, GPU 등이 하나의 package로
<-> PC 기준? CPU, RAM, main board, SSD, GPU 등 : 범용적 용도, 가격이 높음
장점
- 제품의 소형화 + 경량화 + 저전력
- 저렴한 가격
- 신뢰성 향상 : 유지보수의 용이성 -> 고장나면 버리고 다시 사면 됨
- 융통성 : 프로그램에 의한 손쉬운 기능 추가 및 변경
단점
- 한정된 처리 능력
- 한정된 범용성 : 단일 목적으로만 사용
-> 시각에 따라 단점으로 생각하지 않을 수도 있다 : 뭘 만들건지에 따라 최적의 MCU를 고르면 됨
마이크로 프로세서와 마이크로 컨트롤러
마이크로 프로세서 (MPU)
- CPU를 하나의 칩으로 구현
- 무어의 법칙으로 기하급수적으로 성능 향상
마이크로 컨트롤러 (MCU)
- CPU + 메모리 + HDD의 일부 기능 + I/O interface
- 칩 위의 컴퓨터
- 특수목적용으로 사용되는 MPU의 한 종류
- 용도에 따른 최적화 & 적은 비용으로 구현 가능
한마디로 이렇게 표현이 가능하다~
주변 장치와 데이터 교환
- MCU 내부 : 바이트(8bits) 단위로 데이터 처리
- MCU 외부 : 비트 단위로 데이터 송수신
- 1 바이트 데이터를 MCU의 외부와 교환하는 방법 ?
- 병렬방식 : 8개의 데이터 핀 사용 -> 연결을 위한 채널 수가 많아짐
- 직렬방식 : 1개의 데이터 핀으로 데이터 8번 나눠서 전송 -> 송수신 간의 데이터 동기화가 중요하다
시리얼 데이터 동기화 방법
위의 직렬 방식으로 데이터를 전송할때, 데이터를 동기화 하는 방법에는 두가지가 있다.
- 동기방식
- 별도의 CLK 사용
- CLK 기준으로 데이터 확인
- 동기 방식 시리얼 통신의 예 - SPI
: 송수신 채널을 공유해서 여러 장치의 data를 받는다
- 동기 방식 시리얼 통신의 예 - I2C
: half duplex 채널
- 비동기방식
- 별도의 CLK 사용 x : rising edge와 falling edge 등 특정 이벤트를 기준으로 한다.
- 약속된 속도로 데이터 확인 -> 프로토콜
-> 비동기 방식 시리얼 통신의 예 - UART
시리얼 통신 비교
| UART | SPI | I2C |
---|
연결 방법 | 1:1 | 1:N | 1:N |
전송 방법 | full duplex | full duplex | half duplex |
데이터 연결선 | 2 | 2 | 1 |
동기 신호 연결선 | - | 1 | 1 |
제어 연결선 | - | 1 | - |
총 연결선 | 2 | 4 | 2 |
N개 슬레이브 연결선 | 2N | 3+N | 2 |
특징 | 속도는 빠르지만 채널수 늘어남 | 속도는 빠르지만 채널수 늘어남 | 많은 기기 연결할때 유리, 전송속도는 느림 |
MCU를 위한 프로그램
- 개발 프로그램: MCU에서 실행될 프로그램 개발하는 컴퓨터
-> 아두이노의 경우 스케치가 동작하는 PC
- 교차 컴파일러 : High level 언어 -> Low level 언어로 변환, MCU에서 실행될 기계어 파일 생성
-> 아두이노의 경우 스케치가 개발 언어 겸 컴파일러 역할
- 목적 시스템 : 개발된 프로그램이 실행되는 환경 - HEXA file, firmware가 다운로드 되는 위치
-> 아두이노의 경우 UNO 보드
- 프로그램 업로드 : 개발 시스템 -> 목적 시스템으로 프로그램 이동 및 설치
MCU를 사용하는 이유
case 1) MCU 없이 하드웨어로만 구현
case 2) MCU를 사용해서 하드웨어 + 소프트웨어로 구현
- 전력 소모량이 줄어든다
- 비용의 절감 & 편의성 증가
- MCU 가격의 하락으로 소형화, 경량화, 초기 개발 시간 단축, 유지보수 비용 절감
아두이노 우노
ATmega328
- ATmega328 : MCU
PIN map
특징
- 부품에 대한 data sheet을 참고한다.
AVR
: ATmega328를 포함하는 MCU 시리즈 -> 8bit, RISC 구조
아두이노 우노
: ATmega328를 이용해서 만들어진 MCU 보드
-> ATmega328를 쉽게 쓰기 위해서 주로 사용하는 기능을 라이브러리화
구성
컴퓨터의 메모리
-> MCU의 HEXA 파일은 메모리에 저장
: power 공급시 memory 저장 순서대로 프로그램 실행
메모리의 종류
- 하드디스크 : 프로그램 설치 및 저장
- 메인 메모리 : 프로그램 실행 중 프로그램 저장 & 결과 데이터 저장
- 레지스터 : MCU의 기능 제어용 메모리
- CPU 내부의 메모리
- 프로그램 실행 직전 프로그램 저장 & 실행 직후 결과 저장
데스크탑과 ATmega 328 메모리
| | 데스크탑 컴퓨터 메모리 | ATmega 328의 메모리 |
---|
프로그램 메모리 | 프로그램이 설치되는 메모리 | 하드디스크 | 플래시 메모리 -> 비휘발성 |
| 프로그램이 실행되는 메모리 | DRAM | 플래시 메모리 -> 비휘발성 |
데이터 메모리 | 연산 결과가 임시 저장되는 메모리 | DRAM | SRAM -> 휘발성 |
| 연산 결과가 영구 저장되는 메모리 | 하드디스크 | EEPROM -> 비휘발성 |
- EEPROM : 전기 신호로 바이트 단위의 읽기와 쓰기 가능
- 플래시 메모리 : EEPROM의 변형 -> 블록 단위의 쓰기 가능
-> 읽기에 최적화된 NOR형과 쓰기에 최적화된 NAND형(SSD에 사용)이 있다.
-
DRAM과 SRAM | DRAM | SRAM |
---|
기반 | capacitor | flipflop |
전원 공급시 | 내용 유지 x | 내용 유지됨 |
읽기/쓰기 속도 | 느림 | 빠름 |
리프레쉬 | 필요 | 필요 x |
가격 | 저렴 | 비쌈 |
ATmega 328 메모리 구조