一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

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

基于LPC2294嵌入式處理平臺實現(xiàn)eCos操作系統(tǒng)的應(yīng)用

電子設(shè)計 ? 來源:微計算機信息 ? 作者:程文播,于平,張 ? 2020-09-15 17:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1 引言

嵌入式實時操作系統(tǒng)的使用,可以增強系統(tǒng)性能,確保系統(tǒng)穩(wěn)定性和可靠性,便于維護開發(fā)應(yīng)用程序.因此越來越廣泛 的使用于各種嵌人式系統(tǒng)中。eCos(Embedded Cofigurable Operating System)是一種開源的、免版稅的、實時的嵌入式操作系統(tǒng),適合于深度嵌入式應(yīng)用,主要應(yīng)用于消費電子、通信產(chǎn)品、汽車電子等領(lǐng)域。與其它嵌入式實時操作系統(tǒng)不同,eCos具有獨特的可配置能力和配置機制。同時eCos具有良好的開放性、兼容性、穩(wěn)定性、可擴展性和可移植性,而且支持ARM、MIPs、M68K、PowerPC等眾多微處理器。因此ecos日益受到嵌入式設(shè)計人員的關(guān)注,正在越來越多應(yīng)用于嵌入式產(chǎn)品中。

2 eCos體系結(jié)構(gòu)介紹

ecos使用多任務(wù)搶占機制,具有中斷延遲小,支持同優(yōu)先級調(diào)度,支持嵌入式系統(tǒng)所需的所有同步原語,擁有靈活的調(diào)度策略和中斷處理機制。而且ecos提供了完備的嵌入式開發(fā)功能,包括設(shè)備驅(qū)動程序、內(nèi)存管理、例外處理、標(biāo)準(zhǔn)庫函數(shù)、GNU編譯工具集等。

eCos采用模塊化的設(shè)計,將不同功能的軟件分為不同的組件,這些組件具有可重用性,分別位于系統(tǒng)的不同層次,這種分層結(jié)構(gòu)使eCos具有良好的可配置性、可移植性、可兼容性和可擴展性。eCos的層次結(jié)構(gòu)如圖1所示。

在eCos體系中最底層的是硬件抽象層HAL(Hardware Abstraction Layer),它負(fù)責(zé)對目標(biāo)系統(tǒng)硬件平臺進行操作和控制,包括硬件初始化,中斷和異常的處理。HAL屏蔽了底層硬件的 不同,為上層提供了統(tǒng)一的接口。在進行eCos的移植中,關(guān)鍵要對HAL進行修改,即可將整個eCos系統(tǒng)移植到新的硬件平臺上。HAL根據(jù)所描述的硬件對象的不同可以分為體系結(jié)構(gòu)抽象層(Architecture HAL)、變體抽象層(Variant HAL)、平臺抽象層(Platform HAL)。

基于LPC2294嵌入式處理平臺實現(xiàn)eCos操作系統(tǒng)的應(yīng)用

圖1 eCos的層次結(jié)構(gòu)

RedBoot是eCos提供的一個Boot Loader程序,RedBoot可以引導(dǎo)eCos系統(tǒng),加載eCos應(yīng)用程序,提供Debug支持,對目標(biāo)系統(tǒng)環(huán)境參數(shù)進行管理等。

設(shè)備驅(qū)動程序負(fù)責(zé)對硬件設(shè)備進行控制管理,并完成設(shè)備數(shù)據(jù)的讀寫操作。驅(qū)動程序為上層軟件提供API函數(shù),應(yīng)用層使用API函數(shù)對設(shè)備進行訪問.完成對設(shè)備的操作。

內(nèi)核是eCos中的核心,它負(fù)責(zé)完成任務(wù)調(diào)度、同步原語、處理中斷和例外、進行內(nèi)存管理、負(fù)責(zé)定時機制,保證系統(tǒng)的實時性等功能。

OS抽象層中實現(xiàn)了TCP/IP網(wǎng)絡(luò)協(xié)議、文件系統(tǒng)、標(biāo)準(zhǔn)庫函數(shù)調(diào)用等,為嵌入式應(yīng)用層軟件和應(yīng)用程序提供API接口函數(shù)。

eCos的分層結(jié)構(gòu),使整個軟件結(jié)構(gòu)清晰、有良好的可維護性和可移植性。

3 LPC2294硬件平臺

LPC2294是NXP公司的嵌入式微處理器芯片.屬于ARM7TDMI-S系列。LPC2294有豐富片內(nèi)資源,而且功耗低.性價比高,可以應(yīng)用在通信網(wǎng)關(guān)、工業(yè)控制、醫(yī)療設(shè)備等多種嵌入式領(lǐng)域中。如圖2是硬件平臺的結(jié)構(gòu)框圖:

圖2硬件平臺框圖

硬件平臺以LPC2294處理器為核心,外嗣器件包括8MB NOR nash(SST39VF6401B)、512kB SRAM(IS61LV51216)、標(biāo)準(zhǔn)20針JTAG接口、RTL8019網(wǎng)卡芯片、RS232串口等組成。本文以此硬件平臺為基礎(chǔ).介紹eCos的移植工作,為以ARM內(nèi)核為處理器的eCos移植開發(fā)提供一個范例。

4 eCos在LPC2294上的移植

由于eCos支持大部分嵌入式CPU,可移植性強,故eCos的移植丁作主要是HAL的移植。其中平臺抽象層的移植是HAL移植的重點,包括內(nèi)存布局、平臺初始化、中斷控制器、串口驅(qū)動程序等修改。在移植過程中,如果要將eCos移植到還不支持CPU體系結(jié)構(gòu),簡便高效的方法是利用eCos已經(jīng)支持的相同體系結(jié)構(gòu)CPU的硬件平臺作為模版,建立CDL文件。在ecos.db中進行登記,以與新的目標(biāo)平臺相適應(yīng),進而進行移植工作。最新版本的eCos已經(jīng)支持LPC2294處理器,故ecos在LPC2294上的移植的主要工作是對平臺抽象層的相關(guān)文件進行修改.采用圖形化配置工具進行配置編譯和生成鏡像文件,完成調(diào)試和 移植工作。

4.1建立交叉編譯環(huán)境和配置工具

eCos的源碼可以在eCos維護公司eCosCentric的網(wǎng)站中下載.地址是http://www.ecoscentric.com。由于eCos采用GNU工具集進行編譯.因此本文的主機使用RedHat9.0操作系統(tǒng),并安裝gcc-3.2.1、binutils-2.13.1、newlib-1.11.0、insight-5.3、wxGTK-2.4.0工具,同時安裝交叉編譯器arm-elf-tools工具,建立起eCos針對ARM平臺的交叉編譯環(huán)境。

另外還要根據(jù)主機環(huán)境,生成eCos的配置丁具步驟如下:

將eCos解壓到/opt目錄中,并在/opt目錄中建立src、wxbuild、infra-build、ecos-tools、configtool-build目錄。首先要配置wxWidget靜態(tài)鏈接支持,編譯并安裝wxGTK,執(zhí)行如下命令:cd /opt/wx build;/opt/src/wxGTK-2.4.0/configure disable-shared disable sockets\ prefix=/opt/wxGTK-2.4.0;make;make install

配置,編譯和安裝eCos的主機基礎(chǔ)環(huán)境,執(zhí)行如下命令:

cd /opt/infra -build; /opt/ecos/host/configure prefix=/opt/ecos-tools; make; make install

編譯安裝ecos配置工具,執(zhí)行如下命令:

cd /opt/configtool -build; make f /opt/ecos/host/tools/configtool/standalone/wxwin/makefile.\ gnu install WXDIR=/opt/wxGTK2.4.0 ECOSSRCDIR=/opt/ecos/host INSTALLDIR=/opt/ecos-\ tools

這樣,就完成了eCos的配置工具安裝,它位于/opt/ecos-tools/bin目錄中,包括了圖形配置工具configtools和命令行配置工具ecosconfig。

4.2 配置基本硬件平臺

與LPC2294相關(guān)的文件在ecos\packages\hal\arm\lpc2xx 目錄中,在/opt/ecos-tools/bin中運行圖形化配置工具configtools,在huild選項的Templates選擇和LPC2294相近的模板.就可以進行具體的平臺級配置。本文選擇phyCORE-LPC2294/92 development board HAL模板作為基本配置平臺,根據(jù)實際目標(biāo)系統(tǒng)平臺修改ecos中的選項,主要修改包括:

a) 修改ARM vector at 0x14選項的值,LPC2XXX系列處理器將ox14處的值作為有效用戶代碼判斷條件,應(yīng)該滿足向量表所以數(shù)據(jù)32位累加和為0的要求;

b) 修改CPU xtal frequency選項的值,這是CPU晶振值,默認(rèn)為10MHz,根據(jù)實際情況修改為11059200;

c) 修改CPU PLL multiplier選項的值,內(nèi)部PLL倍頻值默認(rèn)為6,修改為4;

d) 修改eCos kernel選項的值,根據(jù)需要刪減內(nèi)核中不需要的選項;

e) 修改I/O sub-system選項的值,根據(jù)實際I/0設(shè)備的情況,配置I/0選項;

f) 修改其它配置選項,以適應(yīng)目標(biāo)系統(tǒng)平臺。

這樣就通過圖形化配置工具,配置完成了eCos的大部分選項。然而,圖形化配置工具并不能完成所有的eCos配置功能.因此還需要對內(nèi)存分布文件、Flash驅(qū)動文件進行修改。

4.3 修改內(nèi)存布局

內(nèi)存布局文件在ecos/packages/hal/arm/lpc2xxx/phycore229x/current/include/pkgconf目錄中,里面包含了RAM、ROM兩種不同啟動方式的配置文件,而每種啟動方式又對應(yīng)三種文件格式,分別為:

ldi文件,鏈接腳本文件,定義了LPC2294的內(nèi)存域起始地址和長度和段地址,為程序鏈接時使用。

h文件,使用c宏定義描述LPC2294存儲器起始地址和大?。付ǔ绦蜻\行時堆起始地址和大小。

mlt文件,配置工具保存文件,只能由配置工具生成和改變,不能手動修改。

以LPC2294為例,在ROM啟動時需要修改mlt_arm_lpc2xxx_phycore229x_rom.h文件中的定義,以片外ROM的分配和堆地址分配為例,其代碼如下:

#define CYGMEM_REGlON—flash(0x80000000)

#define CYGMEM_REGl0N_flash_SIZE(CYGHWR_HAL_ARM_PHYCORE229X_FLASH_SIZE)

#define CYGMEM_REGlON_flash_ATTR (CYCMEM_REGION_ATTR_R)

#define CYGMEM_SECCTION_heap1 (CYG_LABEL_NAME(_heap1))

#define CYGMEM_SECTION_heap1_SIZE(0x81000000+CYGHWR_HAL_ARM_PHYCORE229X_SRAM_SIZE - (size_t) CYG_LABEL_NAME (_heap 1))

這樣,定義了片外ROM的起始地址為0x80000000,大小為宏定義中flash的尺寸;定義了程序的堆起始地址為0x81000000,大小也在宏定義中規(guī)定。

4.4添加Flash驅(qū)動

本文的硬件平臺Flash型號為SST39VF6401B,在eCos中并不支持此型號的Flash,所以要為eCos添加Flash的驅(qū)動程序。SST39VF6401B是8MB的16位NOR型Flash,塊空間數(shù)為128,每個塊大小為64KB。選擇eCos已支持的與此Flahh相近的型號AT49系列進行修改.將flash_dev_info_t中的block_size和block_count值分別改為0x10000和0x80。并且編寫與Flash底層驅(qū)動對應(yīng)的CDL文件,使配置工具能夠正確配置編譯F1ash驅(qū)動程序,參照AT49驅(qū)動包的CDL,將cdl_package定義改為CYGPKG_DEVS_Flash_SST_39VF6401B。在命令體中給出配置參數(shù)。最后,在ecos.db中注冊Flash的底層驅(qū)動軟件包,這樣再次使用圖形化配置工具,就可以在eCos配置選項選擇SST39VF6401B型Flash。

4.5修改初始化程序

在eCos啟動時要運行初始化程序,以完成LPC2294的運行模式設(shè)定、時鐘頻率設(shè)定、串口波特率設(shè)定等操作,初始化程序在hal/arm/lpc2xxx/phycore229x_misc.c文件中,phycore229x_misc.c調(diào)用hal_platform_ints.h的宏定義完成系統(tǒng)中斷定義,之后調(diào)用hal_platform_setup.h中的宏定義完成中斷初始化,配置系統(tǒng)時鐘,和內(nèi)部存儲器初始化等操作。修改phycore229x_misc.c中的有關(guān)函數(shù),完成針對本系統(tǒng)平臺的初始化。

4.6運行結(jié)果

在完成上述驅(qū)動的編寫和文件的修改之后,重新使用configtools工具進行配置,使用build選項完成eCos操作系統(tǒng)的編譯,產(chǎn)生內(nèi)核庫文件和鏈接腳本以及頭文件,將生成的文件與應(yīng)用程序一起編譯、鏈接,生成最終的可執(zhí)行映像文件。將可執(zhí)行影像文件下載到Flash中運行,經(jīng)測試eCos支持多個線程的應(yīng)用程序操作,且其串口、網(wǎng)口均能與PC機進行正常通信,說明eCos在LPC2294上的移植是成功的。

5 總結(jié)

嵌入式可配置操作系統(tǒng)eCos與其他嵌入式實時操作系統(tǒng)相比,有著更好的可配置性和可移植性,這使其在嵌入式系統(tǒng)的應(yīng)用日益廣泛。本文將eCos成功的應(yīng)用在了以LPC2294為核心的硬件平臺上,并編寫了相應(yīng)的Flash驅(qū)動程序和應(yīng)用程序,對于eCos在ARM7FDMI系統(tǒng)中的應(yīng)用提供一些借鑒和指導(dǎo)。

本文的創(chuàng)新點:實現(xiàn)了eCos在LPC2294上的移植和應(yīng)用。在實際應(yīng)用中eCos內(nèi)核中斷響應(yīng)快,代碼量小,穩(wěn)定性好,為嵌入式實時操作系統(tǒng)的應(yīng)用提供了參考。

責(zé)任編輯:gt

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

    關(guān)注

    5152

    文章

    19675

    瀏覽量

    317620
  • 汽車電子
    +關(guān)注

    關(guān)注

    3037

    文章

    8349

    瀏覽量

    170171
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7152

    瀏覽量

    125597
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    LPC2294的實時時鐘顯示設(shè)計

    本文主要是在以LPC2294為核心的ARM小系統(tǒng)中,在不采用操作系統(tǒng)的情況下,試編寫了一個工程,并下載到該開發(fā)板的外部存儲器(該開發(fā)板的片外存儲器為4 MB片外32位數(shù)據(jù)總線寬度Flash存儲
    發(fā)表于 02-01 11:26 ?3558次閱讀
    <b class='flag-5'>LPC2294</b>的實時時鐘顯示設(shè)計

    基于LPC2294處理器的嵌入式PLC的設(shè)計

    針對目前普通PLC存在的一些不足,采用PHILIPS公司的ARM 微處理LPC2294嵌入式操作系統(tǒng)μCOS-II,面向工業(yè)控制領(lǐng)域設(shè)計了一種
    發(fā)表于 05-09 16:51 ?3101次閱讀
    基于<b class='flag-5'>LPC2294</b><b class='flag-5'>處理</b>器的<b class='flag-5'>嵌入式</b>PLC的設(shè)計

    微控制器LPC2294相關(guān)資料分享

    微控制器LPC2294資料下載內(nèi)容主要介紹了:LPC2294功能和特性LPC2294引腳功能LPC2294內(nèi)部方框圖LPC2294中文資料
    發(fā)表于 03-31 07:45

    怎樣去實現(xiàn)eCosLPC2294上的移植和應(yīng)用?

    eCos體系結(jié)構(gòu)介紹LPC2294硬件平臺怎樣去實現(xiàn)eCosLPC2294上的移植和應(yīng)用?
    發(fā)表于 04-27 07:16

    什么是嵌入式操作系統(tǒng)? 

    、INTEGRITY、OSE、C ExecuTIve  什么是嵌入式操作系統(tǒng) 嵌入式操作系統(tǒng)是一種支持嵌入式
    發(fā)表于 10-28 07:35

    嵌入式實時操作系統(tǒng)μC/OS-II與eCos的比較

    敘述嵌入式系統(tǒng)嵌入式操作系統(tǒng)的概念,簡述嵌入式實時系統(tǒng)的發(fā)展階段。重點介紹μC/OSII和
    發(fā)表于 04-15 09:36 ?12次下載

    嵌入式實時操作系統(tǒng)μC OS-II與eCos的比較

    敘述嵌入式系統(tǒng)嵌入式操作系統(tǒng)的概念,簡述嵌入式實時系統(tǒng)的發(fā)展階段。重點介紹μC/OSII和
    發(fā)表于 05-16 14:38 ?20次下載

    eCosLPC2294上的移植分析與應(yīng)用

    eCos 是一種可配置的嵌入式實時操作系統(tǒng),本文介紹了eCos 的體系結(jié)構(gòu),分析了eCos硬件抽象層的移植方法。結(jié)合
    發(fā)表于 09-02 08:33 ?16次下載

    嵌入式操作系統(tǒng)uClinux和eCos的比較

    uClinux和eCos操作系統(tǒng)是兩種性能優(yōu)良、源碼公開且被廣泛應(yīng)用的免費嵌入式操作系統(tǒng)。本文通過對uclinux和eCos的對比,分析和總
    發(fā)表于 04-18 08:36 ?1886次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>操作系統(tǒng)</b>uClinux和<b class='flag-5'>eCos</b>的比較

    基于LPC2294的CAN總線主節(jié)點設(shè)計

    為引入CAN總線技術(shù)以實現(xiàn)運動控制系統(tǒng)的網(wǎng)絡(luò)化,提出了基于LPC2294的CAN總線主節(jié)點的硬件及軟件設(shè)計方案。硬件采用基于ARM7內(nèi)核的微控制器LPC2294,使用CTM1050T作
    發(fā)表于 06-21 15:17 ?61次下載
    基于<b class='flag-5'>LPC2294</b>的CAN總線主節(jié)點設(shè)計

    LPC2294設(shè)計的分布數(shù)據(jù)采集

    本文設(shè)計了一種基于ARM的獨立CAN總線,基于LPC2294的分布 數(shù)據(jù)采集 系統(tǒng)。
    發(fā)表于 06-29 14:59 ?51次下載
    用<b class='flag-5'>LPC2294</b>設(shè)計的分布<b class='flag-5'>式</b>數(shù)據(jù)采集

    基于LPC2294的CAN總線智能節(jié)點設(shè)計

    CAN總線是一種應(yīng)用廣泛的實時性現(xiàn)場總線。本文提出了一種基于具有ARM7DMI內(nèi)核的32位ARM微控制器LPC2294的CAN總線智能節(jié)點設(shè)計方案。詳細(xì)介紹了ARM微控制器LPC2294和隔離CAN收發(fā)器CTM1050T的特
    發(fā)表于 05-29 09:27 ?4235次閱讀
    基于<b class='flag-5'>LPC2294</b>的CAN總線智能節(jié)點設(shè)計

    嵌入式操作系統(tǒng)uClinux和eCos的比較

    ),即嵌入式可配置操作系統(tǒng),是RedHat的產(chǎn)品,但eCos并不是Linux或Linux的派生。eCos彌補了Linux在嵌入式應(yīng)用領(lǐng)域的不
    發(fā)表于 12-01 17:12 ?734次閱讀
     <b class='flag-5'>嵌入式</b><b class='flag-5'>操作系統(tǒng)</b>uClinux和<b class='flag-5'>eCos</b>的比較

    構(gòu)建eCos嵌入式系統(tǒng)的步驟教程

    為商用產(chǎn)品。除了商用產(chǎn)品外,還有一些免費的嵌入式操作 系統(tǒng),uClinux是其中比較流行的,而eCos則是另一個選擇。嵌入式可配置
    的頭像 發(fā)表于 07-22 06:11 ?4325次閱讀

    基于LPC2294嵌入式PLC的設(shè)計

    電子發(fā)燒友網(wǎng)站提供《基于LPC2294嵌入式PLC的設(shè)計.pdf》資料免費下載
    發(fā)表于 10-11 10:38 ?0次下載
    基于<b class='flag-5'>LPC2294</b>的<b class='flag-5'>嵌入式</b>PLC的設(shè)計