新聞中心

        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

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 错那县| 鲁山县| 江阴市| 龙江县| 息烽县| 奈曼旗| 阳信县| 双鸭山市| 浮梁县| 文化| 隆林| 饶河县| 昆山市| 金山区| 吉林省| 潞城市| 定边县| 茶陵县| 马鞍山市| 九台市| 陇西县| 安义县| 五台县| 宾川县| 桦南县| 西贡区| 万年县| 久治县| 竹溪县| 阿巴嘎旗| 清镇市| 卓资县| 富锦市| 常德市| 乃东县| 碌曲县| 特克斯县| 图们市| 泌阳县| 雅江县| 邢台市|