乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      移植uboot到powerpc(1)

       WUCANADA 2013-07-30

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

      分類: PPC平臺 1670人閱讀 評論(0) 收藏 舉報

      【轉(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*/
      #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

      這個宏定義很不好理解,實際上就是uboot自己在flash的起始地址,因為我們有時候要調(diào)試uboot,所以老外就稱之為monitor。文化不同,真是費解啊。

      一般是這樣定義的:

      #define CFG_MONITOR_BASE    TEXT_BASE        /* =0xFFF00000 */

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

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

      當然,他還需要調(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)
       {
              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,這個宏以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 */ /
                  (1 << BR_PS_SHIFT) |    /* 1=8 bit port size,2=16bit 改成自己的即可*/ /
                  BR_V)

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

      先到此為止,以后接著講啟動過程。

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多