嵌入式與裸機

微控制器(microcontroller, MCU)

/ MY-kroh-kun-TROH-ler /

想想瑞士刀和完整工作坊的差別。微控制器(MCU)就是那把瑞士刀:把一整台小電腦塞進「一顆」晶片——處理器、記憶體,以及輸入/輸出硬體(計時器、接腳、感測器介面)全在單一零件裡,成本也許從幾美分到幾美元。它是為了控制單一裝置而生,例如咖啡機或無人機馬達,而不是用來跑桌面系統。

關鍵對比在於應用處理器(application processor),也就是手機或樹莓派裡那種晶片。應用處理器很快(數百 MHz 到 GHz)、有大量 RAM(數 GB)、配備記憶體管理單元以支援虛擬記憶體,並從外部 DRAM 與快閃晶片啟動完整的作業系統如 Linux 或 Android。微控制器恰好相反:較慢的核心(常從數 MHz 到數百 MHz)、極小的「晶片內」記憶體(數 KB 的 RAM,數十到數百 KB 的快閃用來放程式)、通常「沒有」虛擬記憶體,並在數微秒內直接啟動進入你的程式,不需要作業系統。熱門的 ARM Cortex-M 系列(Cortex-M0、M3、M4、M7)是 MCU;Cortex-A 系列是應用處理器。因為 RAM 與快閃和核心在同一片晶粒上,MCU 既便宜、低功耗,時序也可預測。

它之所以重要,是因為選 MCU 還是應用處理器會決定一切:MCU 用於確定性、低功耗、低成本的控制,常跑裸機或小型 RTOS;應用處理器用於豐富軟體、網路與使用者介面,常跑 Linux。要避免的常見混淆:「微控制器」與「微處理器」並不相同——微處理器(如老式 x86 CPU)「只是」處理核心,需要外接記憶體與週邊晶片;而微控制器把記憶體與週邊整合進同一顆晶片。這份整合正是它的重點。

典型的 Cortex-M4 MCU: 核心: 約 80-180 MHz,無 MMU 快閃: 256 KiB (你的程式住這裡) RAM: 64 KiB (變數、堆疊住這裡) 內建: GPIO、UART、SPI、I2C、計時器、ADC、DMA 典型的 Cortex-A 應用處理器: 核心: 約 1-2 GHz,有 MMU DRAM: 外接 1-4 GiB 儲存: SD 卡 / eMMC,跑 Linux

MCU 把核心、記憶體與週邊整合在一顆晶片上,不需作業系統即可執行;應用處理器需外接記憶體並執行 Linux。

別把微控制器和微處理器混為一談:微處理器只是核心,需外接記憶體與週邊晶片;微控制器則把記憶體與週邊整合在晶片上。正是這份整合讓 MCU 便宜又自足。

又称
MCUmicrocontroller unit微控制單元單晶片