|   s5pc100中uboot移植之內存控制器的設置  時間:2017-01-05作者:華清(qing)遠見 s5pc100是(shi)三星公(gong)司(si)推(tui)出的(de)(de)基(ji)于Cortax-A8核心的(de)(de)一款專門針對應用、消費類電(dian)子產品而設計的(de)(de)芯(xin)片(pian),針對它的(de)(de)介紹網上有很(hen)多了,我們就不(bu)專門介紹這(zhe)款芯(xin)片(pian)了。 今天是(shi)針對(dui)U-boot的(de)移植。我們先來看看u-boot的(de)特點(dian),u-boot是(shi)Boot-loader的(de)一種可(ke)(ke)以負責(ze)板子上電(dian)后硬(ying)件初始化工作,以及內核引導。它可(ke)(ke)以為用戶提供一個可(ke)(ke)交互的(de)界面(mian),使開(kai)機過程可(ke)(ke)控,可(ke)(ke)調(diao),方便開(kai)發人員調(diao)試(shi)。 今天(tian)我們移植的版本是(shi)u-boot1.3.1這是(shi)一個比較成(cheng)熟(shu)的版本,我們先來看看要(yao)移植一個u-boot需要(yao)注意哪(na)些問(wen)題。 首先(xian)(xian)我們應該先(xian)(xian)拿到一個u-boot源碼(ma),應該是如下圖(tu): 《源碼》 其中比較(jiao)重(zhong)要的、有(you)針對(dui)性的目錄(lu)是board, cpu, include等。我們要修改的大部(bu)分內容將集中在這些目錄(lu)里面(mian)。 由(you)于,篇幅有限(xian)這次只介(jie)紹CPU中針對內存控(kong)制(zhi)器的初(chu)始化部分的內容: 
	ldr r0, =0xE6000000 這部分內容是用匯(hui)編語言寫(xie)的(de)(de)(de)看起(qi)來比(bi)較清爽(shuang),沒有太多的(de)(de)(de)復(fu)雜的(de)(de)(de)邏輯。 上(shang)面的(de)(de)(de)代碼是(shi)用來(lai)判斷我(wo)(wo)們處理器(qi)的(de)(de)(de)封裝形式的(de)(de)(de),其(qi)中(zhong)r1中(zhong)存放著芯片(pian)(pian)ID寄(ji)存器(qi)的(de)(de)(de)地(di)址,這是(shi)一(yi)(yi)個32位(wei)寄(ji)存器(qi),其(qi)中(zhong)記(ji)錄(lu)了芯片(pian)(pian)的(de)(de)(de)型號(hao)如果是(shi)s5pc100的(de)(de)(de)話(hua),這個寄(ji)存器(qi)的(de)(de)(de)前20位(wei)應該是(shi)“0x43100”。其(qi)中(zhong),第9位(wei)是(shi)用來(lai)判斷芯片(pian)(pian)的(de)(de)(de)封裝形式的(de)(de)(de),如果為(wei)1,表(biao)示是(shi)POP形式就(jiu)是(shi)。為(wei)0,表(biao)示是(shi)分(fen)立元(yuan)件。我(wo)(wo)們一(yi)(yi)般使(shi)用分(fen)立式元(yuan)件。 
	ldr r1, =0x6a101000 這部分是真對(dui),DDR內存而設置(zhi)的,DLL(delay locked loop)參數。 
	ldr r1, =0x6a101002 
	這是開啟DLL工作。 檢查(cha)DLL鎖,是否已經(jing)鎖上。 
	ldr r1,[r2] 
	ldr r1, =0x6a101003 
	ldr r1, =0x6a101009 完成(cheng)必(bi)要的設置,暫(zan)停DLL。 
	ldr r1, =0x20f01313 配置(zhi)256MB內存AXI設置(zhi)地址。 
	ldr r1, =0x20000000 設置自刷新(xin)周期 
	ldr r1, =0x0000050E 
	ldr r1, =0x07c80232 這個地方是設置內存芯片的交流(AC)參數時序信息包括TimingAref, TimingRow, TimingData 和(he) 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 首(shou)先是喚醒chip0,然后所有模塊預充電(dian)(這是為讀取操作(zuo)做準備),對bank2-3發msr/emsr命令(ling)(模式設(she)定),設(she)定內(nei)存進(jin)入(ru)自(zi)動刷新模式。后是對EMRS寄(ji)存器進(jin)行設(she)設(she)置。 
	ldr r1, =0x00ff20b0 打開自動刷新,設定讀(du)數(shu)據的取(qu)周期,設定內存(cun)的類型為DDR2和32位(wei)位(wei)寬。芯(xin)片數(shu)是(shi)2片,BL(burst length)=4。 
 相關資訊 發表評論 
 |