ARM與 STM32的關係
ARM介紹
1978年,奧地利籍物理學博士Hermann Hauser,和他朋友,一位英國工程師Chris Curry,共同創建了一家名為「Cambridge Processor Unit,CPU」的公司,中文字面意思就是「劍橋處理器單元」,主要從事研發當地電子儀器設備的業務,比如街上的遊戲機之類的。
1979年,在經營逐漸進入正規後,原來的公司名不怎麼合適了,那個年代喜歡找個吉祥物作為公司名字,比如Apple公司。這倆就以橡子為吉祥物,取名為「Acron Computer」,中文字面意思就是「橡果公司」。
1981年,也許是改了公司名字,運氣就來了,這一年,公司接到一個大單。英國廣播公司BBC,計劃在整個英國播放一套電腦普及的教育節目,希望Acron公司可以生產一套配套的電腦,之後英國政府還會海量採購電腦,在各個學校普及。
接下這個大單後,Acron公司就開始研發產品了。當時處理器正從8位向16位過渡,他們就去找了美國國家半導體和摩托羅拉公司生產的16位處理器。評估後發現,這些處理器執行上有點慢,中斷的響應時間有點長,還有就是太貴,一台電腦才賣500英鎊,處理器成本就要100英鎊。於是又把目標轉向當時如日中天的 Intel,希望對方提供一些16位80286處理器的設計資料和樣品,然而Intel根本就不理他們。
最後,Acorn公司沒辦法,臨時採用了便宜的MOS科技生產的8位6502處理器,勉強研發出符合要求的個人電腦BBC Micro。絕處逢生的Acorn公司發現處理器受制於人,為了後面長久的發展,於是決定自己研發處理器。
Acorn公司的研發人員從美國加州大學伯克利分校,找到了一個關於新型處理器的研究——簡化指令集。在此基礎上,歷時4年的艱苦奮鬥,於1985年完成了微處理器的設計,以後的BBC Micro,都用這顆新處理器。對於這塊晶片,Acorn公司給它命名為「Acorn RISC Machine,ARM」,中文字面意思就是「橡果精簡指令集機器」,也就是ARM的第一次出現。
這裡插講一下簡化指令集(Reduced Instruction Set Computer,RISC),與之相對應的就是複雜指令集 (Complex Instruction Set Computer,CISC)。早期的處理器都是CISC架構(比如前面Intel處理器),隨著時間推移,有越來越多的指令集加入。但是後來人們發現,整個指令集中,只有約20%的指令常常會被使用到,大約占了整個程序內容的80%,而剩余80%的指令,只占了整個程序內容的20%(典型的二八原則)。於是, 1979年美國加州大學伯克利分校的David Patterson教授(前面提到的新型處理器研究的作者),提出了RISC的想法,主張硬體專心加速常用的指令,不常用的指令則利用常用的指令去組合。
就在同一年,1985年10月,英特爾發布了80386,Acorn公司的ARM晶片被吊打。80386采用CISC技術,所有指令都支持,也就性能更好,但設計成本也高、功耗也大。Acorn公司的ARM晶片采用RISI技術,只支持常用指令,其它指令需要常用指令去組合,性能也就差一些,但成本低、功耗低、研發快。Acorn公司也不傻,性能比不過,就突出成本低,功耗低的優勢,總有要求成本低、功耗低,性能要求不高的場景,於是就往我們現在所見的嵌入式方向發展。
1990年,Acorn公司和Apple公司合作,成立新公司「Advanced RISC Machines,ARM」,中文字面意思就是「高級精簡指令集機器」,這就是現在大家常說的ARM公司。
成立新公司後的幾年,ARM公司業績平平,危機四起。於是ARM決定改變他們的產品策略,他們不再生產晶片,轉而以授權的方式,將晶片設計方案轉給其它公司。正是ARM的這種授權模式,極大地降低了自身的研發成本和研發風險。它以風險共擔、利益共享的模式,形成了一個以ARM為核心的生態圈,使得低成本創新成為可能。
隨後,德州儀器(Texas Instruments,TI)、意法半導體(STMicroelectronics,ST)、恩智浦半導體(NXP Semiconductors,NXP)等半導體晶片廠商,相繼購買ARM授權,然後根據自身行業需求,設計不同的外設接口的晶片。
由上總結,ARM具有以下三種含義:
.ARM是一家全球半導體行業技術領先的公司,主要業務是設計RISC嵌入式處理器;
.ARM是一類微處理器晶片或產品的統稱,即所有采用ARM公司提供方案開發的RISC處理器;
.ARM是一項技術的名稱,即采用RISC的處理器體系結構;
從1985年發布第一個ARM處理器開始,ARM公司不斷升級疊代,加入新的指令系統、寄存器組、功能特性,發展出不同架構。早期的經典ARM處理器,架構命名規則比較混亂,現在這些處理器基本不常見了,這裡就不展開介紹。從ARMv7開始,采用Cortex命名,將整個處理器分為三大類,如圖 2.2.2所示。
.這是現代多用戶多進程作業系統(比如Linux、VxWorks)所必須的。該系列適用於高端消費電子 sor),該系列有內存管理單元(Memory Management Uint,MMU),實現虛擬內存,讓每個用戶進程都擁有自己獨立的地址空間,這是現代多用戶多進程作業系統(比如Linux、VxWorks)所必須的。該系列適用於高端消費電子領域,比如智慧型手機、平板電腦、智能電視、路由器等;
.ARM Cortex-R:實時控制系列。R表示應用程序(Real Time Controller),該系列適用於高性能、高實時性應用,比如硬盤/固態驅動控制器、企業網絡設備、消費電子領域的藍光播放器、汽車領域的安全氣囊等;
.ARM Cortex-M:微控制器系列。M表示應用程序(Microcontroller Processors),該系列適用於低功耗、高性能且對成本敏感的產品,比如家電產品、物聯網、無人機等;
針對不同的應用場景和需求,每個系列還會再細分,比如ARM Cortex-M就再分為ARM Cortex-M0、ARM Cortex-M3、ARM Cortex-M4等,區別如表 2.2.1所示。
表 2.2.1 Cortex-M系列處理器區別
STM32介紹
在2004年,ARM公司推出新一代Cortex內核後,ST公司抓住機遇,在很短的時間內就向市場推出了一系列的32位微控制器,同時提供基於庫的開發模式,加快用戶研發周期。STM32就是ST公司基於ARM Cortex-M3內核設計的微控制器,專為高性能、低功耗、低成本場景設計。
STM32如今產品系列非常豐富,主要為ARM Cortex-M內核系列MCU,也開始涉及ARM Cortex-A內核系列MPU,如圖 2.2.3所示。按應用特性分類,可分為無線WB/WL系列、超低功耗L0/L1/L3/L5系列、主流 G0/G4/F0/F1/F3系列、高性能F2/F4/F7/H7系列、全新的MP1系列。
STM32的處理器種類眾多,通過了解STM32的命令規範,可以了解整個STM32家族產品,也方便以後晶片選型,STM32 MCU系列命名規則如圖 2.2.4所示。
以STM32F103ZET6為例,解析STM32晶片命名規範如表 2.2.2所示。
表 2.2.2 STM32F103ZET6各部分含義
【總結】
ARM公司售賣Cortex-M系列的授權,意法半導體(STMicroelectronics,ST)購買了該授權,生產了一些列 STM32產品,這些使用ARM技術的處理器,都習慣稱為ARM處理器,其中STM32F103ZET6就作為了本手冊配套開發板的處理器。
我自己在今年年初錄製了一套還比較系統的入門單片機教程,想要的同學找我拿就行了免費的,私信我就可以哦~簡介里也有。