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