授人以漁:stm32資料查詢技巧
摘要:本章以stm32f103作為案例向大家講解arm公司和st公司的關係以及我們在對stm32開發時需要如何正確的查詢手冊。
ARM公司和ST公司的關係
這裡要從一塊晶片的生產說起,比如我們要生成一款晶片,我們可以自己涉及核心,涉及好了之後就叫XXX架構晶片,但是一般情況下不會這麼做,因為設計核心十分複雜,我們可以向出售核心的公司購買核心來使用即可。
目前市面上主流的核心有ARM架構核心對應“精簡指令集”和x86架構核心對應“複雜指令集”。
為什麼架構決定了指令集?因為設計架構的本質就是搭建一些邏輯電路,這些電路決定了遇到特定的二進位制資料(指令),就執行相應的操作。
這裡以ARM指令集為例,mov r0, r1 將r1暫存器中的資料讀到r0暫存器中,STM32晶片看到的就是一串長度為4位元組的二進位制資料,核心中的“閘電路”會將這串二進位制資料解析並進行一連串的操作(將r1暫存器中的資料讀到r0暫存器中),所以核心的架構就決定了指令集,越複雜的核心支援的指令集就越多,並且一條指令能處理的事情就越多。
指令集是不是越複雜越好?其實並不是這樣,複雜指令集帶來了一些的問題:功耗太大、發熱量大、80%指令不常用等等問題,所以我們要根據晶片的用途來權衡採用什麼核心。
這裡說一個鯤鵬伺服器的案例:鯤鵬伺服器採用的就是基於ARM架構的CPU,這樣做的原因:
1、ARM指令集在鯤鵬所處的領域完全夠用,即使需要處理一個arm指令不支援的操作,只需將多條指令一起指向就可以完成該操作。
2、x86架構的CPU隨著核心內的閘電路越來越多,因為工藝的問題和散熱的問題等,慢慢的達不到了“摩爾定律”,所以採用ARM架構的CPU並且用平行運算的“眾”核思想可以基於沿著“摩爾定律”走。
3、學術研究發現了複雜指令集中有80%的指令都不太常用,所以用精簡指令集不會造成浪費。
4、華為有ARMv8的永久授權。
ARM架構
Arm架構由ARM公司設計並提供授權,其對應指令集為“精簡指令集(RISC)”,我們的手機、智慧電視等產品所採用的主控多半都是arm架構核心的。
X86架構
X86架構由Intel公司設計,具有代表的產品就是我們電腦中使用的i5、i7等等CPU,其對應指令集為複雜指令集,這意味著一條複雜指令集中的指令可以完成多條精簡指令集才能完成的操作,但是也面臨很多問題。
ARM公司
ARM公司是一家通過出售arm核心授權盈利的公司,自己從不生成晶片,他將核心的設計圖等等資料提供給購買了核心授權的公司,讓其自己去二次開發並生產晶片。下圖為arm公司設計的部分:
其中常見的有NVIC中斷控制器,核心包括了r0-r15暫存器、pc暫存器等等,所以我們要查詢上圖中給出的核心相關外設的資訊需要去查閱arm公司提供的參考手冊,例如《Arm cortex-M3參考手冊》。
ST公司
ST公司向arm公司購買了arm核心的授權,這裡舉個例子:stm32f103的cortex-m3核心就是一個授權,st公司將購買來的arm核心的設計進行二次開發。
下圖為st公司二次開發設計出來的部分:
紅框為ARM核心也就是arm公司設計的,其餘部分都是st公司二次開發設計出來的,最終被封裝到一個黑色的小盒子內並引出引腳供我們使用。常見的核心外部外設有定時器、GPIO控制器、串列埠等等,如果我們需要了解此類裝置就需要查閱st公司提供的參考手冊,例如《STM32F103參考手冊》。
如何查閱手冊
① 確定你要查詢的“外設”是核心中的還是核心外的,例如中斷控制器(NVIC)就是核心中的,“定時器”就是核心外的。
② 核心中的外設通過查閱ARM公司提供的參考手冊
③ 核心外的外設通過查閱ST公司提供的參考手冊
ARM公司資料下載:
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dai0099c/index.html#
ST公司資料下載:
https://www.st.com/content/st_com/en.html
如果需要下載資料只需自己註冊一個對應網站的賬號就可以免費下載了,別再去花錢買資料啦。
點選關注,第一時間瞭解華為雲新鮮技