<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

U-Boot在LPC2210上的移植分析

作者: 時(shí)間:2012-03-22 來(lái)源:網(wǎng)絡(luò ) 收藏

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

移植U-Boot工作就是添加開(kāi)發(fā)板硬件相關(guān)文件、配置選項、然后配置編譯。由于目前U-Boot并不支持處理器,比較后我們選擇與 同基于A(yíng)RM7TDMI-S架構的S3C44B0處理器及相關(guān)的B2開(kāi)發(fā)板,以S3C44B0和B2開(kāi)發(fā)板為基礎來(lái)完成移植工作。

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

dx2210_config : unconfig

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

各項定義如下:

arm CPU架構(ARCH)

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

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

NULL 開(kāi)發(fā)板或硬件經(jīng)銷(xiāo)商(VENDER)

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

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 //定義以太網(wǎng)控制器型號

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

#define CONFIG_SERIAL 1 //串口設置

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

此外還需要修改開(kāi)發(fā)板的波特率,配置網(wǎng)絡(luò )信息,FLASH ROM和RAM的容量大小、地址信息,操作時(shí)序等參數。

5.3 cpu/lpc2210目錄下相關(guān)文件

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



關(guān)鍵詞: Bootloader U-Boot LPC2210

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>