PXA272啟動(dòng)引導程序的實(shí)現和功能擴展
系統存儲器初始化:通過(guò)配置功能寄存器來(lái)實(shí)現;在Pxa272上電后,SDRAM處于睡眠無(wú)時(shí)鐘狀態(tài),初始化必須完成SDRAM狀態(tài)機轉化過(guò)程,相關(guān)的寄存器:MDREFR、MDCNFG等。SDRAM的狀態(tài)轉換通過(guò)配置存儲器的相應位,產(chǎn)生對應的命令實(shí)現狀態(tài)機轉換[1]。
4.2內核加載(Loader)
為加載內核,需初始化必要設備:網(wǎng)絡(luò )接口、串行接口、Flash等;PXA272支持BTUART(藍牙)、FFUART(全功能串口)、 STUART(標準串口)??梢酝ㄟ^(guò)串口實(shí)現與終端用戶(hù)的交互,終端打印信息是非常重要的調試手段。片載的Flash遵循CFI規范(Common Flash Interface)。
內核加載前規劃好內存空間:設置內存大小和起始地址,BootLoader、內核、ramdisk、root鏡像在flash和SDRAM中的存放區域、大小。在這里確定好下載各個(gè)鏡像文件存放的地址以及鏡像加載后釋放的位置。內存地址的安排關(guān)系到操作系統能否正常的啟動(dòng)、運行。
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的地址映射。
評論