www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]SmartARM2200開發(fā)板的RedBoot的移植

引 言
    eCos(embedded Configurable operating system)最初是由Cygnus Solutions公司為面向嵌入式領(lǐng)域而開發(fā)的實(shí)時操作系統(tǒng),源碼公開,具有很強(qiáng)的可移植性和可配置性,適合于嵌入式開發(fā)?,F(xiàn)在eCos主要由 eCosCentric公司和eCos開源社區(qū)共同開發(fā)維護(hù)。eCos的特性,特別是它的可配置性,能有效縮短嵌入式產(chǎn)品的開發(fā)周期并降低成本。
    RedBoot(Red Hat Embedded Debug and Bootstrap)是一個由Red Hat公司開發(fā)的可以在嵌入式系統(tǒng)上獨(dú)立運(yùn)行的引導(dǎo)程序。它是目前嵌入式領(lǐng)域功能最強(qiáng)大、可移植性最好的BootLoader之一,采用eCos環(huán)境開發(fā),并以eCos的硬件抽象層作為基礎(chǔ),但完全可以脫離eCos環(huán)境運(yùn)行,可以用來引導(dǎo)任何嵌入式操作系統(tǒng),如Linux、WinCE等。
    SmartARM2200開發(fā)板使用NXP公司的LPC2210微處理器。LPC2210基于ARM7TDMI-S內(nèi)核,系統(tǒng)時鐘頻率達(dá)60 MHz,總線對外開放,寬度可配置為8/16/32位。同時開發(fā)板還擴(kuò)展了RTL8019AS(10 Mb/s)以太網(wǎng)控制器。本文將介紹SmartARM2200的移植方法,給其他以ARM為內(nèi)核的eCos底層移植開發(fā)提供參考。

1 硬件抽象層HAL介紹
    硬件抽象層HAL對處理器結(jié)構(gòu)和系統(tǒng)硬件平臺進(jìn)行抽象,當(dāng)要在一個新的目標(biāo)平臺上運(yùn)行RedBoot或eCos時,只需對硬件抽象層進(jìn)行相應(yīng)修改,便可迅速地將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等方面具有的特殊性。平臺抽象層則是對當(dāng)前系統(tǒng)硬件平臺的抽象,包括了平臺的啟動、芯片選擇與配置、定時設(shè)備、I/O寄存器訪問以及中斷寄存器等等。平臺抽象層代碼的編寫是Red-Boot及eCos移植工作的重點(diǎn)。

2 HAL移植的主要步驟
    建立適當(dāng)?shù)奈募夸浕驈膃Cos的硬件配置包中選擇1個與準(zhǔn)備移植的目標(biāo)平臺(本文中即SmartARM2200)類似的硬件平臺的HAL實(shí)現(xiàn),然后根據(jù)自己目標(biāo)系統(tǒng)的硬件特征,進(jìn)行相應(yīng)的修改。選擇的硬件平臺與目標(biāo)系統(tǒng)硬件的相似程度決定了移植工作量的大小,相似程度越高,所需的修改也就越小。
    本例拷貝了olpce2294的模板(可以在NXP網(wǎng)站獲得相關(guān)的補(bǔ)丁,是eCos-1.0下的),以此為基礎(chǔ)修改,主要區(qū)別如表1所列。

    移植工作的重點(diǎn)也就放在表中所列的這幾部分。[!--empirenews.page--]
    eCos本身有一個完整的文件目錄,只有把新建的底層文件放在適當(dāng)?shù)奈募夸浵旅妫拍艽_保配置和編譯工作的成功,也有助于利用eCos本身已有的源代碼,如結(jié)構(gòu)體系層和變體層中的許多成熟可用的代碼。由于本系統(tǒng)中SmartARM2200處理器的內(nèi)核是ARM7,因而可以把SmartARM2200的目錄建立在eCos庫路徑paekages/hal/arm/lpc2 XXX/下。
    (1)修改SmartARM2200的cdl文件
    根據(jù)SmartARM2200開發(fā)板的硬件特征對復(fù)制的HAL實(shí)現(xiàn)文件作相應(yīng)修改,涉及的修改主要是對各配置包內(nèi)文件名的修改和對配置包內(nèi).cdl文件修改。cdl文件是用組件描述語言(Component Description Language,CDL)編寫的腳本文件,eCos的每一個配置包中,都至少存在一個CDL腳本文件來對該配置包進(jìn)行描述,配置工具也是通過該文件與配置包聯(lián)系起來。因此,對cdl文件的修改也主要是對配置包的名稱和文件名進(jìn)行修改,使之與目標(biāo)系統(tǒng)硬件相聯(lián)系。
    以下是SmartARM2200的cdl文件中關(guān)鍵的修改:

  
    (2)在eCos數(shù)據(jù)庫中添加SmartARM2200目標(biāo)平臺
    需要在/opt/ecos/ecos_2.0/packages目錄的數(shù)據(jù)庫文件ecos.db中添加SmartARM2200目標(biāo)平臺,Smart- ARM2200平臺才能被添加到配置工具中,并進(jìn)行配置和編譯處理。數(shù)據(jù)庫文件ecos.db也是使用CDL語言編寫的,在ecos.db中需要添加兩部分內(nèi)容,可以根據(jù)相似硬件平臺在ecos.db的內(nèi)容進(jìn)行修改。
    在ecos.db添加基于SmartARM2200硬件平臺的示例代碼見本刊網(wǎng)站。[!--empirenews.page--]
    (3)修改平臺抽象層的有關(guān)代碼
    硬件平臺層所需編寫的代碼文件的一般功能如下:include/plf_io.h,I/O定義和系統(tǒng)寄存器的宏定義。include/hal_platform_setup.h,平臺啟動代碼。本文件主要用ARM匯編指令編寫,實(shí)現(xiàn)平臺上電后程序的啟動和執(zhí)行。
    src/smartarm2200_misc.C,HAL的底層擴(kuò)展函數(shù),包括LCD的相關(guān)函數(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等頭文件,定義了標(biāo)準(zhǔn)函數(shù)接口及通用I/O和寄存器。
    var/v2_0/src/lpc2xxx_misc.C,HAL的底層標(biāo)準(zhǔn)函數(shù),包括時鐘平臺初始化、時鐘延時函數(shù)、中斷使能、中斷屏蔽、中斷響應(yīng)等。
    var/v2_O/src/hal_diag.c,硬件抽象層診斷輸出函數(shù),包含eCos系統(tǒng)中printf打印的硬件設(shè)備驅(qū)動程序。
    misc/redboot_RAM.ecru,基于RAM啟動方式的RedBoot最小配置文件。
    misc/redboot_ROM.ecm,基于ROM啟動方式的RedBoot最小配置文件。

3 硬件啟動過程
    編寫硬件啟動的初始化過程是HAL移植的一個難點(diǎn)。當(dāng)硬件重新上電后,系統(tǒng)的程序指針會自動指向地址0(通常地址0存放著bootloader代碼段,本例中從外部Flash 0x80000000地址引導(dǎo))。在eCos操作系統(tǒng)中,程序首先會運(yùn)行vectors.S文件(該文件存在于hal/arm/arch/src/目錄下),它定義了reset_vector、start等各種啟動標(biāo)號。接著調(diào)用SmartARM2200平臺層的hal_platform_setup. h文件中的宏platform_setupl。
    haLplatform_setup.h定義了宏platform_setupl以供vectors.S調(diào)用。該宏定義了目標(biāo)板上SRAM和Flash的初始化啟動,其中包括了它們的總線寬度、讀寫速度、內(nèi)存大小。然后根據(jù)不同的啟動方式執(zhí)行程序。對于RAM啟動方式,無需進(jìn)行程序段與數(shù)據(jù)段的搬移,系統(tǒng)已認(rèn)為SRAM的起始地址即為程序的起始地址;對于ROM啟動方式,需要拷貝數(shù)據(jù)段,而程序段無需拷貝。
    在程序拷貝完成后,系統(tǒng)會進(jìn)行其他硬件的初始化過程,包括系統(tǒng)時鐘、監(jiān)控串口等基本硬件設(shè)備。


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)存布局的描述。當(dāng)需要手動修改內(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)設(shè)置寄存器在初始化時已經(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)存管理功能有關(guān)。在 SECTION_XXX后帶有相應(yīng)的參數(shù),這些參數(shù)包括了內(nèi)存段所屬的內(nèi)存域、起始地址(或者是對齊方式)、虛擬內(nèi)存地址(VMA)和加載內(nèi)存地址 (LMA)。[!--empirenews.page--]
    以SECTION_fixed_vectors(ram,0x81000000,LMA_EQ_VMA)為例,它表示fixed_vectors段屬于 ram內(nèi)存域,起始地址為0x81000000,加載內(nèi)存地址等于虛擬內(nèi)存地址。LMA_EQ_VMA同時也可以解釋為該內(nèi)存段不需要在程序運(yùn)行后重新分配加載。

5 驅(qū)動程序的移植
    SST39VF1601的驅(qū)動是在SST39VF400的拷貝的基礎(chǔ)上修改的,主要改動部分如下:

  
    RTL8019AS的驅(qū)動是在NS的DP89302A(都兼容NE2000)的拷貝基礎(chǔ)上修改的,應(yīng)該重點(diǎn)注意的是寄存器地址應(yīng)該乘以2(因?yàn)榈刂肪€是從 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目標(biāo)板進(jìn)行編譯,生成RedBoot的目標(biāo)文件。然后通過AXD下載到目標(biāo)板的SRAM中運(yùn)行。此時的RedBoot應(yīng)為RAM啟動方式。剛開始調(diào)試的難度有點(diǎn)大,因?yàn)锳XD不支持elf文件的下載,有些目標(biāo)文件可以通過 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ū)動的移植,為進(jìn)一步eCos系統(tǒng)開發(fā)打下基礎(chǔ)。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉