當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]嵌入式實(shí)時(shí)操作系統(tǒng)ECOS在S3C2510上的移植實(shí)現(xiàn)

摘    要: 本文介紹了實(shí)時(shí)操作系統(tǒng)ECOS的特點(diǎn)及基本結(jié)構(gòu),并具體研究了ECOS在三星公司以ARM940T為內(nèi)核的S3C2510嵌入式芯片上的移植方法。文章著重討論了移植過程中的重點(diǎn)與難點(diǎn)部分:ECOS的硬件抽象層(HAL)移植。該移植方案已經(jīng)過實(shí)際測(cè)試,系統(tǒng)穩(wěn)定可靠,可運(yùn)行多任務(wù)式應(yīng)用程序。
關(guān)鍵詞:實(shí)時(shí)操作系統(tǒng);ECOS;硬件抽象層;移植;ARM

引言
ECOS(Embedded Configurable Operating System,嵌入式可配置操作系統(tǒng))是一種針對(duì)16位、32位和64位處理器的可移植嵌入式實(shí)時(shí)操作系統(tǒng)。由于其源代碼是公開的,因而有越來越多的設(shè)計(jì)人員開始關(guān)注ECOS操作系統(tǒng)。ECOS最大的特點(diǎn)是模塊化,內(nèi)核可配置。最小版本的ECOS只有幾百字節(jié),非常適合小型嵌入式系統(tǒng)的開發(fā)。相對(duì)于嵌入式Linux來說,ECOS有配置靈活和節(jié)省資源的優(yōu)勢(shì)。它的另一個(gè)優(yōu)點(diǎn)是使用多任務(wù)搶占機(jī)制,具有最小的中斷延遲,支持嵌入式系統(tǒng)所需的所有同步原語,并擁有靈活的調(diào)度策略和中斷處理機(jī)制,因而具有良好的實(shí)時(shí)性。與Clinux和COS等操作系統(tǒng)相比,ECOS更適合于處理實(shí)時(shí)信號(hào)的設(shè)備,如移動(dòng)通信、WLAN等通信設(shè)備的開發(fā)。
S3C2510是一款低功耗、高效能、面向以太網(wǎng)系統(tǒng)的微處理器。它的系統(tǒng)時(shí)鐘可達(dá)133MHz,并包含了16/32位寬的ARM940T核、4KB的I-CACHE和4KB的D-CACHE。S3C2510帶有兩個(gè)獨(dú)立的10/100Mbps的以太網(wǎng)控制器,這兩個(gè)接口能夠以硬件完成IEEE802.3的MAC層處理,因此更適合用作SOHO路由器、internet網(wǎng)關(guān),甚至寬帶無線接入設(shè)備的開發(fā)。ECOS操作系統(tǒng)也非常適合這些網(wǎng)絡(luò)設(shè)備的開發(fā),本文將介紹S3C2510的移植方案,給各種以ARM為內(nèi)核處理器的ECOS底層移植開發(fā)提供一個(gè)系統(tǒng)的范例。

 

 

 

 

 

 

 


圖 1    ECOS操作系統(tǒng)結(jié)構(gòu)圖
ECOS底層移植的基礎(chǔ)知識(shí)
ECOS系統(tǒng)的主要組成部分如圖1所示。操作系統(tǒng)的主要功能       及特點(diǎn)是由其內(nèi)核所決定的,底層移植一般不會(huì)涉及到系統(tǒng)內(nèi)核的內(nèi)容。由圖1可見,硬件抽象層是嵌入式操作系統(tǒng)和硬件直接接觸的基本層,其將系統(tǒng)內(nèi)核和具體的硬件平臺(tái)徹底隔離開, 實(shí)現(xiàn)了系統(tǒng)內(nèi)核與硬件的無關(guān)性,這就是操作系統(tǒng)具有良好可移植性的體現(xiàn)。因此,對(duì)于開發(fā)人員來說,移植操作系統(tǒng)真正的意義和工作在于移植操作系統(tǒng)的硬件抽象層。
硬件抽象層HAL對(duì)處理器結(jié)構(gòu)和系統(tǒng)硬件平臺(tái)進(jìn)行抽象,當(dāng)要在一個(gè)新的目標(biāo)平臺(tái)上運(yùn)行ECOS時(shí),只需要對(duì)底層的硬件抽象層進(jìn)行修改,便可迅速地將整個(gè)ECOS系統(tǒng)移植到新的平臺(tái)上。硬件抽象層主要包括三大模塊——體系結(jié)構(gòu)抽象層(Architecture HAL)、變體抽象層(Variant HAL)和平臺(tái)抽象層(Platform HAL)。體系結(jié)構(gòu)抽象層主要是指ECOS所支持的具有不同體系結(jié)構(gòu)的處理器系列,如ARM系列、PowerPC系列、MIPS系列等等。變體抽象層指的是處理器系列中某款處理器在Cache、MMU和FPU等方面所具有的特殊性。如S3C2510屬于ARM系列中的ARM940T,在變體抽象層中就會(huì)具體地針對(duì)ARM940T的Cache等方面作出定義。平臺(tái)抽象層則是對(duì)當(dāng)前系統(tǒng)硬件平臺(tái)的抽象,包括了平臺(tái)的啟動(dòng)、芯片選擇與配置、定時(shí)設(shè)備、I/O寄存器訪問以及中斷寄存器等等。平臺(tái)抽象層代碼的編寫是ECOS移植工作的重點(diǎn)。

HAL移植的主要步驟
建立適當(dāng)?shù)奈募夸?BR>ECOS本身有一個(gè)完整的文件目錄,只有把新建的底層文件放在適當(dāng)?shù)奈募夸浵旅?,才能確保配置和編譯工作的成功,也有助于利用ECOS本身已有的源代碼,如結(jié)構(gòu)體系層和變體層中的許多成熟可用的代碼。由于本系統(tǒng)中S3C2510處理器的內(nèi)核是ARM940T,因而可以把S3C2510的目錄建立在ECOS庫路徑packages/hal/arm/arm9/下。
建立S3C2510的cdl文件
cdl文件使用cdl腳本語言描述該硬件設(shè)備(包或平臺(tái))的特性和常用指標(biāo)。cdl文件實(shí)現(xiàn)系統(tǒng)在源碼級(jí)的功能和指標(biāo)配置,猶如一個(gè)項(xiàng)目管理高層對(duì)其倉(cāng)庫中組件特性的登記,只有登記后的包、組件和選項(xiàng)才能被操作系統(tǒng)配置工具識(shí)別和配置。
以下是S3C2510的cdl文件中的幾段重要描述。
* cdl_package CYGPKG_ HAL_ARM_ ARM9_S3C2510
這是S3C2510在ecos.db中所登記的包的名字,它下面包含了該板的一些基本設(shè)置和組件,如母體體系結(jié)構(gòu)(parent)、包含的頭文件、編譯的C文件等。
* cdl_component CYG_HAL _STARTUP
系統(tǒng)啟動(dòng)方式,有3種選擇:ram啟動(dòng)、rom啟動(dòng)、romram啟動(dòng)。
* cdl_component CYGNUM_ HAL_CPUCLOCK
平臺(tái)的系統(tǒng)時(shí)鐘設(shè)置,以便于ECOS其他組件以此時(shí)鐘為標(biāo)準(zhǔn)。該平臺(tái)系統(tǒng)時(shí)鐘的默認(rèn)值設(shè)為133MHz。
* cdl_option CYGNUM_HAL_ RTC_PERIOD
ECOS內(nèi)核的運(yùn)行時(shí)鐘單位。ECOS內(nèi)核以一個(gè)tick為時(shí)鐘單位,而一個(gè)tick的長(zhǎng)度就等于該選項(xiàng)的設(shè)定值。
在ecos.db中登記
S3C2510的硬件包
ecos.db是關(guān)于ECOS系統(tǒng)的一個(gè)數(shù)據(jù)庫文件(在packages目錄下),它包含了硬件包管理工具和一些在組件配置庫中的包。與cdl文件相比,ecos.db登記了倉(cāng)庫中的物品,而cdl文件則登記每種物品的特性。只有在ecos.db中登記了的包,才能被ECOS的庫編譯工具(configtool)選中和使用。如果要在配置工具的模板選項(xiàng)中(template)增加可供選擇的硬件目標(biāo)板,那么,需要先在ecos.db中登記其包描述,再增加其目標(biāo)板描述。一般的輔助硬件(如網(wǎng)卡、串口等)只需要第一步的登記。因此,在ecos.db中登記S3C2510平臺(tái)硬件包的基本步驟就是登記硬件平臺(tái)的包描述(package CYGPKG_HAL_ARM_ ARM9_ S3C2510)和目標(biāo)描述(target S3C2510)。需要注意的是,target S3C2510中所包含的3個(gè)硬件描述包CYGPKG_HAL_ARM、CYGPKG_HAL_ARM_ARM9和CYGPKG_HAL_ARM_ARM9_ S3C2510是不能缺少的,因?yàn)樗鼈兪菢?biāo)板的核心——主體系結(jié)構(gòu)包、子體系結(jié)構(gòu)包和主芯片包。另外,還可以可選地添加其他輔助硬件包(如網(wǎng)卡、串口等)。
編寫平臺(tái)抽象層的有關(guān)代碼
硬件平臺(tái)層所需編寫的代碼文件的一般功能如下所示。
* include /plf_cache.h —— 平臺(tái)專用cache處理 (可選)。在本系統(tǒng)中不需要編寫,可直接調(diào)用ARM9變體層的hal_cache.h。
* include / hal_platform_ints.h —— 平臺(tái)專用中斷處理,定義平臺(tái)中斷向量號(hào)。
* include / plf_io.h —— I/O 定義和系統(tǒng)寄存器的宏定義。
* include ¬/ hal_platform_setup.h —— 平臺(tái)啟動(dòng)代碼。本文件主要用ARM匯編指令編寫,實(shí)現(xiàn)平臺(tái)上電后程序的啟動(dòng)和執(zhí)行。
* src/s3c2510_misc.c —— HAL的底層標(biāo)準(zhǔn)函數(shù),包括時(shí)鐘平臺(tái)初始化、時(shí)鐘延時(shí)函數(shù)、中斷使能、中斷屏蔽、中斷響應(yīng)等。
* src/ hal_diag.c —— 硬件抽象層診斷輸出函數(shù),包含ECOS系統(tǒng)中printf打印的硬件設(shè)備驅(qū)動(dòng)程序。
* misc/ redboot_primary_ ram.ecm —— 基于RAM啟動(dòng)方式的redboot最小配置文件。
* misc/redboot_primary_ rom.ecm —— 基于ROM啟動(dòng)方式的redboot最小配置文件。
硬件啟動(dòng)過程
編寫硬件啟動(dòng)的初始化過程是HAL移植的一個(gè)難點(diǎn)。當(dāng)硬件重新上電后,系統(tǒng)的程序指針會(huì)自動(dòng)指向地址0(通常地址0存放著bootloader代碼段)。在ECOS操作系統(tǒng)中,程序首先會(huì)運(yùn)行vectors.S文件(該文件存在于hal/arm/arch/src/目錄下),它定義了reset_vector、start等各種啟動(dòng)標(biāo)號(hào)。接著調(diào)用S3C2510平臺(tái)層的hal_platform_ setup.h文件中的宏platform_setup1和arm9變體層arm9_misc.c文件中的函數(shù) hal_hardware_init。
hal_platform_setup.h定義了宏platform_setup1以供vectors.S調(diào)用。該宏定義了目標(biāo)板上SDRAM和FLASH的初始化啟動(dòng),其中包括了它們的取數(shù)方式和內(nèi)存大小。然后根據(jù)不同的啟動(dòng)方式執(zhí)行程序。對(duì)于RAM啟動(dòng)方式,無需進(jìn)行程序段與數(shù)據(jù)段的搬移,系統(tǒng)已認(rèn)為SDRAM的起始地址即為程序的起始地址;對(duì)于ROM啟動(dòng)方式,需要搬移數(shù)據(jù)段,而程序段無需搬移;對(duì)于ROMRAM啟動(dòng)方式,程序段與數(shù)據(jù)段都需要進(jìn)行搬移,然后再把程序起始地址映射為SDRAM的起始地址。
在程序搬移完成后,系統(tǒng)會(huì)進(jìn)行其他硬件的初始化過程,包括系統(tǒng)時(shí)鐘、系統(tǒng)CACHE、監(jiān)控串口等基本硬件設(shè)備。
內(nèi)存布局文件編寫
平臺(tái)的內(nèi)存布局文件在include/pkgconf目錄下。通常,每個(gè)平臺(tái)包括了RAM、ROM和ROMRAM 3種不同啟動(dòng)方式的內(nèi)存布局文件集。每種啟動(dòng)方式的內(nèi)存布局文件集都由3個(gè)類型的描述文件組成:.h文件包含內(nèi)存域的C宏定義;.ldi文件定義內(nèi)存域和內(nèi)存段位置的鏈接腳本文件;.mlt文件包括由MLT工具產(chǎn)生的對(duì)內(nèi)存布局的描述。當(dāng)需要手動(dòng)修改內(nèi)存布局時(shí),只有.h和.ldi文件可以被修改,.mlt文件只能由MLT工具生成。
下面以S3C2510的ram啟動(dòng)方式內(nèi)存布局為例,主要說明mlt_arm_s3c2510_ram.h和mlt_arm_s3c2510_ram.ldi的程序結(jié)構(gòu)。
由于S3C2510的開發(fā)板有兩個(gè)16MB的SDRAM,因而要定義兩個(gè)內(nèi)存域ram1和ram2。系統(tǒng)設(shè)置寄存器在初始化時(shí)已經(jīng)把內(nèi)存段重新映射,因而兩個(gè)SDRAM的基地址就是0x0和0x40000000,兩個(gè)內(nèi)存域的大小是16MB,分配方式都是可讀寫的內(nèi)存段。
在mlt_arm_s3c2510_ram.ldi中分為兩大部分。首先是MEMORY部分,它定義了在RAM啟動(dòng)方式下所需要的內(nèi)存域,以及該內(nèi)存域的起始地址和長(zhǎng)度。MEMORY部分的內(nèi)容必須與mlt_arm_s3c2510_ ram.h中定義的宏一致。其次是SECTIONS部分,它定義了RAM啟動(dòng)方式下所規(guī)定的內(nèi)存段,這些內(nèi)存段的定義與系統(tǒng)內(nèi)存管理功能有關(guān)。在SECTION_XXX后帶有相應(yīng)的參數(shù),這些參數(shù)包括了內(nèi)存段所屬的內(nèi)存域、起始地址(或者是對(duì)齊方式)、虛擬內(nèi)存地址(VMA)和加載內(nèi)存地址(LMA)。
以SECTION_fixed_vectors (ram1, 0x200, LMA_EQ_VMA)為例,它表示fixed_vectors段屬于ram1內(nèi)存域,起始地址為0x200,加載內(nèi)存地址等于虛擬內(nèi)存地址。LMA_EQ_VMA同時(shí)也可以解釋為該內(nèi)存段不需要在程序運(yùn)行后重新分配加載。

調(diào)試結(jié)果
S3C2510目標(biāo)板上帶有1塊4MB的FLASH和2塊16MB的SDRAM。
利用ECOS的自帶編譯工具configtool對(duì)新建的S3C2510目標(biāo)板進(jìn)行編譯,生成ECOS的庫文件。然后把庫目錄下的install目錄內(nèi)容復(fù)制到應(yīng)用工程目錄下,使ECOS庫包含到應(yīng)用工程中。然后把該工程的.elf文件利用EMBEST公司開發(fā)的IDE仿真器直接下載到目標(biāo)板的SDRAM中。此時(shí)的ECOS操作系統(tǒng)應(yīng)為RAM啟動(dòng)方式。
通過IDE對(duì)程序的調(diào)試與測(cè)試結(jié)果表明,本文提出的S3C2510移植方案使ECOS操作系統(tǒng)在目標(biāo)板中運(yùn)行正常穩(wěn)定。該操作系統(tǒng)支持多個(gè)工作線程的應(yīng)用程序。S3C2510的串口、網(wǎng)口均能與pc機(jī)正常傳輸數(shù)據(jù)。

結(jié)語
ECOS是一款非常年輕的嵌入式操作系統(tǒng),1997年才正式推廣使用?,F(xiàn)階段有關(guān)ECOS開發(fā)的參考資料和專門從事人員仍然很少,造成了ECOS產(chǎn)品研發(fā)周期和開發(fā)成本的增加。因此,本文提出的ECOS操作系統(tǒng)的驅(qū)動(dòng)底層代碼編寫方法對(duì)于使用ECOS開發(fā)產(chǎn)品具有相當(dāng)重要的指導(dǎo)意義。

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

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

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

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

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

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(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)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

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

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

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

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

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

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

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

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

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

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

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