arm架構與體系結構


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),這兩部分協同工作來完成啟動。

 



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM