日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

移植uboot到powerpc(1)

 WUCANADA 2013-07-30

移植uboot到powerpc(1)--配置頭文件,u-boot,ppc ,mpc85 mpc83

分類(lèi): PPC平臺(tái) 1670人閱讀 評(píng)論(0) 收藏 舉報(bào)

【轉(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*/
#define CFG_DDR_CS0_CONFIG    0x80010102
#define CFG_DDR_TIMING_0    0x00220802   
#define CFG_DDR_TIMING_1    0x26276222   
#define CFG_DDR_TIMING_2    0x0f9828cf    

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 */

#if (CFG_MONITOR_BASE < CFG_FLASH_BASE)
#define CFG_RAMBOOT
#else
#undef  CFG_RAMBOOT /*說(shuō)明沒(méi)有定義這個(gè),不從內(nèi)存啟動(dòng)*/
#endif

其中,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
#define CFG_FLASH_LEGACY_512Kx8

當(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)
 {
        info->portwidth = FLASH_CFI_16BIT;
         info->chipwidth = FLASH_CFI_BY16;
         info->interface = FLASH_CFI_X16;
         return 1;
 }
 #endif

把它放到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 */ /
            (1 << BR_PS_SHIFT) |    /* 1=8 bit port size,2=16bit 改成自己的即可*/ /
            BR_V)

#define CFG_OR0_PRELIM        0xfff06ff7    /* 這個(gè)也要根據(jù)flash大小配置*/

先到此為止,以后接著講啟動(dòng)過(guò)程。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多