《宣告:參考文章
,參考硬體平台:友善之臂mini2440>
在研究2440開發板的時候,通過對2440晶元的和各種儲存晶元的理解,略有感悟。本貼主要是關於s3c2440硬體平台設計,從事嵌入式軟體的朋友可以當做參考,同時歡迎各路硬體牛人多提建議。s3c2440a是三星推出的16/32bit的risc mpu(risc微處理器。risc:educed instruction set computer,精簡指令集計算機,是一種執行較少型別計算機指令的微處理器);2440具有1g byte的定址空間(8banks,128m/bank)。2440晶元所有引腳中分配了27根位址線(a0~a26),換言之,也就128的位址空間。同時,在2440晶元中提供了ngcs0~ngcs7 8路片選訊號線,分別對應晶元中的8個bank,8*128m=1g(具體情況是否如此有待考證,但在本貼開始的參考帖子中是這樣說明的)。
本人手頭有一塊mini友善之臂的學習板,開始對2440與sdram(hy57v561620)的接線中有點很是迷糊(也是開始研究2440儲存空間的初衷),2440的位址線a2連線sdram的a0,想必對硬體稍有了解的人都會對此多少有些疑惑,為什麼位址線沒有按位對齊。在這裡我們分析一下hy57v561620晶元,4banks*4m*16bit,也就是說按字(16bit)訪問內部資料,但是在友善之臂的硬體平台中是通過兩片hy57v561620晶元擴充套件成了32位的資料寬度,同時,2440也配置成32位訪問模式 ,這樣可以加快訪問速度。由於在市場上的儲存晶元中有資料寬度為8位、16位和32位的,在2440中,就增加了nwbe[3:0]這四個引腳,來識別這些晶元的的資料寬度,這樣便可以不至於侷限於某一類儲存晶元。
(下面的分析與參考貼中有所出入,個人覺得參考貼中的分析有不妥)
回到上文提出的位址按位對齊的問題,由於這個時候資料寬度為32位,在儲存晶元中的儲存單位都通過位元組(8bit)來實現,也就是說定址的時候需要按雙字來對齊位址,所以a0、a1就不需要與 hy57v561620的位址匯流排對齊 。在這裡乙個新的問題出現了, hy57v561620的儲存空間為64m,但是位址線寬度為13位(a0~a12),在友善之臂學習板中2440中的a2~a14分別接 hy57v561620種的a0~a12,13位位址線不夠分配64m的位址空間,但是在 hy57v561620是通過分別訪問行位址和列位址來訪問內部資料的,行位址和列位址公用這13位的位址線(其中行位址共用a0~a12這13位位址線,列位址共用a0~a8這9位位址線),2^13*2^9*16bit=4m*16bit,但是這只是 hy57v561620中每個bank的大小, hy57v561620中含有4個bank,同時它還提供了ba0~ba1來選擇定址時訪問的bank號,在友善之臂學習板中2440的a24~a25分別 hy57v561620中的ba0~ba1,在每次訪問 hy57v561620時2440先根據a24~a25判斷 hy57v561620中將要訪問的bank號,再行、列位址訪問 hy57v561620中的16bit資料(這裡是分析單片 hy57v561620,沒有將兩片放在一起分析),如此便可完成單片32m位址的定址(為什麼不是64m因為每次從單片中訪問的資料為16bit)。
mini2440原理圖
S3C2440位址空間的分配與啟動
一 s3c2440位址空間的分配 1.s3c2440a 的儲存器控制器有以下特性 大小端 通過軟體選擇 可程式設計的訪問位寬,bank0 16 32 位 其他bank 8 16 32 位 共8個儲存器banks 6個是rom,sram 等型別儲存器bank 2個是可以作為rom sram sdram...
基於S3C2440的bootloader移植詳解
首先 在彙編中初始化堆疊,中斷向量表,mmu,時鐘,串列埠等,然後跳到c語言的main函式。這部分 小於4k,放在block0。這個main函式用來將第二段 拷備到dram中並執行。不說這麼多廢話了,說多了無益,讓我們一起來揭開bootloader的神秘的面紗吧!先說下我移植的bootloader的...
S3C2440的中斷機制
1.中斷原理圖 2.中斷過程 如果是不帶子中斷的內部中斷 發生後srcpnd相應位置1,那麼等待進一步處理。如果是帶子中斷的內部中斷 發生後subsrcpnd相應位置1,如果沒有被intsubmsk遮蔽,那 麼srcpnd相應位置1,等待進一步處理 如果是外部中斷 eint0 eint3發生後src...