新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > U-Boot在LPC2210上的移植分析

        U-Boot在LPC2210上的移植分析

        作者: 時間:2012-03-22 來源:網絡 收藏

        移植相關硬件地址空間分配為:FLASH 2MB 0x80000000~0x801FFFFF;PSRAM 8MB 0x81000000~0x817FFFFF;以太網控制器RTL8019 0x83400000~0x8340001F。由于源碼包中已經包含強大的網絡技術的支持和豐富的硬件驅動代碼,因此移植到新的開發板我們上只需修改和硬件相關代碼。

        移植U-Boot工作就是添加開發板硬件相關文件、配置選項、然后配置編譯。由于目前U-Boot并不支持處理器,比較后我們選擇與 同基于ARM7TDMI-S架構的S3C44B0處理器及相關的B2開發板,以S3C44B0和B2開發板為基礎來完成移植工作。

        首先在cpu目錄下建立lpc2210目錄并在其下建立和處理器移植相關文件,為開發板取名為dx2210并在board文件夾下建立dx2210 子目錄,在SHELL環境下輸入命令cp –rf board/dave/B2 board/dx2210將B2開發板的內容復制到dx2210中,并注意修改文件中開發板名稱;在include/configs文件夾中建立配置頭文件dx2210.h,用命令cp include/configs/B2.h include/configs/dx2210.h將B2.h文件的內容復制到dx2210.h中以便與后面修改;修改頂層Makefile文件為開發板建立新的編譯選項,由于U-Boot的源代碼是通過GCC和Makefile組織編譯的。在源代碼頂層目錄下的Makefile首先設置開發板的定義,然后遞歸地調用各級子目錄下的Makefile文件,最后把編譯過的程序鏈接成U-Boot可執行映像。因此利用vim在Makefie文件中添加配置命令:

        dx2210_config : unconfig

        @ ./mkconfig $(@ : _config=) arm lpc2210 dx2210 NULL

        各項定義如下:

        arm CPU架構(ARCH)

        lpc2210 CPU的類型(CPU),其對應于cpu/lpc2210子目錄

        dx2210 開發板型號(BOARD), 其對應于board/dx2210子目錄

        NULL 開發板或硬件經銷商(VENDER)

        這樣在執行配置命令make dx2210_config,通過./config腳本可生成include/config.mk的配置文件,硬件平臺依賴文件的目錄文件可以根據這些定義來確定。

        5.2修改include/configs/dx2210.h文件

        在include/configs/dx2210.h文件中包含了大部分的全局宏定義。主要修改的宏定義有:#define CONFIG_ 1 //CPU配置型號

        #define CONFIG_LPC2210_CLOCK_SPEED 60 //最大CPU操作頻率

        #define CONFIG_DRIVER_RTL8019 1 //定義以太網控制器型號

        #define RTL8019_BASE 0x83400000 //RTL8019的硬件地址

        #define CONFIG_SERIAL 1 //串口設置

        #define CFG_LOAD_ADDR 0x81008000 //kernel映像加載到RAM空間中的起始地址

        此外還需要修改開發板的波特率,配置網絡信息,FLASH ROM和RAM的容量大小、地址信息,操作時序等參數。

        5.3 cpu/lpc2210目錄下相關文件

        該目錄中包含了Makefile、config.mk、cpu.c、interrupts.c、serial.c、start.S幾個文件。其中匯編文件start.S是整個程序的入口,主要設置系統堆棧和工作方式為進入C程序奠定基礎。根據RAM地址將中斷向量表起始地址 0x0c000000修改為0x81000000,根據LPC2210的芯片手冊完成設置CPU速度和時鐘頻率、為加載Stage2準備RAM空間并將 Stage2加載到RAM中執行、設置堆棧、看門狗、屏蔽所有中斷部分的修改。這里注意的是TEXT_BASE變量是在board/dx2210 /config.mk文件中定義,它規定了主程序TEXT段在內存RAM中的起始地址,當u-boot從FLASH中啟動后會把Stage2階段的代碼和數據重定位到這個地址開始的RAM中運行以提高速度。復制時要明確Stage2的可執行映像在固態存儲設備的存放的起始地址和終止地址,一般來說給 Stage2部分在RAM地址頂端分配1MB的空間,因此經過計算得出TEXT_BASE=0x81700000;serial.c文件是串口設備的驅動代碼,在調試部分主要依靠串口產生調試信息,串口波特率設置為115200bit/s;cpu.c文件初始化CPU、由于LPC2210中并沒有指令 Cache和數據Cache,則應用源碼提供的icache_disable(void)和dcache_disable(void)兩個函數禁止這部分代碼功能;interrupt.c文件設置系統的各種中斷和異常,在階段應禁止中斷的產生。



        關鍵詞: Bootloader U-Boot LPC2210

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 民县| 青铜峡市| 晴隆县| 河源市| 青海省| 洛南县| 九龙坡区| 无为县| 泰州市| 清水河县| 陆川县| 常州市| 郓城县| 潼南县| 玉田县| 曲周县| 无锡市| 新安县| 自治县| 仁化县| 忻城县| 丹江口市| 广河县| 南岸区| 东源县| 凤阳县| 左云县| 平利县| 虞城县| 西盟| 凤山县| 金平| 衡南县| 金塔县| 仁怀市| 西藏| 常州市| 吉首市| 文昌市| 和硕县| 大连市|