在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

RedBoot引導程序在SmartARM2200開發(fā)板中的移植參考研究

電子設計 ? 來源:單片機與嵌入式系統(tǒng)應用 ? 作者:李志訓 ? 2020-09-05 12:23 ? 次閱讀

引言

eCos(embedded Configurable operating system)最初是由Cygnus Solutions公司為面向嵌入式領域而開發(fā)的實時操作系統(tǒng),源碼公開,具有很強的可移植性和可配置性,適合于嵌入式開發(fā)?,F(xiàn)在eCos主要由 eCosCentric公司和eCos開源社區(qū)共同開發(fā)維護。eCos的特性,特別是它的可配置性,能有效縮短嵌入式產(chǎn)品的開發(fā)周期并降低成本。

RedBoot(Red Hat Embedded Debug and Bootstrap)是一個由Red Hat公司開發(fā)的可以在嵌入式系統(tǒng)上獨立運行的引導程序。它是目前嵌入式領域功能最強大、可移植性最好的BootLoader之一,采用eCos環(huán)境開發(fā),并以eCos的硬件抽象層作為基礎,但完全可以脫離eCos環(huán)境運行,可以用來引導任何嵌入式操作系統(tǒng),如Linux、WinCE等。

SmartARM2200開發(fā)板使用NXP公司的LPC2210微處理器。LPC2210基于ARM7TDMI-S內(nèi)核,系統(tǒng)時鐘頻率達60 MHz,總線對外開放,寬度可配置為8/16/32位。同時開發(fā)板還擴展了RTL8019AS(10 Mb/s)以太網(wǎng)控制器。本文將介紹SmartARM2200的移植方法,給其他以ARM為內(nèi)核的eCos底層移植開發(fā)提供參考。

1 硬件抽象層HAL介紹

硬件抽象層HAL對處理器結(jié)構(gòu)和系統(tǒng)硬件平臺進行抽象,當要在一個新的目標平臺上運行RedBoot或eCos時,只需對硬件抽象層進行相應修改,便可迅速地將RedBoot及整個eCos系統(tǒng)移植到新的平臺上。硬件抽象層主要包括三大模塊——體系結(jié)構(gòu)抽象層(Architecture HAL)、變體抽象層(VarJant HAL)和平臺抽象層(Plat-form HAL)。體系結(jié)構(gòu)抽象層主要是指eCos所支持的具有不同體系結(jié)構(gòu)的處理器系列,如ARM系列、PowerPC系列、MIPS系列等等。變體抽象層指的是處理器系列中某款處理器在Cache、MMU和FPU等方面具有的特殊性。平臺抽象層則是對當前系統(tǒng)硬件平臺的抽象,包括了平臺的啟動、芯片選擇與配置、定時設備、I/O寄存器訪問以及中斷寄存器等等。平臺抽象層代碼的編寫是Red-Boot及eCos移植工作的重點。

2 HAL移植的主要步驟

建立適當?shù)奈募夸浕驈膃Cos的硬件配置包中選擇1個與準備移植的目標平臺(本文中即SmartARM2200)類似的硬件平臺的HAL實現(xiàn),然后根據(jù)自己目標系統(tǒng)的硬件特征,進行相應的修改。選擇的硬件平臺與目標系統(tǒng)硬件的相似程度決定了移植工作量的大小,相似程度越高,所需的修改也就越小。

本例拷貝了olpce2294的模板(可以在NXP網(wǎng)站獲得相關的補丁,是eCos-1.0下的),以此為基礎修改,主要區(qū)別如表1所列。

RedBoot引導程序在SmartARM2200開發(fā)板中的移植參考研究

移植工作的重點也就放在表中所列的這幾部分。

eCos本身有一個完整的文件目錄,只有把新建的底層文件放在適當?shù)奈募夸浵旅?,才能確保配置和編譯工作的成功,也有助于利用eCos本身已有的源代碼,如結(jié)構(gòu)體系層和變體層中的許多成熟可用的代碼。由于本系統(tǒng)中SmartARM2200處理器的內(nèi)核是ARM7,因而可以把SmartARM2200的目錄建立在eCos庫路徑paekages/hal/arm/lpc2 XXX/下。

(1)修改SmartARM2200的cdl文件

根據(jù)SmartARM2200開發(fā)板的硬件特征對復制的HAL實現(xiàn)文件作相應修改,涉及的修改主要是對各配置包內(nèi)文件名的修改和對配置包內(nèi).cdl文件修改。cdl文件是用組件描述語言(Component Description Language,CDL)編寫的腳本文件,eCos的每一個配置包中,都至少存在一個CDL腳本文件來對該配置包進行描述,配置工具也是通過該文件與配置包聯(lián)系起來。因此,對cdl文件的修改也主要是對配置包的名稱和文件名進行修改,使之與目標系統(tǒng)硬件相聯(lián)系。

以下是SmartARM2200的cdl文件中關鍵的修改:

(2)在eCos數(shù)據(jù)庫中添加SmartARM2200目標平臺

需要在/opt/ecos/ecos_2.0/packages目錄的數(shù)據(jù)庫文件ecos.db中添加SmartARM2200目標平臺,Smart- ARM2200平臺才能被添加到配置工具中,并進行配置和編譯處理。數(shù)據(jù)庫文件ecos.db也是使用CDL語言編寫的,在ecos.db中需要添加兩部分內(nèi)容,可以根據(jù)相似硬件平臺在ecos.db的內(nèi)容進行修改。

在ecos.db添加基于SmartARM2200硬件平臺的示例代碼見本刊網(wǎng)站。

(3)修改平臺抽象層的有關代碼

硬件平臺層所需編寫的代碼文件的一般功能如下:

include/plf_io.h,I/O定義和系統(tǒng)寄存器的宏定義。include/hal_platform_setup.h,平臺啟動代碼。本文件主要用ARM匯編指令編寫,實現(xiàn)平臺上電后程序的啟動和執(zhí)行。

src/smartarm2200_misc.C,HAL的底層擴展函數(shù),包括LCD的相關函數(shù)及控制臺初始化函數(shù)。

var/v2_0/include/包括hal_cache.h、hal_diag.h、hal_var_ints.h、lpc2xxx_misc.h、 plf_stub.h、var_arch.h、var_io.h等頭文件,定義了標準函數(shù)接口及通用I/O和寄存器。

var/v2_0/src/lpc2xxx_misc.C,HAL的底層標準函數(shù),包括時鐘平臺初始化、時鐘延時函數(shù)、中斷使能、中斷屏蔽、中斷響應等。

var/v2_O/src/hal_diag.c,硬件抽象層診斷輸出函數(shù),包含eCos系統(tǒng)中printf打印的硬件設備驅(qū)動程序。

misc/redboot_RAM.ecru,基于RAM啟動方式的RedBoot最小配置文件。

misc/redboot_ROM.ecm,基于ROM啟動方式的RedBoot最小配置文件。

3 硬件啟動過程

編寫硬件啟動的初始化過程是HAL移植的一個難點。當硬件重新上電后,系統(tǒng)的程序指針會自動指向地址0(通常地址0存放著bootloader代碼段,本例中從外部Flash 0x80000000地址引導)。在eCos操作系統(tǒng)中,程序首先會運行vectors.S文件(該文件存在于hal/arm/arch/src/目錄下),它定義了reset_vector、start等各種啟動標號。接著調(diào)用SmartARM2200平臺層的hal_platform_setup. h文件中的宏platform_setupl。

haLplatform_setup.h定義了宏platform_setupl以供vectors.S調(diào)用。該宏定義了目標板上SRAM和Flash的初始化啟動,其中包括了它們的總線寬度、讀寫速度、內(nèi)存大小。然后根據(jù)不同的啟動方式執(zhí)行程序。對于RAM啟動方式,無需進行程序段與數(shù)據(jù)段的搬移,系統(tǒng)已認為SRAM的起始地址即為程序的起始地址;對于ROM啟動方式,需要拷貝數(shù)據(jù)段,而程序段無需拷貝。

在程序拷貝完成后,系統(tǒng)會進行其他硬件的初始化過程,包括系統(tǒng)時鐘、監(jiān)控串口等基本硬件設備。

4 內(nèi)存布局文件編寫

平臺的內(nèi)存布局文件在include/pkgconf目錄下。通常,每個平臺包括了RAM、ROM兩種不同啟動方式的內(nèi)存布局文件集。每種啟動方式的內(nèi)存布局文件集都由3個類型的描述文件組成:.h文件包含內(nèi)存域的C宏定義;.ldi文件定義內(nèi)存域和內(nèi)存段位置的鏈接腳本文件;.mlt文件包括由MLT工具產(chǎn)生的對內(nèi)存布局的描述。當需要手動修改內(nèi)存布局時,只有.h和.ldi文件可以被修改,.mlt文件只能由MLT工具生成。

下面以SmartARM2200的RAM啟動方式內(nèi)存布局為例,說明mlt_arm_lpc2xxx_smartarm2200_ram.h和mlt_arm_lpc2xxx_smartarm2200_ram.ldi的程序結(jié)構(gòu)。

由于SmartARM2200的開發(fā)板有1個16 KB的內(nèi)部RAM和1個16 MB的外部SRAM,因而要定義兩個內(nèi)存域ram0和ram。系統(tǒng)設置寄存器在初始化時已經(jīng)把內(nèi)存段重新映射,因而兩個SRAM的基地址就是 0x40000000和0x81000000,分配方式都是可讀寫的內(nèi)存段。

在mlt_arm_lpc2xxx_smartarm2200_ram.ldi中分為兩大部分。首先是MEMORY部分,它定義了在RAM啟動方式下所需要的內(nèi)存域,以及該內(nèi)存域的起始地址和長度。MEMORY部分的內(nèi)容必須與mlt_arm_lpc2xxx_smartarm2200_ram.h中定義的宏相一致。其次,是SECTIONS部分,它定義了RAM啟動方式下所規(guī)定的內(nèi)存段,這些內(nèi)存段的定義與系統(tǒng)內(nèi)存管理功能有關。在 SECTION_XXX后帶有相應的參數(shù),這些參數(shù)包括了內(nèi)存段所屬的內(nèi)存域、起始地址(或者是對齊方式)、虛擬內(nèi)存地址(VMA)和加載內(nèi)存地址 (LMA)。

以SECTION_fixed_vectors(ram,0x81000000,LMA_EQ_VMA)為例,它表示fixed_vectors段屬于 ram內(nèi)存域,起始地址為0x81000000,加載內(nèi)存地址等于虛擬內(nèi)存地址。LMA_EQ_VMA同時也可以解釋為該內(nèi)存段不需要在程序運行后重新分配加載。

5 驅(qū)動程序的移植

SST39VF1601的驅(qū)動是在SST39VF400的拷貝的基礎上修改的,主要改動部分如下:

RTL8019AS的驅(qū)動是在NS的DP89302A(都兼容NE2000)的拷貝基礎上修改的,應該重點注意的是寄存器地址應該乘以2(因為地址線是從 A1開始的),由于該地址總線上還有LCD模塊,為了兩者能同時工作,總線寬度設置為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應為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ā)打下基礎。

責任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5143

    文章

    19565

    瀏覽量

    315547
  • 操作系統(tǒng)

    關注

    37

    文章

    7106

    瀏覽量

    125074
  • 微處理器
    +關注

    關注

    11

    文章

    2372

    瀏覽量

    83912
  • 開發(fā)板
    +關注

    關注

    25

    文章

    5572

    瀏覽量

    102926
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    網(wǎng)絡傳真通信怎么實現(xiàn)?

    的設計與實現(xiàn),以及所涉及到的相關協(xié)議與技術(shù),并且描述了 SMARTARM2200開發(fā)板上實現(xiàn)該解決方案的細節(jié)。通過對網(wǎng)絡傳真終端的實現(xiàn),深入分析以 ARM處理器實現(xiàn)網(wǎng)絡傳真通信系統(tǒng)的可行性、可靠性和穩(wěn)定性。
    發(fā)表于 08-30 06:49

    SmartARM2200開發(fā)板RedBoot怎么進行移植

    硬件抽象層HAL是什么HAL移植的主要步驟是什么SmartARM2200開發(fā)板RedBoot怎么進行移植?
    發(fā)表于 04-28 06:48

    嵌入式網(wǎng)絡數(shù)字傳真系統(tǒng)設計與實現(xiàn)

    本文討論了數(shù)字雙網(wǎng)傳真機中網(wǎng)絡傳真系統(tǒng)的設計思路與實現(xiàn)方法。通過對非實時網(wǎng)絡傳真通信協(xié)議的研究,采用周立功SMARTARM2200 開發(fā)板,基于uClinux 操作系統(tǒng),實現(xiàn)IP 網(wǎng)絡傳真
    發(fā)表于 01-06 16:34 ?17次下載

    LPC2200開發(fā)板原理圖

    LPC2200開發(fā)板原理圖:
    發(fā)表于 03-20 13:57 ?213次下載
    LPC<b class='flag-5'>2200</b><b class='flag-5'>開發(fā)板</b>原理圖

    FreeRTOS移植MAPS-K22開發(fā)板

    FreeRTOS移植MAPS-K22開發(fā)板,本文以MAPS-K22開發(fā)板為例,介紹了將FreeRTOS移植于NXP Kientis 系列MCU
    發(fā)表于 12-24 16:39 ?4次下載

    SmartARM2200_原理圖

    SmartARM2200_SCH有需要的朋友下來看看。
    發(fā)表于 02-18 15:04 ?22次下載

    5509開發(fā)板USB引導下載程序使用說明

    電子專業(yè),單片機、DSP、ARM相關知識學習資料與教材——5509開發(fā)板USB引導下載程序使用說明,感興趣的小伙伴可以看一看。
    發(fā)表于 11-03 17:26 ?0次下載

    基于5509開發(fā)板的USB引導下載程序的使用說明

    文檔內(nèi)容包含了5509 開發(fā)板 USB 引導下載程序使用說明。
    發(fā)表于 09-01 15:25 ?11次下載
    基于5509<b class='flag-5'>開發(fā)板</b>的USB<b class='flag-5'>引導</b>下載<b class='flag-5'>程序</b>的使用說明

    盤古STM32F103開發(fā)板移植uCGUI教程

    盤古STM32F103開發(fā)板移植uCGUI教程
    發(fā)表于 09-29 09:21 ?21次下載
    盤古STM32F103<b class='flag-5'>開發(fā)板</b><b class='flag-5'>移植</b>uCGUI教程

    基于5509開發(fā)板USB引導下載程序使用說明

    基于5509開發(fā)板USB引導下載程序使用說明
    發(fā)表于 10-23 14:33 ?5次下載
    基于5509<b class='flag-5'>開發(fā)板</b>USB<b class='flag-5'>引導</b>下載<b class='flag-5'>程序</b>使用說明

    iTOP-4412開發(fā)板-實戰(zhàn)教程-ssh服務器移植到arm開發(fā)板

    迅為iTOP-4412開發(fā)板-實戰(zhàn)教程-ssh服務器移植到arm開發(fā)板
    發(fā)表于 05-15 11:11 ?28次下載

    怎樣迅為iTOP-iMX6開發(fā)板 Qt4.7系統(tǒng)移植

    4G_EC20模塊迅為iTOP-iMX6開發(fā)板 Qt4.7系統(tǒng)移植 EC20 模塊封裝成標準的 PCIe 接口,和開發(fā)板主要通過 us
    發(fā)表于 07-09 09:50 ?2541次閱讀

    如何實現(xiàn)OpenCV2.4.9Hi3531開發(fā)板移植

    本文檔的主要內(nèi)容詳細介紹的是如何實現(xiàn)OpenCV2.4.9Hi3531開發(fā)板移植詳細資料和程序說明。
    發(fā)表于 10-18 16:56 ?7次下載
    如何實現(xiàn)OpenCV2.4.9<b class='flag-5'>在</b>Hi3531<b class='flag-5'>開發(fā)板</b>上<b class='flag-5'>移植</b>

    小熊派開發(fā)板移植RT-FOTA

    小熊派開發(fā)板移植RT-FOTA
    發(fā)表于 12-08 15:06 ?4次下載
    小熊派<b class='flag-5'>開發(fā)板</b><b class='flag-5'>移植</b>RT-FOTA

    PLEX Arduino UNO引導加載程序開發(fā)板

    電子發(fā)燒友網(wǎng)站提供《PLEX Arduino UNO引導加載程序開發(fā)板.zip》資料免費下載
    發(fā)表于 07-26 14:35 ?0次下載
    PLEX Arduino UNO<b class='flag-5'>引導</b>加載<b class='flag-5'>程序</b><b class='flag-5'>開發(fā)板</b>
    主站蜘蛛池模板: 亚洲卡1卡2卡新区网站 | 天天亚洲综合 | 婷婷久久综合九色综合九七 | 18视频免费网址在线观看 | 免费午夜在线视频 | 伊人久久影视 | 欧美一二三区 | 色在线免费视频 | 天天干天天色综合 | 天天好b| 卡2卡三卡四卡精品公司 | 看全黄大片狐狸视频在线观看 | 欧美成人午夜毛片免费影院 | 能直接看黄的网站 | 黄网站色视频大全免费观看 | 狠狠色噜噜狠狠狠狠97影音先锋 | 日本在线一区 | 亚洲vv| 欧美一卡2卡三卡4卡5卡免费观看 | 欧美性爽xxxⅹbbbb | 中文字幕卡二和卡三的视频 | 激情都市亚洲 | 久青草国产高清在线视频 | 爱爱视频天天看 | 久久香蕉国产线看观看亚洲片 | 国产美女视频黄a视频免费全过程 | 国产自产视频在线观看香蕉 | 久久天天躁夜夜躁狠狠躁2015 | 黄色三级网站免费 | 91精品国产色综合久久不卡蜜 | 欧美成人看片一区二区三区 | 国产在线麻豆自在拍91精品 | 在线亚洲色图 | 国产全黄三级三级 | 毛片毛片 | 俄罗斯女人69xxx | 99久久精品费精品国产一区二 | 久久青草免费91观看 | 久久综合五月婷婷 | 欧美手机看片 | 99热最新在线 |