<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

          U-Boot在LPC2210上的移植分析

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

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

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

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

          dx2210_config : unconfig

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

          各項定義如下:

          arm CPU架構(gòu)(ARCH)

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

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

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

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

          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 //串口設(shè)置

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

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

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

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



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

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();