s5pc100中uboot移植之內(nèi)存控制器的設置
時間:2017-01-05作者:華清遠見
s5pc100是三星公司推出的基于Cortax-A8核心的一款專門針對應用、消費類電子產(chǎn)品而設計的芯片,針對它的介紹網(wǎng)上有很多了,我們就不專門介紹這款芯片了。 今天是針對U-boot的移植。我們先來看看u-boot的特點,u-boot是Boot-loader的一種可以負責板子上電后硬件初始化工作,以及內(nèi)核引導。它可以為用戶提供一個可交互的界面,使開機過程可控,可調(diào),方便開發(fā)人員調(diào)試。 今天我們移植的版本是u-boot1.3.1這是一個比較成熟的版本,我們先來看看要移植一個u-boot需要注意哪些問題。 首先我們應該先拿到一個u-boot源碼,應該是如下圖: 《源碼》 其中比較重要的、有針對性的目錄是board, cpu, include等。我們要修改的大部分內(nèi)容將集中在這些目錄里面。 由于,篇幅有限這次只介紹CPU中針對內(nèi)存控制器的初始化部分的內(nèi)容:
ldr r0, =0xE6000000 這部分內(nèi)容是用匯編語言寫的看起來比較清爽,沒有太多的復雜的邏輯。 上面的代碼是用來判斷我們處理器的封裝形式的,其中r1中存放著芯片ID寄存器的地址,這是一個32位寄存器,其中記錄了芯片的型號如果是s5pc100的話,這個寄存器的前20位應該是“0x43100”。其中,第9位是用來判斷芯片的封裝形式的,如果為1,表示是POP形式就是。為0,表示是分立元件。我們一般使用分立式元件。
ldr r1, =0x6a101000 這部分是真對,DDR內(nèi)存而設置的,DLL(delay locked loop)參數(shù)。
ldr r1, =0x6a101002
這是開啟DLL工作。 檢查DLL鎖,是否已經(jīng)鎖上。
ldr r1,[r2]
ldr r1, =0x6a101003
ldr r1, =0x6a101009 完成必要的設置,暫停DLL。
ldr r1, =0x20f01313 配置256MB內(nèi)存AXI設置地址。
ldr r1, =0x20000000 設置自刷新周期
ldr r1, =0x0000050E
ldr r1, =0x07c80232 這個地方是設置內(nèi)存芯片的交流(AC)參數(shù)時序信息包括TimingAref, TimingRow, TimingData 和 TimingPower
ldr r1, =0x07000000
ldr r1, =0x00020000
ldr r1, =0x00030000
ldr r1, =0x00010400
ldr r1, =0x00000532
ldr r1, =0x01000000
ldr r1, =0x05000000
ldr r1, =0x00000432
ldr r1, =0x00010780
ldr r1, =0x00010402 首先是喚醒chip0,然后所有模塊預充電(這是為讀取操作做準備),對bank2-3發(fā)msr/emsr命令(模式設定),設定內(nèi)存進入自動刷新模式。后是對EMRS寄存器進行設設置。
ldr r1, =0x00ff20b0 打開自動刷新,設定讀數(shù)據(jù)的取周期,設定內(nèi)存的類型為DDR2和32位位寬。芯片數(shù)是2片,BL(burst length)=4。
相關資訊
發(fā)表評論
|