PXA272啟動(dòng)引導(dǎo)程序的實(shí)現(xiàn)和功能擴(kuò)展
系統(tǒng)存儲(chǔ)器初始化:通過配置功能寄存器來實(shí)現(xiàn);在Pxa272上電后,SDRAM處于睡眠無時(shí)鐘狀態(tài),初始化必須完成SDRAM狀態(tài)機(jī)轉(zhuǎn)化過程,相關(guān)的寄存器:MDREFR、MDCNFG等。SDRAM的狀態(tài)轉(zhuǎn)換通過配置存儲(chǔ)器的相應(yīng)位,產(chǎn)生對(duì)應(yīng)的命令實(shí)現(xiàn)狀態(tài)機(jī)轉(zhuǎn)換[1]。
4.2內(nèi)核加載(Loader)
為加載內(nèi)核,需初始化必要設(shè)備:網(wǎng)絡(luò)接口、串行接口、Flash等;PXA272支持BTUART(藍(lán)牙)、FFUART(全功能串口)、 STUART(標(biāo)準(zhǔn)串口)。可以通過串口實(shí)現(xiàn)與終端用戶的交互,終端打印信息是非常重要的調(diào)試手段。片載的Flash遵循CFI規(guī)范(Common Flash Interface)。
內(nèi)核加載前規(guī)劃好內(nèi)存空間:設(shè)置內(nèi)存大小和起始地址,BootLoader、內(nèi)核、ramdisk、root鏡像在flash和SDRAM中的存放區(qū)域、大小。在這里確定好下載各個(gè)鏡像文件存放的地址以及鏡像加載后釋放的位置。內(nèi)存地址的安排關(guān)系到操作系統(tǒng)能否正常的啟動(dòng)、運(yùn)行。
Parts[i].name = XXXX; //鏡像名(Boot/Kernal/Ramdisk)
Parts[i].sramb = XXXX_SRAM_BASE;//在flash中的基地址
Parts[i].srams = XXXX_MAX_SIZE; //在flash中鏡像大小
Parts[i].dramb = XXXX_DRAM_BASE; //在DRAM中的基地址
Parts[i].drams = 0;
Parts[i].maxs = XXXX_MAX_SIZE; //鏡像大小
這里基本確定flash和DRAM的地址映射。
評(píng)論