마이크로컨트롤러

마이크로컨트롤러(microcontroller) 또는 MCU(microcontroller unit)는 마이크로프로세서와 입출력 모듈을 하나의 칩으로 만들어 정해진 기능을 수행하는 컴퓨터를 말한다.

CPU 코어, 메모리 그리고 프로그램 가능한 입/출력으로 구성되어 있다.  NOR 플래시 메모리, EPROM 그리고 OTP ROM등의 메모리를 가지고 있어 정해진 기능을 수행하도록 프로그래밍 코딩하고 이 기계어 코드를 써 넣는다. 기계어 코드가 실행되기 위한 변수나 데이터 저장을 위해 적은 용량의 SRAM을 가지고 있다. 기타 칩에 따라 EEPROM을 내장하기도 한다.

MCU는 임베디드 애플리케이션을 위해 디자인되었으며 임베디드 시스템에 널리 사용된다. 개인용 컴퓨터가 다양한 요구에 따라 동작하는 일반적인 일에 사용된다면, MCU는 기능을 설정하고 정해진 일을 수행하도록 프로그래밍되어 장치 등에 장착되어 동작한다. 따라서 일반적으로 성능이 PC에 비해 낮고 형상도 다르다. 한 번 프로그래밍하면 코드를 나중에 바꿀 일이 거의 없기 때문에 냉장고, 전자레인지 등의 기기에 사용된다.

역사 
최초의 마이크로프로세서는 1971년 출시된 4비트 인텔 4004로 인텔 8088 및 그 밖의 기능이 더 많은 마이크로프로세서가 이후 수년에 걸쳐 이용이 가능하게 되었다. 그러나 두 프로세서 모두 작동 시스템을 구현하기 위해 외장 칩이 필요했고, 이는 전체 시스템 비용을 증가시켰다.

스미스소니언 협회는 TI의 엔지니어 게리 분(Gary Boone)과 마이클 코치란(Michael Cochran)을 1971년 최초의 마이크로컨트롤러를 성공적으로 만든 것으로 평가하였다. 이들의 노고의 결과물은 TMS 1000으로, 1974년에 상용화되었다. 읽기 전용 메모리, 읽기/쓰기 메모리, 프로세서, 클럭을 한 칩에 합쳤고 임베디드 시스템에 목표를 두었다.

특징 
일부 MCU들은 4KHz이하의 낮은 clock rate에서 동작되며 8비트 ADC/DAC를 가지며 매우 저전력(수mW~수uW)에서 동작한다. 대부분의 MCU들은 기본적인 연산기능과 인터럽트 기능을 가지고 있으며 유휴 상태에서는 수nW의 전력밖에 사용하지 않는다. 이러한 특징으로 인해 저용량의 배터리로 오랜 시간 지속되어야 하는 전자기기에 많이 쓰인다. 대표적인 예로 전자 손목시계가 있다.

응용 
MCU는 자동적으로 제품이나 장치를 컨트롤 하는데 사용된다. 그 예로 오토모바일 엔진 컨트롤 시스템, 체내 주입식 혹은 휴대용 의료기기, 리모콘, 프린터 등의 사무기기, 파워서플라이, 장난감 등이 있다. 마이크로프로세서, 메모리, 입/출력 등의 기능을 하나의 칩 위에 구현한 MCU는 제품을 소형화 하거나 단가를 낮추는데 유용하기에 디지털로 제어되는 제품을 만들 때 산업용으로도 많이 쓰인다. ADC와 DAC를 포함한 경우에는 아날로그 입/출력을 가진 시스템에서도 사용될 수 있다.

제품군 
다양한 종류의 칩과 여러 회사들이 마이크로컨트롤러를 생산 판매하고 있다. 같은 계열의 제품이라도 적용 시 요구되는 사양이 다양하고, 구현하는 기능도 다양하다. 따라서 같은 제품군이라고 하더라도 다양한 모델이 출시되고 있다.

마이크로컨트롤러 제품군 :
 8051
 AVR 시리즈
 PIC
 ARM

마이크로컨트롤러 구성 요소 
마이크로컨트롤러는 CPU 코어 뿐만 아니라, 컴퓨터 시스템에 필요한 다양한 기능이 필요하므로 여러 가지 부가적인 입출력 모듈이 필요하다.

 타이머
 UART, RS-232
 SPI
 I²C
 ADC
 CAN 버스

마이크로컨트롤러 프로그래밍 
마이크로컨트롤러로 특정 기능을 구현하기 위한 프로그래밍은 대부분의 전용 개발도구를 사용한다.

IAR Embedded Workbench 

많은 마이크로컨트롤러의 개발도구를 제공한다.

 ARM
 Renesas
 ST: STM8, 32비트
 TI: MSP430, TM4Cx
 NXP: S08, S12, ColdFire
 Mircochip AVR: AVR8, AVR32
 Silicon Labs
 Cypress ARM
 Toshiba ARM

78K, 8051, ARM, AVR, AVR32, CR16C, Coldfire, H8, HCS12, M16C, M32C, MSP430, Maxim MAXQ, R32C, R8C, RH850, RL78, RX, S08, SAM8, STM8, SuperH, V850.

ARM 코어 지원: ARM7 / ARM9 / ARM10 / ARM11, Cortex M0 / M0+ / M1 / M3 / M4 / M7 / M23 / M33, Cortex R4 / R5 / R7, Cortex A5 / A7 / A8 / A9 / A15 / A17.

소형소자 C 컴파일러 

SDCC 배포처

지원 MCU

 인텔 8051과 파생.
 자일로그 자일로그 Z80과 eZ80과 같은 이진 호환.
 자일로그 Z180.
 Rabbit 2000과  Rabbit 3000과 같은 이진 파생.
 Rabbit 3000A과 Rabbit 4000과 같은 파생.
 샤프 LR35902.
 프리스케일 세미컨덕터 (모토로라) HC08.
 프리스케일 세미컨덕터 S08.
 ST마이크로일렉트로닉스 STM8.
 도시바 TLCS-90.

Microchip MPLAB  

IDE
 MPLAB X IDE
 MPLAB Xpress
 Atmel Studio

컴파일러
 MPLAB XC
 AVR GCC
 ARM GCC

같이 보기 
 임베디드 시스템
 마이크로아키텍처

각주

외부 링크 

 

 
중앙 처리 장치
디지털 전자공학