市場(chǎng)上成百上千種的 ARM 芯片,如果我們?nèi)タ此鼈兊膬?nèi)核,卻只有不多的幾種。從時(shí)間上來(lái)看,從1985年設(shè)計(jì)的 26 位地址總線的 ARMv1, 到 ARMv2, 一直發(fā)展到最近支持64位地址總線的 ARMv8。最近這幾年,在每一代 ARMvx 核心的基礎(chǔ)上,根據(jù)不同的應(yīng)用場(chǎng)景,又做了擴(kuò)充或裁剪,形成三大架構(gòu):A(Applications) 高性能,一般需要運(yùn)行Linux等操作系統(tǒng)。R(Real-time) 需要實(shí)時(shí)處理的系統(tǒng),一般應(yīng)用于網(wǎng)絡(luò)處理器,嵌入式控制系統(tǒng)。M(Microcontroller) 小體積,低功耗,一般應(yīng)用于嵌入式系統(tǒng)。ARMv1 - ARMv5 已經(jīng)成為歷史了。我們對(duì)最新的 ARMv6 - ARMv8 做一個(gè)簡(jiǎn)要區(qū)分:高性能,支持64位指令集,同時(shí)兼容以前的32/16位指令集。針對(duì)安全應(yīng)用引入Trustzone。典型芯片如華為的麒麟系列,Kirin990 內(nèi)部集成了4顆 Cortex-A76,4顆 Cortex-A55,每一顆頻率都可以跑到 2GHz以上。同樣高通的驍龍865也是集成8顆 ARMv8-A 架構(gòu)的內(nèi)核。針對(duì)嵌入式應(yīng)用,支持32位指令集,兼容以前指令集。引入Trustzone。加解密運(yùn)算通過(guò)硬件加速。典型芯片如 STM32L552 (Cortex-M33 內(nèi)核)。主頻可以跑到 110 MHz。支持 arm 和 Thumb 指令集,支持虛擬地址存儲(chǔ)管理(Virtual Address Support in the Memory Management Unit)。跑 Linux 這類操作系統(tǒng)一般需要 MMU。這種架構(gòu)主要面向復(fù)雜應(yīng)用。典型芯片如 STM32MP151 (Cortex-A7 內(nèi)核) 。主頻可以跑到 650 MHz。支持 ARM 和 Thumb 指令集,但不支持虛擬地址管理。典型芯片如 RM41L232 (Cortex-R4 內(nèi)核)。主頻可以跑到 80 MHz。只支持 Thumb 指令集。簡(jiǎn)化的流水線,更快的中斷響應(yīng),針對(duì)嵌入式應(yīng)用。典型芯片如 STM32F103 (Cortex-M3 內(nèi)核)。主頻可以跑到72MHz。ARMv6-M 是 ARMv7-M 的一個(gè)子集。架構(gòu)做了進(jìn)一步簡(jiǎn)化,但是保持和 ARMv7-M 兼容。典型芯片如 STM32F030 (Cortex-M0 內(nèi)核)。主頻可以跑到48MHz。STM32F030 的內(nèi)核,采用了 ARMv6-M 架構(gòu)的 Cortex-M0。這個(gè)系列提供了從 16K Flash, 4K RAM, TSSOP20 封裝,到 256K Flash, 32K RAM, LQFP64封裝的多種選擇。同時(shí)這顆芯片集成了最常用的 UART,I2C, USART, ADC 等模塊。在掌握了它的開(kāi)發(fā)方法后,很容易拓展到其它的芯片。如圖,這個(gè)板子由兩部分組成。上半部分是一個(gè)集成的下載調(diào)試工具 ST-LINK/V2,下半部分板子帶一顆 STM32F030R8T6,簡(jiǎn)單的 32k 晶振,兩個(gè)按鍵和一個(gè)LED 指示燈。它把所有的引腳都用排針引了出來(lái),可以方便用戶擴(kuò)展電路做評(píng)估。上半部分的調(diào)試器部分可以從板子上切割下來(lái)單獨(dú)使用,調(diào)試用戶做的板子。用戶也可以從網(wǎng)上單獨(dú)購(gòu)買 ST-LINK/V2調(diào)試器。4.集成開(kāi)發(fā)環(huán)境(IDE)對(duì)于 STM32F0/L0/G0, 在 ST 的官方網(wǎng)站上可以下載到正版免費(fèi)的 Keil。Arm Keil MDK for STM32F0, STM32L0 and STM32G0這個(gè)版本沒(méi)有時(shí)間限制,但是代碼有 32K 的限制,對(duì)一般應(yīng)用來(lái)說(shuō)也夠了。ST早期的代碼都是基于 Standard Peripheral Library,最近ST的軟件逐漸統(tǒng)一于 STMCube。它對(duì)軟件進(jìn)行了更科學(xué)的分層管理,更易于在不同的平臺(tái)間移植??梢詷O大的縮短開(kāi)發(fā)時(shí)間。如果是新項(xiàng)目,可以從 STMCube 入手。以前的軟件庫(kù)將逐漸淘汰。對(duì)于STM32F030來(lái)說(shuō),對(duì)應(yīng)的是 STM32CubeF0,在官網(wǎng)可以直接下載:之后的文章我們將從開(kāi)發(fā)環(huán)境建立,啟動(dòng)代碼,到各個(gè)模塊如何使用。在下面的網(wǎng)址可以找到現(xiàn)在所有的ARM內(nèi)核:https://www./products/silicon-ip-cpuARM?v6-M Architecture Reference ManualARM?v7-M Architecture Reference ManualArm?v8-M Architecture Reference Manual
|