国产成人精品三级麻豆,色综合天天综合高清网,亚洲精品夜夜夜,国产成人综合在线女婷五月99播放,色婷婷色综合激情国产日韩

Hi,歡迎來到嵌入式培訓高端品牌 - 華清遠見教育科技集團<北京總部官網>,專注嵌入式工程師培養(yǎng)15年!
當前位置: > 華清遠見教育科技集團 > 嵌入式學習 > 講師博文 > s5pc100中uboot移植之內存控制器的設置
s5pc100中uboot移植之內存控制器的設置
時間:2017-01-05作者:華清遠見

s5pc100是三星公司推出的基于Cortax-A8核心的一款專門針對應用、消費類電子產品而設計的芯片,針對它的介紹網上有很多了,我們就不專門介紹這款芯片了。

今天是針對U-boot的移植。我們先來看看u-boot的特點,u-boot是Boot-loader的一種可以負責板子上電后硬件初始化工作,以及內核引導。它可以為用戶提供一個可交互的界面,使開機過程可控,可調,方便開發(fā)人員調試。

今天我們移植的版本是u-boot1.3.1這是一個比較成熟的版本,我們先來看看要移植一個u-boot需要注意哪些問題。

首先我們應該先拿到一個u-boot源碼,應該是如下圖:

《源碼》

其中比較重要的、有針對性的目錄是board, cpu, include等。我們要修改的大部分內容將集中在這些目錄里面。

由于,篇幅有限這次只介紹CPU中針對內存控制器的初始化部分的內容:

ldr r0, =0xE6000000
        ldr r1, =0xE0000000
        ldr r2, [r1]
        bic r2, #0xfffffdff
        mov r2, r2, lsr #9
        cmp r2, #0x1
        beq onenand_pop

這部分內容是用匯編語言寫的看起來比較清爽,沒有太多的復雜的邏輯。

上面的代碼是用來判斷我們處理器的封裝形式的,其中r1中存放著芯片ID寄存器的地址,這是一個32位寄存器,其中記錄了芯片的型號如果是s5pc100的話,這個寄存器的前20位應該是“0x43100”。其中,第9位是用來判斷芯片的封裝形式的,如果為1,表示是POP形式就是。為0,表示是分立元件。我們一般使用分立式元件。

ldr r1, =0x6a101000
        str r1, [r0, #0x18]
        ldr r1, =0x000084f4
        str r1, [r0, #0x1c]
        ldr r1, =0x0
        str r1, [r0, #0x20]

這部分是真對,DDR內存而設置的,DLL(delay locked loop)參數。

ldr r1, =0x6a101002
        str r1, [r0,#0x18]
        ldr r1, =0x6a101003
        str r1, [r0,#0x18]

這是開啟DLL工作。
        ldr r2, =0xe6000040
        loop1:
        ldr r1,[r2]
        ands r1,r1,#4
        beq loop1

檢查DLL鎖,是否已經鎖上。

ldr r1,[r2]
        mov r1,r1, LSR #(0x6)
        ldr r2, =0xE6000018
        ldr r3,[r2]
        bic r3,r3,#(0xff000000)
        orr r1,r3,r2
        str r1,[r2]

ldr r1, =0x6a101003
        str r1, [r0, #0x18]

ldr r1, =0x6a101009
        str r1, [r0, #0x18]

完成必要的設置,暫停DLL。

ldr r1, =0x20f01313
        str r1, [r0, #0x08]
        ldr r1, =0x40f01313
        str r1, [r0, #0x0c]

配置256MB內存AXI設置地址。

ldr r1, =0x20000000
        str r1, [r0, #0x14]
        ldr r1, =0x00100004
        str r1, [r0, #0x28]

設置自刷新周期

ldr r1, =0x0000050E
        str r1,[r0, #0x30]
        ldr r1, =0x16233297
        str r1, [r0,#0x34]
        ldr r1, =0x23230000
        str r1, [r0,#0x38]

ldr r1, =0x07c80232
        str r1, [r0, #]

這個地方是設置內存芯片的交流(AC)參數時序信息包括TimingAref, TimingRow, TimingData 和 TimingPower

ldr r1, =0x07000000
        str r1, [r0, #0x10]
        ldr r1, =0x01000000
        str r1, [r0, #0x10]

ldr r1, =0x00020000
        str r1, [r0, #0x10]

ldr r1, =0x00030000
        str r1, [r0, #0x10]

ldr r1, =0x00010400
        str r1, [r0, #0x10]

ldr r1, =0x00000532
        str r1, [r0, #0x10]

ldr r1, =0x01000000
        str r1, [r0, #0x10]

ldr r1, =0x05000000
        str r1, [r0, #0x10]

ldr r1, =0x00000432
        str r1, [r0, #0x10]

ldr r1, =0x00010780
        str r1, [r0, #0x10]

ldr r1, =0x00010402
        str r1, [r0, #0x10]

首先是喚醒chip0,然后所有模塊預充電(這是為讀取操作做準備),對bank2-3發(fā)msr/emsr命令(模式設定),設定內存進入自動刷新模式。后是對EMRS寄存器進行設設置。

ldr r1, =0x00ff20b0
        str r1, [r0, #0x0]
        ldr r1, =0x00212413
        str r1, [r0, #0x4]
        b exit_cpu_init

打開自動刷新,設定讀數據的取周期,設定內存的類型為DDR2和32位位寬。芯片數是2片,BL(burst length)=4。

發(fā)表評論
評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)