ARM體系結構

參考資料:《ARM裸機全集---朱有鵬老師》


1、RISC和CISC的區別

參考資料:http://baike.so.com/doc/6750698-6965257.html

CISC(複雜指令集計算機)和RISC(精簡指令集計算機)是當前CPU的兩種架構。

它們的區別在於不同的CPU設計理念和方法。


CISC:早期的CPU全部是CISC架構,它的設計目的是要用最少指令來完成所需的計算任務。

(1)CISC CPU包含有豐富的電路單元,因而功能強、面積大、功耗大。

(2)CISC機器則更適合於通用機。

(3)CISC指令數目300條左右


RISC:設計者把主要精力放在那些經常使用的指令上,儘量使它們具有簡單高效的特色。對不常用的功能,通過組合指令來完成。

(1)RISC CPU包含有較少的電路單元,因而面積小、功耗低。

(2)RISC機器更適合於專用機。

(3)RISC指令數目30條左右

wKioL1juLL-BrXw0AAKw1gDwJMc027.png


2、SOC(System on Chip)

參考資料:http://baike.so.com/doc/6743192-6957719.html

SOC是一種設計理念,就是將各個可以集成在一起的模塊集成到一個芯片上。

wKiom1juLO7zScm1AABDNvvYHbE106.png


3、外設(Peripheral)

外設就是外部設備

SoC中外設大部分都跑進去了,網卡、音頻編解碼等個別還經常在外面。

芯片設計的趨勢是更大集成度,近年甚至將音視頻編解碼、DDR都集成進SoC內做成所謂單芯片解決方案。如海思Hi3518E

裸機學習其實就是學習SoC的內核(CPU,表現爲彙編指令集)和各種外設(如串口)


4、CPU的數據總線和地址總線

(1)數據總線+地址總線=總線接口

(2)CPU通過地址總線尋址,通過數據總線與外部設備信息交換。

(3)地址總線的位數決定了CPU尋址的範圍,數據總線的位數決定了CPU單次通信能交換的信息數量。


注意:

CPU的地址總線位數和數據總線位數可以不同(典型代表就是51單片機),但是一般都相同。

一般指CPU的位數說的是數據總線的位數。

CPU地址總線32位指一般CPU尋址的範圍是4G,所以最多支持4G內存;

CPU數據總線是32位的,一般CPU地址總線也是32位,所以編程最好用int···


4.1、CPU和總線示意圖如下

wKioL1juLSnzQLojAAAjKIpiiRU128.png


5、IO和內存

5.1.1、什麼是內存?

內存是程序的運行場所,內存和CPU之間通過總線連接,CPU通過確定的地址來訪問具體內存單元。


5.1.2、內存的訪問方式

內存通過CPU的地址總線來尋址定位,然後通過CPU數據總線來讀寫。

CPU的地址總線的位數是CPU設計時確定的,因此一款CPU所能尋址的範圍是一定的,而內存是需要佔用CPU的尋址空間的。

內存與CPU的這種總線式連接方式是一種直接連接,優點是效率高訪問快,缺點是資源有限,擴展性差。


5.2.1、什麼是IO?

IO(input and output)是輸入輸出接口,是CPU和其他外部設備(如串口、LCD、觸摸屏、LED等)之間通信的道路。

一般的,IO就是指CPU的各種內部或外部外設。


5.2.2、IO的訪問方式

IO指的是與CPU連接的各種外設

CPU訪問各種外設有2種方式:一種是類似於訪問內存的方式,即把外設的SFR寄存器當作一個內存地址來讀寫,從而以訪問內存相同的方式來操作外設,叫IO與內存統一編址方式;另一種是使用專用的CPU指令來訪問某種特定外設,叫IO與內存獨立編址。


6、寄存器

6.1、兩類寄存器

SoC中有2類寄存器:通用寄存器和SFR寄存器

通用寄存器(ARM中有37個)是CPU的組成部分,CPU的很多活動都需要通用寄存器的支持和參與。

SFR(special function register,特殊功能寄存器)不在CPU中,而存在於SOC的外設中,

可以通過訪問外設的SFR寄存器來編程操控這個外設。


6.2、軟件編程控制硬件的關鍵-SFR寄存器

軟件編程控制硬件,就是編程讀寫SFR寄存器。編程操作寄存器可以類似於像訪問內存一樣操作,叫做IO與內存統一編址。


7、彙編語言

彙編的實質是機器指令(機器碼)的助記符,是一種低級符號語言。

機器指令集是一款CPU的編程特徵,是這款CPU的設計者制定的。CPU的內部電路設計就是爲了實現這些指令集的功能。

不同CPU的機器指令集設計不同,因此彙編程序不能在不同CPU之間互相移植。

使用匯編編程可以充分發揮CPU的設計特點,所以彙編編程效率最高,因此在操作系統內核中效率極其重要處都需要用匯編處理。


8、ARM處理器工作模式

參考資料:

http://blog.csdn.net/mr_raptor/article/details/6556157

http://blog.csdn.net/zqixiao_09/article/details/50773128


9、ARM處理器不同模式下寄存器

參考資料:http://blog.csdn.net/mr_raptor/article/details/6556163


10、ARM中的程序狀態寄存器(CPSR)

參考資料:http://www.cnblogs.com/armlinux/archive/2011/03/23/2396833.html


11、ARM處理器異常處理

參考資料:http://blog.csdn.net/mr_raptor/article/details/6556195


12、ARM彙編指令集

參考資料:http://blog.csdn.net/zqixiao_09/article/details/50726544


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章