移植uboot到powerpc(1)--配置頭文件,u-boot,ppc ,mpc85 mpc83【轉(zhuǎn)帖請(qǐng)注明出處:blog.csdn.net/lanmanck】
這里以mpc83x為例。uboot1.3.2,ddr2-128m,位于0x00000000;啟動(dòng)flash512k-8bit,位于0xfff00000處。 其實(shí)每個(gè)powerpc出廠(chǎng)前飛思卡爾都做好開(kāi)發(fā)板了。就是說(shuō)uboot和kernel都是現(xiàn)成的。 這里說(shuō)的移植,應(yīng)該比ic廠(chǎng)商的軟件工程師輕松點(diǎn),畢竟是在他們的基礎(chǔ)上做的,呵呵。
首先打開(kāi)配置頭文件,include/configs/mpc8323erdb.h,把不需要的去掉,比如我這里是pci不要。
1》配置immr基址:#define CFG_IMMR 0xE0000000 這個(gè)基本上是死的,至于為何要重新配置,大家就要看看powerpc的架構(gòu)和啟動(dòng)方式了。 2》配置ddr相關(guān)數(shù)據(jù):#define CFG_DDR_BASE 0x00000000 把ddr寄存器配置為你實(shí)際接的大小,這個(gè)跟ddr大小、布線(xiàn)都有關(guān)系??梢韵扔梅抡嫫髟嚦鰜?lái)你的ddr是否好用。比如這幾個(gè): #define CFG_DDR_SIZE 128 /* 我們的是128MB ,原來(lái)64MB*/ 3》關(guān)于CFG_MONITOR_BASE 這個(gè)宏定義很不好理解,實(shí)際上就是uboot自己在flash的起始地址,因?yàn)槲覀冇袝r(shí)候要調(diào)試uboot,所以老外就稱(chēng)之為monitor。文化不同,真是費(fèi)解啊。 一般是這樣定義的: #define CFG_MONITOR_BASE TEXT_BASE /* =0xFFF00000 */ 其中,text_base就是代碼段地址,也就是你燒入uboot的地址,他在board/freescale/mpc8323erdb/config.mk定義。 CFG_FLASH_BASE也是flash地址,與text_base一樣。 那cfg_ramboot什么意思,我跟了下代碼,加上定義名字的理解,應(yīng)該是在內(nèi)存直接運(yùn)行的意思。這個(gè)應(yīng)該是從仿真器直接下載uboot到內(nèi)存有關(guān)系吧。不過(guò)以前調(diào)試arm的時(shí)候也沒(méi)這么麻煩,直接就跑了。這個(gè)應(yīng)該跟架構(gòu)有關(guān)系。 但是注意,flash地址也是變的,下面會(huì)講到 。這個(gè)搞得這么復(fù)雜只好問(wèn)飛思卡爾那幫家伙了。大家都那么難理解,估計(jì)他是不想賣(mài)啊。 4》關(guān)于CFG_MONITOR_LEN #define CFG_MONITOR_LEN (256 * 1024) 這個(gè)就是uboot的大小,個(gè)人認(rèn)為是多此一舉。把它設(shè)大點(diǎn)就行了。 5》配置flash參數(shù) 我用的是SST39VF040=512kx8 bit,不是CFI接口,而是JEDEC接口的。所以還要多加2個(gè)定義: #define CONFIG_FLASH_CFI_LEGACY 當(dāng)然,他還需要調(diào)用CFI接口函數(shù),所以CFI的不能省略。 添加CONFIG_FLASH_CFI_LEGACY后要手動(dòng)添加一個(gè)函數(shù): ulong board_flash_get_legacy (ulong base, int banknum, flash_info_t * info)。實(shí)現(xiàn)代碼網(wǎng)上有,很短。 #ifdef CFG_SYS_FLASH_CFI ulong board_flash_get_legacy(ulong base, int banknum, flash_info_t *info) 把它放到board/freescale/mpc8323erdb/mpc8323erdb.c即可。 另外,配置#define CFG_FLASH_SIZE 1,這個(gè)宏以MB為單位,我的是512k,只能配為1M,這個(gè)沒(méi)有關(guān)系。后面會(huì)看到,他最少會(huì)認(rèn)為是1MB(老外比較有錢(qián),不考慮成本) 6》接下來(lái)就是接啟動(dòng)flash的cs0的配置了: #define CFG_LBLAWAR0_PRELIM 0x80000013 /* 1MB window size 這個(gè)不知道可不可以配多點(diǎn)*/ #define CFG_BR0_PRELIM (CFG_FLASH_BASE | /* Flash Base address */ / #define CFG_OR0_PRELIM 0xfff06ff7 /* 這個(gè)也要根據(jù)flash大小配置*/ 先到此為止,以后接著講啟動(dòng)過(guò)程。 |
|