新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Redboot修改實例

        Redboot修改實例

        作者: 時間:2012-07-25 來源:網絡 收藏

        在通常情況下,嵌入式開發中都需要對bootload部分的代碼進行,以適應實際的需求。本文以redboot為例,說明了如何redboot源碼以使其具備

        本文引用地址:http://www.104case.com/article/148720.htm

        1. 啟動時提供LOGO圖片顯示

        2. 為實現量產,在命令行下提供自動配置網絡的命令autocONfig

        3. 為實現量產,在命令行下提供自動更新文件的命令update

        4. 為實現量產,在命令行下提供自動配置腳本的命令autoexec

        適用的運行環境為基于ARM架構的硬件環境,包括

        運行環境如下表所示。

        是Red Hat公司開發的一個獨立運行在嵌入式系統上的BootLoad程序,是目前比較流行的一個功能強大、可移植性好的BootLoad。

        是一個采用eCos開發環境開發的應用程序,并采用了eCos的硬件抽象層作為基礎,但它完全可以脫離eCos環境運行,并用來引導人和其他的嵌入式操作系統,如Linux、WinCE等。

        eCos實現系統可配置機制的核心就在于它是由許多個組件構成,包括調度內核組件、硬件抽象層、文件系統組件、網絡協議棧等,用戶可以根據不同的需求選擇組件,并對一些特定的配置選項進行設置,就可以構造出滿足特定應用需求的系統。

        所有的組件都在組件庫中,組件庫其實是一個包含了eCos所有系統組件的文件夾,其路徑對應于“/eCos-2.0/packages”,該目錄的內容如下所示

        ☆ compat

        包含支持與POSIX和uITRON3.0標準兼容的組件文件包

        ☆ cygmon

        生成Cygmon調試監視器的配置文件包

        ☆ devs

        eCos支持的所有外部設備驅動,如串口、以太網等

        ☆ error

        包含各種常見的錯誤和狀態描述代碼,便于系統調試時報告錯誤和狀態

        ☆ fs

        包含ROM和RAM文件系統包

        ☆ hal

        包含所有硬件抽象層的目標硬件配置文件包

        ☆ infra

        包含系統定義的基本結構,如數據類型、宏定義、系統啟動方式選擇

        ☆ io

        I/O子系統文件包,建立在外部設備驅動上層從而與特定硬件無關

        ☆ isoinfra

        包含的文件包提供支持ISO標準C庫和兼容POSIX標準的接口

        ☆ kernel

        提供eCos內核功能的配置文件包

        ☆ language

        包含ISO的C庫和math庫

        ☆ net

        提供TCP/IP協議棧支持的文件包

        ☆ redboot

        包含生成Redboot調試監視器的配置文件包

        ☆ services

        包含提供動態內存分配和文件壓縮與解壓功能的庫文件

        與硬件相關的文件按照如上所述,分別對應以下的子目錄:

        “/eCos-2.0/packages/hal/arm”:Architectur HAL

        “/eCos-2.0/packages/hal/arm/arm9”:Variant HAL

        “/eCos-2.0/packages/hal/arm/arm9/ep93xx”:Platform. HAL

        為了實現本文開頭的四項特殊功能,需要eCos中的部分代碼。修改的文件為:

        “/eCos-2.0/packages/hal/arm/arm9/ep93xx/v2_0/src/ep93xx_misc.c”

        “/eCos-2.0/packages/redboot/v2_0/src/Flash.c”

        “/eCos-2.0/packages/redboot/v2_0/src/io.c”

        “/eCos-2.0/packages/redboot/v2_0/src/main.c”

        ep93xx_misc的修改

        在本例中,開發平臺上添加了一塊FPGA芯片,通過該FPGA實現了對LCD的控制,因此對于raSTer的初始化過程有所不同。

        該部分的修改,主要目的是提供“啟動時提供logo圖片顯示”的功能。

        增加__FPGA_LCD__宏定義

        增加_RASTER_宏定義

        _RASTER_ 完成Raster設置并且顯示開機界面。

        _ FPGA_LCD _ 完成FPGA設置并且顯示開機界面。

        Raster:

        initRaster用來初始化LCD controller

        LCD 界面定制在Nor Flash AddrESS 0x60DC0000

        Copy Kernel 到指定Address, Copy zImage 到0x800000(SDRAM Address)

        FPGA:

        1. check chip 分區是否存在

        2. 如果存在則Copy logo and chip 到指定地址。

        3. 初始化FGPA。

        4. 顯示開機界面。

        5. Copy Kernel 到指定地址。

        初始化FPGA流程:

        1. Config相關GPIO

        a) GPIO 0-7===D0~D7為輸出

        b) GPIO 9,11,12===PROG_B,CSI_B,CCLK為輸出 8,10===DONE,INIT_B為輸入

        2. Clear相關SDRAM

        a) set prog_b low to clear the config data

        b) start the config process

        c) ready to read the init_b status

        3. 寫Chip.bin

        4. 顯示logo

        SDRAM write流程如下圖所示:

        1. 根據CPU_buffer的使用情況,將準備寫入SDRAM的數據,先存入CPU_buffer中。

        2. 然后需要依次配置ADDR1、ADDR0、CONTROL_REG。

        3. cpu_sdram_cmdgen會根據以上寄存器的設置,將cpu_buffer中的數據發送至arbiter,后存入SDRAM.

        4. 數據請求完成后,cpu_sdram_cmdgen會將CONTROL_REG.ACT自動清除。

        5. CPU可以通過查詢CONTROL_REG.ACT位,得知當前寫入SDRAM數據的操作是否完成。

        6. 寫SDRAM步驟如下

        a) write (16'h00F0, 16'haaaa);

        b) write (16'h00F1, 16'hbbbb);

        c) write (16'h00F2, 16'hcccc);

        d) write (16'h00F3, 16'hdddd);

        e) write (16'h00F4, 16'heeee);

        f) write (16'h00F5, 16'hffff);

        g) write (16'h00F6, 16'h5555);

        h) write (16'h00F7, 16'h6666);

        i) write (16'h00F8, 16'h9999);

        j) write (16'h00F9, 16'h7777);

        k) write (16'h00Fa, 16'h8888);


        上一頁 1 2 下一頁

        關鍵詞: 實例 修改 Redboot

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 福建省| 盘锦市| 乐至县| 于都县| 汽车| 吉隆县| 高阳县| 东台市| 宝山区| 余干县| 桐乡市| 扎兰屯市| 乌拉特前旗| 当雄县| 布尔津县| 闻喜县| 天气| 礼泉县| 古蔺县| 宣恩县| 闵行区| 临夏县| 岗巴县| 奉贤区| 新竹县| 项城市| 盈江县| 闽侯县| 台南县| 鹿邑县| 临潭县| 游戏| 广饶县| 沐川县| 隆林| 乐都县| 五峰| 南开区| 辽阳县| 辉南县| 昔阳县|