SmartARM2200開發(fā)板的RedBoot的移植
以SECTION_fixed_vectors(ram,0x81000000,LMA_EQ_VMA)為例,它表示fixed_vectors段屬于 ram內(nèi)存域,起始地址為0x81000000,加載內(nèi)存地址等于虛擬內(nèi)存地址。LMA_EQ_VMA同時也可以解釋為該內(nèi)存段不需要在程序運行后重新分配加載。本文引用地址:http://m.butianyuan.cn/article/157884.htm
5 驅(qū)動程序的移植
SST39VF1601的驅(qū)動是在SST39VF400的拷貝的基礎(chǔ)上修改的,主要改動部分如下:
RTL8019AS的驅(qū)動是在NS的DP89302A(都兼容NE2000)的拷貝基礎(chǔ)上修改的,應(yīng)該重點注意的是寄存器地址應(yīng)該乘以2(因為地址線是從 A1開始的),由于該地址總線上還有LCD模塊,為了兩者能同時工作,總線寬度設(shè)置為16位,RTL8019AS的寄存器是8位的,寫入和讀取函數(shù)定義為 8位的,數(shù)據(jù)的讀寫視工作在8位DMA或16位DMA而定。
6 調(diào)試結(jié)果
SmartARM2200開發(fā)板上帶有1塊2 MB的Flash和1塊16 MB的SRAM。
利用eCos的自帶編譯工具configtool對新建的SmartARM2200目標板進行編譯,生成RedBoot的目標文件。然后通過AXD下載到目標板的SRAM中運行。此時的RedBoot應(yīng)為RAM啟動方式。剛開始調(diào)試的難度有點大,因為AXD不支持elf文件的下載,有些目標文件可以通過 objdump反匯編對照調(diào)試。
通過對RedBoot的常用命令的測試結(jié)果可以看出,本文提供的SmartARM2200的移植方案是成功的,ping命令正常,tftp下載正常。
結(jié) 語
RedBoot和U-boot都是優(yōu)秀的bootloader程序,但RedBoot比U-boot的可移植性好。通過對RedBoot的移植可以熟悉 eCos系統(tǒng)的開發(fā)環(huán)境、configtool圖形化配置工具、硬件抽象層HAL及驅(qū)動的移植,為進一步eCos系統(tǒng)開發(fā)打下基礎(chǔ)。
評論