1.cpu與soc
內核版本號與soc版本號由arm公司確定。
芯片型號由各半導體公司確定。
soc包括cpu與一些基本內設。(一般提到CPU都指的是soc,實際上cpu只是soc的一部分)。
RISC與CISC
CISC復雜指令集:指令繁多,但是效率高。Intel等桌面pc使用這種指令集。功耗大。
RISC精簡指令集: 指令少,但是效率略低。優點是功耗低適合嵌入式設備。
統一編址&獨立編址
內存通過CPU的地址總線來尋址定位,然后通過CPU數據總線來讀寫。CPU的地址總線的位數是CPU設計時確定的,因此一款CPU所能尋址的范圍是一定的,而內存是需要占用CPU的尋址空間的。內存與CPU的這種總線式連接方式是一種直接連接,優點是效率高訪問快,缺點是資源有限,擴展性差。
CPU訪問各種外設有2種方式:一種是類似於訪問內存的方式,即把外設的寄存器當作一個內存地址來讀寫,從而以訪問內存相同的方式來操作外設,叫IO與內存統一編址方式;另一種是使用專用的CPU指令來訪問某種特定外設,叫IO與內存獨立編址。
由於內存訪問頻率高,因此采用總線式連接,直接地址訪問,效率最高。
IO與內存統一編址方式,優勢是IO當作內存來訪問,編程簡單;缺點是IO也需要占用一定的CPU地址空間,而CPU的地址空間是有限資源。
IO與內存獨立編織方式,優勢是 不占用CPU地址空間,缺點是CPU設計變復雜了
哈佛結構&馮諾依曼結構
程序和數據都放在內存中,且不彼此分離的結構稱為馮諾依曼結構。譬如Intel的CPU均采用馮諾依曼結構。
程序和數據分開獨立放在不同的內存塊中,彼此完全分離的結構稱為哈佛結構。譬如大部分的單片機(MCS51、ARM9等)均采用哈佛結構。
馮諾依曼結構中程序和數據不區分的放在一起,因此安全和穩定性是個問題,好處是處理起來簡單。
哈佛結構中程序(一般放在ROM、flash中)和數據(一般放在RAM中)獨立分開存放,因此好處是安全和穩定性高,缺點是軟件處理復雜一些(需要統一規划鏈接地址等)
ARM體系總結
常用ARM匯編指令只有二三十條
ARM是低功耗CPU
ARM的架構非常適合單片機、嵌入式,尤其是物聯網領域;而服務器等高性能領域目前主導還是Intel
大部分ARM(M3 M4 M7 M0 ARM9 ARM11 A8 A9等)都是32位架構
32位ARM CPU支持的內存少於4G,通過CPU地址總線來訪問
SoC中的各種內部外設通過各自的SFR編程訪問,這些SFR的訪問方式類似於訪問普通內存,這叫IO與內存統一編址。
常見ARM(除ARM7外)都是哈佛結構的
哈佛結構保證了ARM CPU運行的穩定性和安全性,因此ARM適用於嵌入式領域
哈佛結構也決定了ARM裸機程序(使用實地址即物理地址)的鏈接比較麻煩,必須使用復雜的鏈接腳本告知鏈接器如何組織程序;對於OS之上的應用(工作在虛擬地址之中)則不需考慮這么多
CPU和外部存儲器的接口
內存 內部存儲器 用來運行程序的 RAM 舉例(DRAM SRAM DDR)
外存 外部存儲器 用來存儲東西的 ROM 舉例(硬盤 Flash(Nand iNand···· U盤、SSD) 光盤)
CPU連接內存和外存的連接方式不同。內存需要直接地址訪問,所以是通過地址總線&數據總線的總線式訪問方式連接的(好處是直接訪問,隨機訪問;壞處是占用CPU的地址空間,大小受限);外存是通過CPU的外存接口來連接的(好處是不占用CPU的地址空間,壞處是訪問速度沒有總線式快,訪問時序較復雜)
SoC常用外存:
NorFlash 總線式訪問,接到SROM bank,優點是可以直接總線訪問,一般用來啟動。 //小容量
NandFlash: 分為SLC和MLC //
eMMC/iNand/moviNand eMMC(embeded MMC) iNand是SanDisk公司出產的eMMC,moviNand是三星公司出產的eMMC //手機內部
oneNAND oneNand是三星公司出的一種Nand
SD卡/TF卡/MMC卡
eSSD
SATA硬盤(機械式訪問、磁存儲原理、SATA是接口)
外部總線接口(EBI)被用作S5PV210外圍。它依賴於內存控制器釋放 外部請求外部總線空閑內存控制器時,因為它沒有當內存的知識 訪問將開始或完成。它使一個SROM控制器、一個OneNAND控制器和一個快閃記憶體 控制器、分享外部內存總線、內存端口0。
啟動過程詳解
內存:
SRAM 靜態內存 特點就是容量小、價格高,優點是不需要軟件初始化直接上電就能用
DRAM 動態內存 特點就是容量大、價格低,缺點就是上電后不能直接使用,需要軟件初始化后才可以使用。
單片機中:內存需求量小,而且希望開發盡量簡單,適合全部用SRAM
嵌入式系統:內存需求量大,而且沒有NorFlash等可啟動介質
PC機: 內存需求量大,而且軟件復雜,不在乎DRAM的初始化開銷,適合全部用DRAM
外存:
NorFlash:特點是容量小,價格高,優點是可以和CPU直接總線式相連,CPU上電后可以直接讀取,所以一般用作啟動介質。
NandFlash(跟硬盤一樣):特點是容量大,價格低,缺點是不能總線式訪問,也就是說不能上電CPU直接讀取,需要CPU先運行一些初始化軟件,然后通過時序接口讀寫。
所以一般PC機都是:很小容量的BIOS(NorFlash)+ 很大容量的硬盤(類似於NandFlash)+ 大容量的DRAM
一般的單片機: 很小容量的NorFlash + 很小容量的SRAM
嵌入式系統:因為NorFlash很貴,隨意現在很多嵌入式系統傾向於不用NorFlash,
直接用:外接的大容量Nand + 外接大容量DRAM + SoC內置SRAM
S5PV210使用的啟動方式是:外接的大容量Nand + 外接大容量DRAM + SoC內置SRAM
實際上210的啟動還要更好玩一些,210內置了一塊96KB大小的SRAM(叫iRAM),同時還有一塊內置的64KB大小的NorFlash(叫iROM)。210的啟動過程大致是:
第一步:CPU上電后先從內部IROM中讀取預先設置的代碼(BL0),執行。這一段IROM代碼首先做了一些基本的初始化(CPU時鍾、關看門狗···)(這一段IROM代碼是三星出廠前設置的,三星也不知道我們板子上將來接的是什么樣的DRAM,因此這一段IROM是不能負責初始化外接的DRAM的,因此這一段代碼只能初始化SoC內部的東西);然后這一段代碼會判斷我們選擇的啟動模式(我們通過硬件跳線可以更改板子的啟動模式),然后從相應的外部存儲器去讀取第一部分啟動代碼(BL1,大小為16KB)到內部SRAM。
第二步:從IRAM去運行剛上一步讀取來的BL1(16KB),然后執行。BL1負責初始化NandFlash,然后將BL2讀取到IRAM(剩余的80KB)然后運行
第三步:從IRAM運行BL2,BL2初始化DRAM,然后將OS讀取到DRAM中,然后啟動OS,啟動過程結束。
思路:因為啟動代碼的大小是不定的,有些公司可能96kb就夠了,有些公司可能1MB都不夠。所以剛才說的2步的啟動方式不合適。三星的解決方案是:把啟動代碼分為2半(BL1和BL2),這兩部分協同工作來完成啟動。