마이크로컨트롤러

Microcontroller
인텔 8742의 다이, 12MHz, 128바이트RAM, 2048바이트의 EPROM 및 I/O를 같은 칩에 탑재한8비트 마이크로 컨트롤러
AT메가 마이크로컨트롤러x 2

마이크로컨트롤러(마이크로컨트롤러 유닛의 MCU)는 단일 VLSI 집적회로(IC) 칩 상의 소형 컴퓨터입니다.마이크로컨트롤러는 메모리 및 프로그램 가능한 입출력 주변기기와 함께 1개 이상의 CPU(프로세서 코어)를 포함한다.강유전체 RAM, NOR 플래시 또는 OTP ROM 형태의 프로그램 메모리도 소량의 RAM과 함께 칩에 포함되어 있는 경우가 많습니다.마이크로컨트롤러는 개인용 컴퓨터 또는 다양한 개별 칩으로 구성된 기타 범용 애플리케이션에 사용되는 마이크로프로세서와는 달리 임베디드 애플리케이션용으로 설계되었습니다.

현대 용어로는 마이크로컨트롤러는 시스템온칩(SoC)과 비슷하지만 복잡하지는 않습니다.SoC는 외부 마이크로컨트롤러 칩을 메인보드 컴포넌트로서 접속하는 경우가 있습니다만, 통상, SoC는 그래픽 처리 유닛(GPU)이나 Wi-Fi 인터페이스 컨트롤러등의 고도의 주변기기를 내장 마이크로컨트롤러 유닛 회로로서 내장하고 있습니다.

마이크로컨트롤러는 자동차 엔진 제어 시스템, 이식형 의료 기기, 리모트 컨트롤, 사무용 기계, 어플라이언스, 전동 공구, 완구 및 기타 임베디드 시스템과 같이 자동으로 제어되는 제품과 장치에 사용됩니다.마이크로컨트롤러는 별도의 마이크로프로세서, 메모리 및 입출력 장치를 사용하는 설계에 비해 크기와 비용을 절감함으로써 더 많은 장치와 프로세스를 디지털 방식으로 제어할 수 있습니다.혼합 신호 마이크로 컨트롤러는 비디지털 전자 시스템을 제어하는 데 필요한 아날로그 구성 요소를 통합하는 것이 일반적입니다.사물 인터넷의 맥락에서 마이크로 컨트롤러는 데이터 수집의 경제적이고 인기 있는 수단이며, 물리적 세계를 감지하고 에지 장치로 작동합니다.

일부 마이크로 컨트롤러는 4비트 워드를 사용하여 낮은 전력 소비량(한 자리 밀리와트 또는 마이크로와트)을 위해 4kHz의 저주파수로 작동합니다.일반적으로 버튼 누름이나 기타 인터럽트 등의 이벤트를 기다리는 동안에도 기능을 유지할 수 있습니다.수면시의 소비 전력(CPU 클럭이나 대부분의 주변기기가 꺼짐)은 나노와트에 불과하기 때문에, 장시간 지속되는 배터리 애플리케이션에 매우 적합합니다.다른 마이크로컨트롤러는 퍼포먼스에 중요한 역할을 할 수 있습니다.이 경우 DSP(디지털 신호 프로세서)와 같은 기능을 하며 클럭 속도와 소비전력을 높일 필요가 있습니다.

역사

배경

최초의 멀티칩 마이크로프로세서인 1969년의 4상 시스템 AL1과 1970년의 Garrett AiResearch MP944는 여러 개의 MOS LSI 칩으로 개발되었습니다.최초의 싱글칩 마이크로프로세서는 인텔 4004로 1971년 단일 MOS LSI 으로 출시되었습니다.Federico Faggin은 실리콘 게이트 MOS 기술을 사용하여 인텔 엔지니어 Marcian Hoff 및 Stan Mazor, Busicom 엔지니어 마사토시 [1]시마와 함께 개발했습니다.그 뒤를 4비트 인텔 4040, 8비트 인텔 80088비트 인텔 8080이 잇고 있습니다.이들 프로세서는 모두 메모리나 주변기기 인터페이스 칩을 포함한 몇 개의 외부 칩을 필요로 했습니다.그 결과, 총 시스템 비용은 수백 달러(1970년대 미국 달러)가 되어, 소형 어플라이언스를 경제적으로 전산화 할 수 없었습니다.

MOS Technology는 1975년에 100달러 미만의 마이크로프로세서인 6501과 6502를 출시했습니다.그들의 주요 목표는 이 비용 장벽을 줄이는 것이었지만, 이러한 마이크로프로세서는 여전히 외부 지원, 메모리 및 주변기기의 칩을 필요로 했고, 이로 인해 총 시스템 비용이 수백 달러에 달했습니다.

발전

한 책은 1971년 최초의 마이크로컨트롤러를 성공적으로 개발한 공로를 TI 엔지니어 Gary Boone과 Michael Cochran에게 돌리고 있다.그 결과 TMS 1000이 1974년에 상용화되었습니다.읽기 전용 메모리, 읽기/쓰기 메모리, 프로세서 및 클럭을 1개의 칩으로 조합하여 임베디드 [2]시스템을 대상으로 했습니다.

1970년대 초중반 일본 전자업체들은 차내 엔터테인먼트용 4비트 MCU, 자동 와이퍼, 전자 잠금장치,[3] 대시보드용 8비트 MCU 등 자동차용 마이크로컨트롤러를 생산하기 시작했다.

인텔은 싱글칩 [4]TMS 1000의 존재에 대응하여 컨트롤 어플리케이션에 최적화된 칩을 탑재한 컴퓨터 시스템 인텔8048을 개발하여 1977년에 [4]상용 부품을 최초로 출하했습니다.RAM과 ROM을 같은 칩에 마이크로프로세서와 결합했다.수많은 애플리케이션 중에서 이 칩은 결국 10억 개 이상의 PC 키보드에 사용될 것이다.당시 인텔의 사장 Luke J. Valenter는 마이크로컨트롤러는 회사 역사상 가장 성공적인 제품 중 하나이며 마이크로컨트롤러 부문의 예산을 25% 이상 늘렸다고 말했습니다.

당시 대부분의 마이크로 컨트롤러는 동시 변형을 가지고 있었습니다.하나는 EPROM 프로그램 메모리를 탑재하고 있으며, 패키지 뚜껑에는 자외선에 노출되어 지워질 수 있도록 투명한 석영 창이 있습니다.이러한 소거 가능한 칩은 프로토타이핑에 자주 사용되었습니다.다른 변종은 마스크 프로그래밍된 ROM 또는 한 번만 프로그래밍 가능한 PROM 변종입니다.후자의 경우 "One-time Programmable"을 의미하는 OTP라는 명칭이 사용되기도 했습니다.OTP 마이크로컨트롤러에서는 통상 EPROM과 같은 타입이었지만 칩 패키지에는 석영창이 없었습니다.EPROM을 자외선에 노출시킬 방법이 없었기 때문에 지울 수 없었습니다.소거 가능한 버전은 석영 창이 있는 세라믹 패키지가 필요했기 때문에, 저렴한 불투명 플라스틱 패키지로 만들 수 있는 OTP 버전보다 훨씬 더 비쌌다.소거 가능한 변형 모델의 경우, 유리가 대부분 불투명한 자외선에 대한 투명성을 위해 저렴한 유리 대신 석영이 필요했지만, 주요 비용 차별화 요인은 세라믹 패키지 자체였습니다.

1993년, EEPROM메모리의 도입. 이런으로 소거 프로그램 가능 ROM에 필요한 전기적으로 빠르게 비싼 패키지 없이 지워질(그 Microchip PIC16C84을 시작으로)[5], 둘 다 원형화, 그리고in-system 프로그래밍을 허락한다.(사용한 기술은 이 사건 이전 time,[6]지만 이전의 EEPROM을 더 볼 수 있어 와 있었어. expensive와 내구성이 떨어지기 때문에 저비용 대량 생산 마이크로 컨트롤러에는 적합하지 않습니다.같은 해, Atmel은 EEPROM의 [7]특수한 타입인 플래시 메모리를 사용한 최초의 마이크로 컨트롤러를 발표했습니다.다른 회사들은 두 가지 메모리 유형을 모두 가지고 빠르게 그 뒤를 따랐습니다.

오늘날 마이크로컨트롤러는 가격이 저렴하고 취미생활자가 쉽게 이용할 수 있으며, 특정 프로세서 주위에 대규모 온라인 커뮤니티가 있습니다.

볼륨과 비용

2002년에는 전 세계에서 판매되는 CPU의 약 55%가 8비트 마이크로컨트롤러와 [8]마이크로프로세서였습니다.

1997년에는 [9]8비트 마이크로컨트롤러가 20억대 이상 판매되었으며,[10] Semico에 따르면 2006년에는 40억대 이상의 8비트 마이크로컨트롤러가 판매되었습니다.최근 Semico는 MCU 시장이 2010년에 36.5%, [11]2011년에 12% 성장했다고 주장했습니다.

선진국의 전형적인 가정에는 범용 마이크로프로세서가 4개밖에 없지만 마이크로컨트롤러는 약 30개 정도 있습니다.전형적인 중형차 한 대에는 약 30개의 마이크로컨트롤러가 있다.그것들은 세탁기, 전자레인지, 전화기와 같은 많은 전기 기기에서도 발견될 수 있다.

지금까지 8비트 세그먼트는 MCU 시장을 지배해 왔습니다[..] 16비트 마이크로컨트롤러는 2011년에 가장 큰 규모의 MCU 카테고리가 되었습니다.그 해 처음으로 8비트 디바이스를 제치고 [..] IC Insights는 향후 5년간 MCU 시장의 구성에 큰 변화가 있을 것으로 전망하고 있습니다.판매량 및 단위 수량 점유율.2017년까지 32비트 MCU가 마이크로컨트롤러 매출의 55%를 차지할 것으로 예상[..] 2017년에는 32비트 MCU가 마이크로컨트롤러 출하량의 38%를 차지할 것으로 예상되며, 16비트 디바이스가 전체의 34%를 차지할 것으로 예상되며, 4-8비트 설계는 그 해 판매량의 28%를 차지할 것으로 예상됩니다.임베디드 프로세싱 시스템의 정밀도 향상과 인터넷을 이용한 접속의 증가로 인해 32비트 MCU 시장은 빠르게 성장할 것으로 예상됩니다.[..] 앞으로 몇 년 안에 복잡한 32비트 MCU가 차량 처리 능력의 25% 이상을 차지할 것으로 예상됩니다.

--

제조원가는 유닛당 미화 0.10달러 미만일 수 있습니다.

2018년에는 가장 저렴한 [13]8비트 마이크로컨트롤러가 0.03달러 미만으로 출시되었으며, 일부 32비트 마이크로컨트롤러는 비슷한 수량으로 1달러 미만으로 출시되었습니다.

2012년 글로벌 위기(연간 매출 감소 및 복구, 연평균 판매 가격 17% 급락) 이후 1980년대 이후 가장 큰 폭의 하락세를 보인 마이크로 컨트롤러의 평균 가격은 0.88달러(4/8비트의 경우 0.69달러, 16비트의 경우 0.59달러, [12]32비트의 경우 1.76달러)였습니다.

2012년 8비트 마이크로컨트롤러의 전 세계 매출은 약 40억 달러였으며, 4비트 마이크로컨트롤러도 상당한 [14]매출을 기록했습니다.

2015년에는 8비트 마이크로 컨트롤러가 미화 0.311달러(1,000대),[15][16] 16비트가 0.385달러(1,000대), 32비트가 0.378달러(1,000대)[17] 구입할 수 있었습니다.

2018년에는 8비트 마이크로 컨트롤러가 미화 0.03달러,[13] 16비트가 미화 0.393달러(1,000대,[18] 100대, 전체 릴이 미화 0.349달러), 32비트가 미화 0.503달러(1,000대,[19] 5,0006.46달러)에 구입할 수 있었습니다.

2018년에서 2015년에서 위의 값싼 이런 모두 더 비싼(인플레이션과 함께 2018년과 2015년 가격 간의 구체적인 단위를 위해 계산된):8비트 microcontroller달러 0.319달러를 살 수 있었다(1000대)이나 2.6%higher,[15]16비트 1달러 0.464에(1000대)또는 21%higher,[16]과 미화 0.503(의 32비트다.1,000un단, 5,000달러는 0.466달러입니다.또는 33% [17]더 높습니다.

80핀 TQFP 패키지의 PIC 18F8720 마이크로컨트롤러

최소 컴퓨터

2018년 6월 21일, 미시간 대학에서 "세계에서 가장 작은 컴퓨터"가 발표되었습니다. 장치는 0.04mm16nW3 무선 배터리리스 센서 시스템으로 세포 온도 측정용 Cortex-M0+ 프로세서와 광통신이 통합되어 있다."쌀 한 톨에 의해 축척된 사이드의 크기는 0.3mm에 불과합니다." [...] RAM과 태양광 발전 외에 새로운 컴퓨팅 장치에는 프로세서와 무선 송신기 및 수신기가 탑재되어 있습니다.기존 무선 안테나를 갖기엔 너무 작기 때문에 가시광선으로 데이터를 송수신한다.기지국은 전력과 프로그래밍을 위한 빛을 제공하고 데이터를 [20]수신합니다."디바이스는2018년 [21]3월 IBM이 "소금 한 알보다 작은"[22] 트랜지스터를 백만 개 보유하고 제조 비용이 0.10달러 미만이며, 블록 체인 기술과 결합되어 물류 및 "크립토 앵커"[23] 디지털 지문 애플리케이션용 컴퓨터의 10분의 1 크기입니다.

임베디드 설계

마이크로컨트롤러는 프로세서, 메모리 및 주변기기를 갖춘 독립형 시스템으로 간주되며 임베디드 [24]시스템으로 사용할 수 있습니다.오늘날 사용되는 마이크로 컨트롤러의 대부분은 자동차, 전화, 어플라이언스 및 컴퓨터 시스템용 주변기기 등 다른 기계에 내장되어 있습니다.

일부 임베디드 시스템은 매우 정교하지만 많은 임베디드 시스템은 운영체제를 사용하지 않고 최소한의 메모리 및 프로그램 길이를 필요로 하며 소프트웨어의 복잡성도 낮습니다.일반적인 입출력 장치에는 스위치, 릴레이, 솔레노이드, LED, 소형 또는 맞춤형 액정 디스플레이, 무선 주파수 장치 및 온도, 습도, 조도 등의 데이터 센서가 포함됩니다.임베디드 시스템에는 보통 키보드, 화면, 디스크, 프린터 또는 PC의 인식 가능한 기타 I/O 디바이스가 없으며, 어떠한 종류의 인간 상호작용 장치도 없을 수 있습니다.

인터럽트

마이크로컨트롤러는 제어하고 있는 임베디드 시스템의 이벤트에 대해 실시간(예측 가능한 것은 아니지만 빠른 것은 아닙니다) 응답을 제공해야 합니다.특정 이벤트가 발생했을 때, 인터럽트 시스템은 프로세서에 현재의 명령 시퀀스의 처리를 정지하고, 원래의 명령 시퀀스로 돌아가기 전에 인터럽트의 소스에 근거해 필요한 처리를 실행하는 인터럽트 서비스 루틴(ISR, 또는 「인터럽트 핸들러」)을 개시하도록 신호를 보낼 수 있습니다.가능한 인터럽트 소스는 디바이스에 의존하며, 내부 타이머 오버플로, 아날로그-디지털 변환 완료, 버튼 누름 등의 입력 논리 레벨 변경 및 통신 링크에서 수신된 데이터 등의 이벤트를 포함하는 경우가 많다.배터리 디바이스와 같이 소비전력이 중요한 경우, 인터럽트에 의해서 마이크로 컨트롤러가 저전력 sleeve 상태로부터 기동하는 일이 있습니다.이 상태에서는 프로세서가 정지되어 주변기기의 이벤트에 의해서 어떠한 조작이 필요하게 됩니다.

프로그램

시스템에 확장 가능한 외장 메모리를 제공하려면 비용이 많이 들기 때문에 일반적으로 마이크로 컨트롤러 프로그램은 사용 가능한 온칩 메모리에 맞춰야 합니다.컴파일러와 어셈블러는 마이크로컨트롤러의 메모리에 저장하기 위해 높은 수준의 코드와 어셈블리 언어 코드를 모두 콤팩트 머신 코드로 변환하기 위해 사용됩니다.디바이스에 따라서는, 프로그램 메모리는 공장에서 프로그램 할 수 있는 영속적인 읽기 전용 메모리이거나, 필드 변경 가능한 플래시 또는 소거 가능한 읽기 전용 메모리일 수 있습니다.

제조업체들은 대상 시스템의 하드웨어 및 소프트웨어 개발을 지원하기 위해 마이크로 컨트롤러의 특별한 버전을 종종 생산해 왔습니다.원래는 프로그램 메모리를 자외선으로 지울 수 있는 "윈도"가 장치 상단에 있는 EPROM 버전이 포함되어 프로그래밍("굽기") 및 테스트 사이클 후에 다시 프로그래밍할 수 있습니다.1998년 이후 EPROM 버전은 드물고 EEPROM 및 플래시로 대체되었습니다.이러한 버전은 사용하기 쉽고(전자적으로 지울 수 있음), 제조 비용이 저렴합니다.

ROM에 내장 메모리가 아닌 외부 장치로 액세스하는 다른 버전도 있지만 저렴한 마이크로컨트롤러 프로그래머가 널리 보급됨에 따라 이러한 버전은 드물어지고 있습니다.

마이크로 컨트롤러에서 필드 프로그래머블 디바이스를 사용하면 펌웨어의 필드 업데이트가 가능하거나 조립되었지만 아직 출하되지 않은 제품에 대한 공장 출고가 늦어질 수 있습니다.또한 프로그래머블 메모리를 통해 신제품 도입에 필요한 리드 타임을 단축할 수 있습니다.

수십만 개의 동일한 장치가 필요한 경우, 제조 시 프로그래밍된 부품을 사용하는 것이 경제적입니다.이러한 "마스크 프로그래밍된" 부품은 프로그램을 칩의 로직과 동일한 방식으로 동시에 배치합니다.

커스터마이즈된 마이크로 컨트롤러에는 디지털 로직 블록이 포함되어 있어 애플리케이션 요건에 적합한 처리 능력, 주변기기인터페이스를 추가할 수 있습니다.를 들어 Atmel의 AT91CAP이 있습니다.

기타 마이크로컨트롤러 기능

마이크로컨트롤러에는 보통 몇 개에서 수십 개의 범용 입출력 핀(GPIO)이 포함되어 있습니다.GPIO 핀은 소프트웨어에서 입력 또는 출력 상태로 구성할 수 있습니다.GPIO 핀이 입력 상태로 구성된 경우 센서 또는 외부 신호를 읽는 데 자주 사용됩니다.출력 상태로 구성된 GPIO 핀은 외부 전원 전자 장치를 통해 LED나 모터 등의 외부 장치를 간접적으로 구동할 수 있습니다.

많은 임베디드 시스템은 아날로그 신호를 생성하는 센서를 읽어야 합니다.이것이 Analog-to-Digital Converter(ADC; 아날로그 디지털컨버터)의 목적입니다.프로세서는 디지털 데이터(예: 1s 및 0s)를 해석 및 처리하도록 설계되어 있기 때문에 디바이스에 의해 송신되는 아날로그 신호로는 아무것도 할 수 없습니다.따라서 아날로그-디지털 변환기는 수신 데이터를 프로세서가 인식할 수 있는 형태로 변환하는 데 사용됩니다.일부 마이크로 컨트롤러에서는 프로세서가 아날로그 신호 또는 전압 레벨을 출력할 수 있는 DAC(Digital-to-Analog Converter) 기능이 그다지 일반적이지 않습니다.

컨버터 외에도 많은 내장 마이크로프로세서에는 다양한 타이머가 포함되어 있습니다.가장 일반적인 유형의 타이머는 Programmable Interval Timer(PIT; 프로그래머블인터벌타이머)입니다PIT는 일부 값에서 0으로 카운트다운하거나 카운트 레지스터의 용량까지 카운트다운하여 0으로 오버플로우할 수 있습니다.0이 되면 카운트가 종료되었음을 나타내는 인터럽트를 프로세서에 송신합니다.이 기능은 에어컨을 켜거나 끌 필요가 있는지, 히터를 켜거나 끌 필요가 있는지 확인하기 위해 주변의 온도를 주기적으로 테스트하는 온도 조절기 등의 장치에 유용합니다.

전용 펄스변조(PWM) 블록에 의해 CPU는 엄격한 타이머 루프에서 많은 CPU 리소스를 사용하지 않고 전력 변환기, 저항 부하, 모터 등을 제어할 수 있습니다.

범용 비동기 리시버/송신기(UART) 블록은 CPU 부하가 거의 없는 시리얼 회선을 통해 데이터를 송수신 할 수 있습니다.전용 온칩 하드웨어에는 I²C(Inter-Integrated Circuit), 시리얼 페리페럴 인터페이스(Serial Peripheral Interface) 등의 디지털 형식으로 다른 디바이스(칩)와 통신하는 기능도 포함되어 있습니다.PI), USB(Universal Serial Bus) 및 이더넷.[25]

고도의 통합

PIC12C508 8비트 완전 정적 EEPROM/EPROM/ROM 기반 CMOS 마이크로 컨트롤러의 다이(1200나노미터 프로세스 사용)
STM32F100C4의 다이16킬로바이트 플래시 메모리, 24MHz 중앙처리장치(CPU), 모터 제어 및 CEC(Consumer Electronics Control) 기능을 갖춘 T6B ARM Cortex-M3 마이크로 컨트롤러.STMicroelectronics에 의해 제조됩니다.

마이크로 컨트롤러는 CPU와 같은 칩에 RAM과 비휘발성 메모리를 내장하고 있기 때문에 외부 주소나 데이터 버스를 실장할 수 없습니다.더 적은 핀을 사용하면 칩을 훨씬 작고 저렴한 패키지에 넣을 수 있습니다.

메모리 및 기타 주변기기를 1개의 칩에 내장하여 하나의 유닛으로 테스트하면 칩의 비용은 증가하지만 임베디드 시스템 전체의 순비용은 감소하는 경우가 많습니다.내장 주변기기를 탑재한 CPU의 비용이 CPU 및 외장 주변기기의 비용보다 약간 높은 경우에도 칩이 적으면 일반적으로 회로기판의 조립과 테스트에 필요한 수고를 줄일 수 있습니다.또한 완성된 어셈블리의 불량률을 감소시키는 경향이 있습니다.

마이크로 컨트롤러는 단일 집적회로이며 일반적으로 다음 기능을 갖추고 있습니다.

이 통합은 칩의 수와 별도의 칩을 사용하여 동등한 시스템을 생산하는 데 필요한 배선 및 회로 기판 공간을 대폭 줄입니다.게다가 특히 핀 카운트가 적은 디바이스에서는, 각 핀이 소프트웨어에 의해서 선택된 핀 기능을 사용해 복수의 내부 주변기기와 인터페이스 할 수 있습니다.이를 통해 핀이 전용 기능을 가진 경우보다 더 다양한 용도로 부품을 사용할 수 있습니다.

마이크로 컨트롤러는 1970년대 도입된 이래 임베디드 시스템에서 매우 인기가 있는 것으로 입증되었습니다.

일부 마이크로컨트롤러에서는 명령과 데이터에 별도의 메모리 버스를 사용하여 동시에 액세스할 수 있습니다.Harvard 아키텍처를 사용하는 경우 프로세서의 명령어는 내장 메모리 및 레지스터의 길이와 다른 비트사이즈일 수 있습니다.예를 들어 8비트 데이터 레지스터에서 사용되는12비트 명령어입니다.

어떤 주변기기를 통합할지 결정하는 것은 어려운 경우가 많습니다.마이크로컨트롤러 벤더는 고객의 시장 투입 시간 요건과 전체적인 시스템 비용 절감에 대비하여 동작 주파수와 시스템 설계의 유연성을 거래하는 경우가 많습니다.제조업체는 칩 크기를 최소화할 필요성과 추가 기능의 균형을 맞춰야 합니다.

마이크로컨트롤러 아키텍처는 매우 다양합니다.일부 설계에는 범용 마이크로프로세서 코어가 포함되어 있으며 패키지에 1개 이상의 ROM, RAM 또는 I/O 기능이 내장되어 있습니다.다른 설계는 제어 애플리케이션용으로 제작되었습니다.마이크로컨트롤러 명령어 세트는 보통 제어 프로그램을 보다 [26]콤팩트하게 만들기 위해 비트 조작(비트 단위 조작)을 목적으로 하는 많은 명령어를 가지고 있습니다.예를 들어 범용 프로세서는 비트가 설정되어 있는 경우 레지스터 및 브랜치로 비트를 테스트하기 위해 여러 명령을 필요로 할 수 있습니다.여기서 마이크로 컨트롤러는 일반적으로 필요한 기능을 제공하는 단일 명령을 가질 수 있습니다.

마이크로컨트롤러에는 전통적으로 연산 코프로세서가 없기 때문에 부동소수점 연산은 소프트웨어에 의해 수행됩니다.그러나 최근 일부 설계에는 FPU 및 DSP에 최적화된 기능이 포함되어 있습니다.예를 들어 마이크로칩의 PIC32 MIPS 기반 라인이 있습니다.

프로그래밍 환경

마이크로컨트롤러는 원래 어셈블리 언어로만 프로그래밍되었지만, C, Python, JavaScript와 같은 다양고급 프로그래밍 언어도 마이크로컨트롤러와 임베디드 [27]시스템을 대상으로 공통적으로 사용되고 있습니다.범용 언어용 컴파일러에는 일반적으로 몇 가지 제한이 있을 뿐만 아니라 마이크로 컨트롤러의 고유한 특성을 보다 잘 지원하기 위한 확장도 있습니다.일부 마이크로 컨트롤러는 특정 유형의 애플리케이션 개발을 지원하는 환경을 갖추고 있습니다.마이크로컨트롤러 벤더는 하드웨어를 쉽게 도입할 수 있도록 툴을 자유롭게 사용할 수 있도록 하는 경우가 많습니다.

전용 하드웨어를 탑재한 마이크로 컨트롤러에는 8051용 SDCC독자적인 비표준 사투리가 필요할 수 있습니다.이것에 의해, 하드웨어 기능과 관련 없는 코드에서도 표준 툴(코드 라이브러리나 정적 분석 툴 등)을 사용할 수 없게 됩니다.인터프리터에는 MicroPython과 같은 비표준 기능이 포함될 수 있습니다(포크, 회선).Python은 하드웨어 종속성을 라이브러리로 옮기고 언어가 더 CPython 표준을 준수하도록 하는 방법을 모색하고 있습니다.

일부 마이크로 컨트롤러에서는 인터프리터 펌웨어도 사용할 수 있습니다.예를 들어 초기 마이크로컨트롤러 [28]인텔 8052에서는 BASIC, Zilog[29] Z8에서는 BASIC 및 FORRS 등 최신 디바이스입니다.일반적으로 이러한 인터프리터는 대화형 프로그래밍을 지원합니다.

일부 마이크로 컨트롤러에서는 시뮬레이터를 사용할 수 있습니다.이를 통해 개발자는 실제 부품을 사용할 경우 마이크로 컨트롤러와 프로그램의 동작을 분석할 수 있습니다.시뮬레이터는 내부 프로세서 상태 및 출력 상태를 보여주며 입력 신호를 생성할 수 있습니다.한편으로 대부분의 시뮬레이터는 시스템 내의 다른 많은 하드웨어를 시뮬레이션할 수 없는 것이 제한되지만 물리적인 구현에서는 자유롭게 재현하기 어려운 조건을 실행할 수 있으며 문제를 디버깅하고 분석하는 가장 빠른 방법이 될 수 있습니다.

최근의 마이크로 컨트롤러는 많은 경우 온칩 디버깅 회로와 통합되어 있으며, 이 회로 내 에뮬레이터(ICE)에 의해 JTAG 경유로 액세스 하면 디버거를 사용하여 펌웨어를 디버깅할 수 있습니다.실시간 ICE를 사용하면 실행 중 내부 상태를 보거나 조작할 수 있습니다.추적 ICE는 트리거 포인트 전후의 실행 프로그램 및 MCU 상태를 기록할 수 있습니다.

종류들

2008년 현재, 다음과 같은 수십 개의 마이크로 컨트롤러 아키텍처와 벤더가 있습니다.

그 밖에도 매우 좁은 범위에서 사용되고 있거나 마이크로 컨트롤러라기보다는 애플리케이션 프로세서에 가까운 것도 있습니다.마이크로컨트롤러 시장은 수많은 벤더, 테크놀로지 및 시장으로 매우 세분화되어 있습니다.많은 벤더가 여러 아키텍처를 판매하거나 판매한 적이 있습니다.

인터럽트 레이텐시

범용 컴퓨터와 달리 임베디드 시스템에 사용되는 마이크로 컨트롤러는 명령 처리량보다 인터럽트 지연을 최적화하려고 하는 경우가 많습니다.문제는 지연 시간을 단축하고 예측 가능성을 높이는 것입니다(실시간 제어 지원).

전자 장치가 인터럽트를 일으킨 경우 컨텍스트 전환 에 인터럽트 처리를 담당하는 소프트웨어를 실행하기 전에 중간 결과(레지스터)를 저장해야 합니다.인터럽트 핸들러가 종료된 후에 복원해야 합니다.프로세서 레지스터가 많을 경우 이 저장 및 복원 프로세스에 시간이 더 걸리고 지연이 증가할 수 있습니다(ISR에서 일부 레지스터를 사용할 필요가 없는 경우 레지스터를 저장 및 복원하는 대신 그대로 둘 수 있으므로 이 경우 레지스터는 지연에 관여하지 않습니다).이러한 콘텍스트/복원 레이텐시를 줄이는 방법에는 중앙처리장치에 레지스터가 비교적 적거나(대부분의 무정전처리를 상당히 느리게 하기 때문에 바람직하지 않음), 적어도 하드웨어가 그것들을 모두 저장하지 않는 것(소프트웨어가 나머지를 "수동적으로" 저장함으로써 보정해야 하는 경우 실패) 등이 있습니다.또 다른 기술은 실리콘 게이트를 "섀도 레지스터"에 사용하는 것입니다.인터럽트 소프트웨어에 의해서만 사용되는1개 또는 복수의 중복 레지스터. 전용 스택을 서포트하고 있을 가능성이 있습니다.

인터럽트 지연에 영향을 주는 기타 요인은 다음과 같습니다.

  • 현재 CPU 작업을 완료하는 데 필요한 주기입니다.이러한 비용을 최소화하기 위해 마이크로컨트롤러는 짧은 파이프라인(3개의 명령 이하)과 작은 쓰기 버퍼를 가지며 긴 명령을 계속 또는 재시작할 수 있도록 하는 경향이 있습니다.RISC 설계 원칙은 대부분의 명령이 동일한 사이클 수를 소요하므로 대부분의 경우 이러한 연속/재시작 로직이 필요하지 않습니다.
  • 중단해야 하는 중요한 섹션의 길이입니다.중요 섹션에 입력하면 데이터 구조 동시 액세스가 제한됩니다.인터럽트 핸들러가 데이터 구조에 액세스 할 필요가 있는 경우, 크리티컬섹션은 그 인터럽트를 차단해야 합니다.따라서 인터럽트가 차단되는 시간만큼 인터럽트 지연이 증가합니다.시스템 지연에 대한 외부 제약이 심한 경우 개발자는 인터럽트 지연을 측정하고 속도 저하의 원인이 되는 중요한 부분을 추적하기 위한 도구를 필요로 하는 경우가 많습니다.
    • 일반적인 방법 중 하나는 크리티컬섹션 기간 동안 모든 인터럽트를 차단하는 것입니다.이는 구현이 쉽지만 중요한 섹션이 불편할 정도로 길어질 수 있습니다.
    • 더 복잡한 기술은 해당 데이터 구조에 대한 액세스를 트리거할 수 있는 인터럽트만 차단합니다.이것은 인터럽트 우선순위에 근거하는 경우가 많아 관련 시스템 데이터 구조에 잘 대응하지 않는 경향이 있습니다.따라서 이 기술은 주로 매우 제한된 환경에서 사용됩니다.
    • 프로세서는, 일부의 중요한 부분에 대해서 하드웨어가 서포트되고 있는 경우가 있습니다.예를 들어 단어 내의 비트 또는 바이트에 대한 원자 액세스 지원 또는 ARMv6 아키텍처에 도입된 LDREX/STREX 배타적 액세스 프리미티브와 같은 기타 원자 액세스 프리미티브 지원 등이 있습니다.
  • 인터럽트 네스트일부 마이크로 컨트롤러에서는 우선순위가 높은 인터럽트가 우선순위가 낮은 인터럽트를 인터럽트할 수 있습니다.이를 통해 소프트웨어는 시간 크리티컬 인터럽트에 덜 중요한 인터럽트보다 더 높은 우선순위를 부여함으로써 지연 시간을 관리할 수 있습니다(따라서 더 낮고 예측 가능한 지연 시간).
  • 트리거 레이트인터럽트가 백 투 백으로 발생하는 경우 마이크로 컨트롤러는 테일콜 최적화 형식으로 컨텍스트 저장/복원 사이클을 추가로 회피할 수 있습니다.

로우엔드 마이크로컨트롤러는 하이엔드 마이크로컨트롤러보다 인터럽트 레이텐시 제어를 적게 지원하는 경향이 있습니다.

메모리 테크놀로지

마이크로컨트롤러에는 펌웨어 저장용 비휘발성 메모리와 임시 데이터 읽기/쓰기 메모리의 두 가지 다른 종류의 메모리가 일반적으로 사용됩니다.

데이터.

최초의 마이크로컨트롤러에서 오늘날까지 6 트랜지스터 SRAM은 거의 항상 읽기/쓰기 작업 메모리로 사용되며 레지스터 파일에는 비트당 몇 개의 트랜지스터가 사용됩니다.

SRAM 외에 일부 마이크로 컨트롤러는 데이터 스토리지용 내부 EEPROM도 갖추고 있습니다.또한 내장 EEPROM이 없는(또는 충분하지 않은) 컨트롤러도 외부 시리얼 EEPROM 칩(BASIC 스탬프 등) 또는 외부 시리얼 플래시 메모리칩에 접속되어 있는 경우가 많습니다.

2003년부터 시작된 일부 마이크로 컨트롤러는 "자체 프로그래밍 가능한" 플래시 [7]메모리를 갖추고 있습니다.

펌웨어

최초의 마이크로 컨트롤러는 마스크 ROM을 사용하여 펌웨어를 저장했습니다.이후 마이크로컨트롤러(Freescale 68HC11초기 PIC 마이크로컨트롤러 등)에는 EPROM 메모리가 탑재되어 있어 반투명 창을 사용하여 자외선을 통해 소거할 수 있었지만 실제 버전에는 OTP(One-Programmable)라는 창이 없었습니다.펌웨어 업데이트는 마이크로 컨트롤러 자체를 교체하는 것과 같기 때문에 많은 제품을 업그레이드할 수 없었습니다.

Motorola MC68HC805[6] EEPROM을 사용하여 펌웨어를 저장한 최초의 마이크로 컨트롤러입니다.EEPROM 마이크로컨트롤러는 1993년 마이크로칩이 PIC16C84[5] 도입하고 Atmel이 8051 코어 마이크로컨트롤러를 도입하여 펌웨어를 [7]저장하기 위해 NOR 플래시 메모리를 최초로 사용하였습니다.오늘날 마이크로컨트롤러는 거의 모두 플래시 메모리를 사용하며, 일부 모델은 FRAM을 사용하고 일부 초저가 부품은 여전히 OTP 또는 마스크 ROM을 사용합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "1971: Microprocessor Integrates CPU Function onto a Single Chip". The Silicon Engine. Computer History Museum. Retrieved 22 July 2019.
  2. ^ Augarten, Stan (1983). The Most Widely Used Computer on a Chip: The TMS 1000. State of the Art: A Photographic History of the Integrated Circuit. New Haven and New York: Ticknor & Fields. ISBN 978-0-89919-195-9. Retrieved 2009-12-23.
  3. ^ "Trends in the Semiconductor Industry". Semiconductor History Museum of Japan. Archived from the original on 2019-06-27. Retrieved 2019-06-27.
  4. ^ a b "Oral History Panel on the Development and Promotion of the Intel 8048 Microcontroller" (PDF). Computer History Museum Oral History, 2008. p. 4. Retrieved 2016-04-04.
  5. ^ a b "Chip Hall of Fame: Microchip Technology PIC 16C84 Microcontroller". IEEE. 2017-06-30. Retrieved September 16, 2018.
  6. ^ a b Motorola. Advance Information, 8-Bit Microcomputers MC68HC05B6, MC68HC05B4, MC68HC805B6, Motorola Document EADI0054RI. Motorola Ltd., 1988.
  7. ^ a b c "Atmel's Self-Programming Flash Microcontrollers" (PDF). 2012-01-24. Retrieved 2008-10-25. Odd Jostein Svendsli 2003에 의해
  8. ^ Turley, Jim (2002). "The Two Percent Solution". Embedded. Retrieved 2018-07-11.
  9. ^ Cantrell, Tom (1998). "Microchip on the March". Circuit Cellar. Archived from the original on 2007-09-27. Retrieved 2018-07-11.
  10. ^ "Semico Research".
  11. ^ "Momentum Carries MCUs Into 2011 Semico Research". semico.com. Retrieved 2018-07-11.
  12. ^ a b "MCU Market on Migration Path to 32-bit and ARM-based Devices". April 25, 2013. It typically takes a global economic recession to upset the diverse MCU marketplace, and that’s exactly what occurred in 2009, when the microcontroller business suffered its worst-ever annual sales decline of 22% to $11.1 billion.
  13. ^ a b "The really low cost MCUs". www.additude.se. Retrieved 2019-01-16.
  14. ^ 빌 조비노."Zilog, 삼성으로부터 마이크로컨트롤러 제품 라인 인수" 2013.
  15. ^ a b "EFM8BB10F2G-A-QFN20 Silicon Labs Mouser".
  16. ^ a b "MSP430G2001IPW14R Texas Instruments Mouser".
  17. ^ a b "CY8C4013SXI-400 Cypress Semiconductor Mouser". Mouser Electronics. Archived from the original on 2015-02-18.
  18. ^ "MSP430FR2000IPW16R Texas Instruments Mouser".
  19. ^ "CY8C4013SXI-400 Cypress Semiconductor Mouser". Mouser Electronics. Retrieved 2018-07-11.
  20. ^ U-M researchers create world's smallest 'computer', University of Michigan, 2018-06-21
  21. ^ University of Michigan outdoes IBM with world's smallest 'computer', CNET, 2018-06-22
  22. ^ IBM fighting counterfeiters with world's smallest computer, CNET, 2018-03-19
  23. ^ IBM Built a Computer the Size of a Grain of Salt. Here's What It's For., Fortune, 2018-03-19
  24. ^ Heath, Steve (2003). Embedded systems design. EDN series for design engineers (2 ed.). Newnes. pp. 11–12. ISBN 9780750655460.
  25. ^ David Harris & Sarah Harris (2012).디지털 설계와 컴퓨터 아키텍처, 제2판, 페이지 515.모건 카우프만입니다ISBN 0123944244.
  26. ^ 마이크로컨트롤러 프로젝트를 쉽게 구축하는 방법
  27. ^ Mazzei, Daniele; Montelisciani, Gabriele; Baldi, Giacomo; Fantoni, Gualtiero (2015). "Changing the programming paradigm for the embedded in the IoT domain". 2015 IEEE 2nd World Forum on Internet of Things (WF-IoT). Internet of Things (WF-IoT), 2015 IEEE 2nd World Forum on. Milan: IEEE. pp. 239–244. doi:10.1109/WF-IoT.2015.7389059. ISBN 978-1-5090-0366-2.
  28. ^ Jan Axelson 1994의 "8052-Basic Microclers"
  29. ^ Edwards, Robert (1987). "Optimizing the Zilog Z8 Forth Microcontroller for Rapid Prototyping" (PDF). Martin Marietta: 3. Retrieved 9 December 2012. {{cite journal}}:Cite 저널 요구 사항 journal=(도움말)
  30. ^ www.infineon.com/mcu

외부 링크