參考資料:《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條左右
2、SOC(System on Chip)
參考資料:http://baike.so.com/doc/6743192-6957719.html
SOC是一種設計理念,就是將各個可以集成在一起的模塊集成到一個芯片上。
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和總線示意圖如下
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