在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > U-Boot在S3C2410上的移植分析

            U-Boot在S3C2410上的移植分析

            作者: 時間:2012-04-19 來源:網(wǎng)絡(luò) 收藏

            與測試

            為了使工作更加快捷,應(yīng)當(dāng)選擇當(dāng)前發(fā)布的最新版本1.1.2 (盡管通過CVS可以得到1.1.3,但其正在開發(fā),尚未發(fā)布,不宜使用) 。因為最新的版本可以提供盡可能多的處理器核及開發(fā)板的支持。 對于U-Boot-1.1.2 而言,它不僅提供對ARM- 920T內(nèi)核的支持,而且直接提供了對于 的板級支持,這使工作量相對減少。

            支持ARM- 920T內(nèi)核的代碼修改

            由于U-Boot-1.1.2 提供對ARM-920T 內(nèi)核的直接支持,所以本步驟不需要做任何工作,本文為了讓讀者了解BootLoder 移植的通用模式,在此只是稍加提示。

            配置自己的開發(fā)板

            建立自己開發(fā)板的目錄和相關(guān)文件。

            1) 在include/ configs目錄中以smdk2410.h為模板添加頭文件. h(cp smdk2410.h .h) 。 這個文件是開發(fā)板的配置文件,它包括開發(fā)板的CPU、系統(tǒng)時鐘、RAM、Flash系統(tǒng)及其它相關(guān)的配置信息。

            2) 在board/目錄下創(chuàng)建S3C2410目錄??截恠mdk2410目錄下所有文件到S3C2410目錄下,共有如下六個文件:flash.c、 memsetup.c、S3C2410.c、Makefile、U-Boot .lds 和config.mk,根據(jù)開發(fā)板實際情況對各個文件進行修改。

            ◆flash.c.U-Boot讀、寫和刪除Flash 設(shè)備的源代碼文件。由于不同開發(fā)板中Flash 存儲器的種類各不相同,所以,修改flash.c時需參考相應(yīng)的Flash 芯片手冊。它包括如下幾個函數(shù):

            unsigned long flash-init (void ),F(xiàn)lash初始化;
            int flash-erase (flash-info-t *info,ints-first,ints -last),F(xiàn)lash擦除;
            volatile static int write- hword (flash-info-t *info,ulongdest , ulong data) ,F(xiàn)lash 寫入;
            int write-buff (flash-info-t *info,uchar *src ,ulongaddr,ulong cnt),從內(nèi)存復(fù)制數(shù)據(jù)。

            由于本文開發(fā)板所用flash芯片為IntelTE28f128,在board/ cmi目錄中有此flash.c,只需對其稍加修改即可使用。

            ◆memsetup.c.初始化時鐘、SMC控制器和SDRAM控制器。為了以后能用U-Boot的GO命令執(zhí)行修改過的用loadb或tftp下載的U-Boot.在標(biāo)記符“0:”上加入五句:

            mov r3,pc
            ldr r4,= 0x3FFF0000
            and r3,r3,r4 / /以上三句得到實際起動的內(nèi)存地址
            aad r0,r0,r3 / /用GO 命令調(diào)試uboot時,啟動地址在RAM
            add r2,r2,r3 / /把初始化內(nèi)存信息的地址,加上實際起動地址

            ◆S3C2410.C.設(shè)置各種總線時鐘,打開數(shù)據(jù)Cache和指令Cache,并設(shè)置相關(guān)內(nèi)存參數(shù)。

            ◆Makefile.修改:OBJS := S3C2410.o flash.omemsetup.o

            ◆U-Boot.lds.作如下修改:

            .text
            {
            cpu/ arm920t/ start.o ( .text)
            * (.text)
            }

            ◆config.mk.用于設(shè)置程序連接的起始地址,因為會在U-Boot 中增加功能,所以留下6M 的空間,修改33F80000 為33A00000。

            實現(xiàn)網(wǎng)卡的驅(qū)動程序

            在drivers/目錄中以dm9000x.c和dm9000x.h為模板添加網(wǎng)口設(shè)備控制程序dm9000.c和dm9000.h,其中dm9000.c主要包括以下函數(shù):

            int eth-init (bd-t *bd),初始化網(wǎng)絡(luò)設(shè)備;
            int eth-send(volatile void *,int),發(fā)送數(shù)據(jù)包;
            int eth-rx(void),接收數(shù)據(jù)包。
            void eth-halt (void),關(guān)閉網(wǎng)絡(luò)設(shè)備;

            為了方便網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)讀寫操作,還定義了如下函數(shù):

            static int dm9000-probe (void),搜索DM9000芯片,分配空間并登記之;
            static u16 phy-read(int),從Phyxcer寄存器讀取一個字;
            static void phy-write ( int,u16),寫一個字到Phyxcer 寄存器;
            static u16 read-srom-word (int),從SROM 讀取一個字數(shù)據(jù);
            static u8 DM9000-ior (int),從I/ O 口讀取一個字節(jié);
            static void DM9000-iow(int reg,u8 value),寫一個字節(jié)到I/ O 口;
            最后在drivers/Makefile中加入dm9000.o。

            修改Makefile 文件
            在U-Boot-1.1.2/Makefile中ARM92xT Systems注釋下面加入以下兩行:
            S3C2410-config :unconfig
              @./ mkconfig $( @:-config = ) arm arm920tS3C2410



            關(guān)鍵詞: U-Boot S3C2410 移植 BootLoader

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉