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

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

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

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

電子工程師 ? 作者:工程師陳翠 ? 2018-07-22 06:11 ? 次閱讀

eCos 是一個(gè)優(yōu)秀的嵌入式實(shí)時(shí)操作系統(tǒng)。 eCos 的體系結(jié)構(gòu)是一種分層結(jié)構(gòu),硬件抽象層將操作系統(tǒng)與硬件隔離開,這為把 eCos 移植到不同的硬件平臺提供了便捷的方法,抽象層就像軟件與硬件之間的橋梁。主要的移植思想是,按照 eCos 的模塊化設(shè)計(jì),完成硬件抽象層。

引言

目前,嵌入式操作系統(tǒng)的種類較多,其中比較流行的有 VxWorks 、 Windows CE 、 Psos 、 Palm OS 、嵌入式 Linux 等。這些嵌入式操作系統(tǒng)在開放性、實(shí)用性以及性能等方面各有千秋,但大多數(shù)為商用產(chǎn)品。除了商用產(chǎn)品外,還有一些免費(fèi)的嵌入式操作系統(tǒng), uClinux 是其中比較流行的,而eCos則是另一個(gè)選擇。嵌入式可配置操作系統(tǒng)eCos(Embedded Configureable Operating System )的特點(diǎn)是可配置性、可裁減性、可移植性和實(shí)時(shí)性。它的一個(gè)主要技術(shù)特色就是功能強(qiáng)大的配置系統(tǒng),可以在源碼級實(shí)現(xiàn)對系統(tǒng)的配置和裁減。與 Linux 的配置和裁減相比,eCos的配置方法更清晰、更方便;且系統(tǒng)層次也比 Linux 清晰明了,移植和增加驅(qū)動(dòng)模塊更加容易。正是由于這些特性,eCos引起了越來越多的關(guān)注,同時(shí)也吸引越來越多的廠家使用 eCos 開發(fā)其新一代嵌入式產(chǎn)品。

eCos 現(xiàn)在由 Red Hat 維護(hù),可支持的處理器包括: ARM 、 StrongARM 、 XScale 、 SuperH 、 Intel X86 、 PowerPC 、 MIPS 、 AM3X 、 Motorola 68/Coldfire 、 SPARC 、 Hitachi H8/300H 和 NEC V850 等。源代碼及開發(fā)工具可在 Red Hat 的網(wǎng)站上免費(fèi)下載,網(wǎng)頁地址是 http:/sources.redhat.com/ecos 。

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

eCos 采用模塊化設(shè)計(jì),由不同的功能組件構(gòu)成, eCos 系統(tǒng)的層次結(jié)構(gòu)如圖 1 所示。

這種層次結(jié)構(gòu)的最底層是硬件抽象層( Hardware Abstraction Layer ),簡稱為 HAL ,它負(fù)責(zé)對目標(biāo)系統(tǒng)硬件平臺進(jìn)行操作和控制,包括對中斷和例外的處理,為上層軟件提供硬件操作接口。只需提供新硬件的抽象層,就可以將整個(gè) eCos 系統(tǒng)包括基于 eCos 的應(yīng)用移植到新的硬件平臺上。

2 、構(gòu)建 eCos 系統(tǒng)

構(gòu)建 eCos 系統(tǒng)首先要搭建自己的硬件抽象層,然后創(chuàng)建驅(qū)動(dòng)程序,之后就可以編制應(yīng)用程序了。

3 、硬件抽象層的移植

硬件抽象層分為三個(gè)不同的子模塊:體系結(jié)構(gòu)抽象層( Architecture HAL )、變體抽象層( Variant HAL )和平臺抽象層( Platform HAL )。

體系結(jié)構(gòu)抽象層。 eCos 所支持的不同處理器系列具有不同的體系結(jié)構(gòu),如 ARM 系列、 PowerPC 系列、 MIPS 系列等。體系結(jié)構(gòu)抽象層對 CPU 的基本結(jié)構(gòu)進(jìn)行抽象和定義,此外它還包括中斷的交付處理、上下文切換、 CPU 啟動(dòng)以及該類處理器結(jié)構(gòu)的指令系統(tǒng)等。

變體抽象層指的是處理器在該處理器系列中所具有的特殊性,這些特殊性包括 Cache 、 MMU 、 FPU 等。 eCos 的變體抽象層就是對這些特殊性進(jìn)行抽象和封裝。

平臺抽象層是對當(dāng)前系統(tǒng)的硬件平臺進(jìn)行抽象,包括平臺的啟動(dòng)、芯片選擇和配置、定時(shí)設(shè)備、 I/O 寄存器訪問以及中斷寄存器等。

硬件抽象層的這三個(gè)子模塊之間沒有明顯的界線。對于不同的目標(biāo)平臺,這種區(qū)分具有一定的模糊性。例如, MMU 和 Cache 可能在某個(gè)平臺上屬于體系結(jié)構(gòu)抽象層,而在另一個(gè)平臺上則可能屬于變體抽象層的范圍;再比如,內(nèi)存和中斷控制器可能是一種片內(nèi)設(shè)備而屬于變體抽象層,也可能是片外設(shè)備而屬于平臺抽象層。

eCos 的移植通過這三個(gè)子模塊來完成,即平臺抽象層的移植、變體抽象層的移植和體系結(jié)構(gòu)抽象層的移植。對一個(gè)新的體系結(jié)構(gòu)來說,其系統(tǒng)結(jié)構(gòu)抽象層的建立相對來說比較困難。 eCos 支持大部分當(dāng)前廣泛使用的嵌入式 CPU ,已具有了支持各種體系結(jié)構(gòu)的硬件抽象層。因此, eCos 的移植很少需要進(jìn)行體系結(jié)構(gòu)抽象層的編寫。

4 、平臺抽象層的移植

一般來說,進(jìn)行 eCos 開發(fā)時(shí),移植的主要工作在于平臺抽象層,這是由于 eCos 已實(shí)現(xiàn)了絕大多數(shù)流行嵌入式 CPU 的體系結(jié)構(gòu)抽象層和變體抽象層。平臺抽象層主要完成的工作包括:內(nèi)存的布局、平臺早期初始化、中斷控制器以及簡單串口驅(qū)動(dòng)程序等。

構(gòu)建一個(gè)新的平臺系統(tǒng),最簡單的方法是利用eCos源碼提供的具有相同體系結(jié)構(gòu)和 CPU 型號的參考平臺硬件抽象層,將其作為模板,復(fù)制并修改所有與新平臺相關(guān)的文件。若 eCos 沒有這樣的平臺,則可用另一種體系結(jié)構(gòu)或 CPU 型號的類似硬件抽象層作為模板。比如, eCos 提供了以三星公司 ARM CPU S 3C 4510b 為核心的平臺 SNDS4110 ,當(dāng)需要移植 eCos 到 ARM CPU S 3C 44B0 上時(shí),這將是一個(gè)很好的起點(diǎn)。

移植工作最好是從RedBoot開始,實(shí)現(xiàn)的第一個(gè)目標(biāo)是使RedBoot運(yùn)行在新平臺上。 RedBoot 是eCos自帶的啟動(dòng)代碼,它比 eCos 要簡單,沒有使用中斷和線程機(jī)制,但包含了大部分最基本的功能。

建立目標(biāo)平臺的RedBoot通常按以下步驟進(jìn)行(以構(gòu)建 S3C44b0 的新平臺為例)。

① 復(fù)制 eCos 源碼中選定的參考平臺,根據(jù)需要對目錄及文件更名。更名的主要內(nèi)容有:新平臺的目錄名、組件定義文件( CDL )、內(nèi)存布局文件( MLT )、平臺初始化的源文件和頭文件。

② 調(diào)整組件定義文件( CDL )選項(xiàng)。包括選項(xiàng)的名字、實(shí)時(shí)時(shí)鐘 / 計(jì)數(shù)器、 CYGHWR_MEMORY_LAYOUT 變量、串口參數(shù)以及其他的一些選項(xiàng)。

③ 在頂層ecos.db文件中加入所需要的包,并增加對目標(biāo)平臺的描述。在最初,該目標(biāo)平臺的入口可以只包含硬件抽象層包,其他硬件支持包以后再加入。經(jīng)過修改后,就可在 eCos 配置程序中選擇新的平臺進(jìn)行配置。

④ 修改include/pkgconf 中的內(nèi)存布局( MLT )文件。按照新的硬件平臺內(nèi)存布局修改 MLT 文件。 MLT 文件對應(yīng)每種啟動(dòng)類型有三個(gè)不同后綴的文件: .h 文件以及 .ldi 文件和 mlt 文件。手工修改時(shí)只需修改 .h 文件和 .ldi 文件,并保證兩個(gè)文件同步修改。修改的主要內(nèi)容有 ROM 的起始地址、 ROM 的大小、 RAM 的起始地址和 RAM 的大小。

⑤ 修改平臺的 io 宏定義。在 include/plt_io.h 文件中完成對平臺的各種 IO 宏定義,包括各種 CPU 的系統(tǒng)配置寄存器、內(nèi)存配置寄存器、串口配置寄存器、 LCD 配置寄存器、以太網(wǎng)配置寄存器等的 I/O 地址。

⑥ 修改平臺的Cache代碼。在 include/hal_cache.h 文件中修改有關(guān) Cache 的宏定義。在開發(fā)初期,最好先將 Cache 關(guān)閉,等移植穩(wěn)定后再打開。

⑦ 實(shí)現(xiàn)簡單的串口驅(qū)動(dòng)程序。串口的初始化、接收和發(fā)送在 src/hal_diag.c 文件完成。主要的函數(shù)如下:

cyg_hal_plf_serial_init_channel() ,完成對某個(gè)串口的具體初始化工作;

cyg_hal_plf_serial_putc() ,從串口發(fā)送一個(gè)字符;

cyg_hal_plf_serial_getc() ,從串口接收一個(gè)字符;

cyg_hal_plf_serial_getc_nonblock() ,以無阻塞的方式接收一個(gè)字符,即緩沖區(qū)中無數(shù)據(jù)時(shí)立即返回;

cyg_hal_plf_serial_isr() ,串口中斷服務(wù)程序;

cyg_hal_plf_serial_init() ,調(diào)用 cyg_hal_plf_serial_init_channel() 函數(shù)初始化各串口,并向內(nèi)核注冊串口中斷服務(wù)程序、串口的讀寫例程和配置例程。

⑧ 修改或增加平臺初始化程序。平臺初始化在 3 個(gè)文件文件中完成: src/s 3c 44b0_misc.c 、 include/hal_platform_setup.h 和 include/hal_platform_ints.h 。

hal_platform_ints.h 完成系統(tǒng)的中斷宏定義。在不同的平臺中設(shè)備數(shù)量和類型不同,中斷的譯碼方式也不一致,需要根據(jù)具體情況作出調(diào)整。

hal_platform_setup.h 主要完成系統(tǒng)硬件的初步配置,這里一般要在看門狗和中斷關(guān)閉后,配置系統(tǒng)時(shí)鐘頻率、 ROM 和 RAM 的初始化參數(shù)。

s3c44b0_misc.c 文件完成目標(biāo)板的進(jìn)一步初始化、中斷處理、延時(shí)例程和操作系統(tǒng)時(shí)鐘設(shè)置。

經(jīng)過以上修改,底層的平臺抽象層就基本完成了,這時(shí)可用 eCos 的配置工具生成 RedBoot 進(jìn)行測試。

RedBoot測試成功后,說明平臺已經(jīng)能正確完成初始化操作,且串口驅(qū)動(dòng)也能正常工作,接著要完成中斷和 Cache 等測試工作??衫靡恍┒嗑€程的小程序測試,檢測時(shí)鐘配置是否正確,同時(shí)也檢測了中斷能否正常工作。

5 、驅(qū)動(dòng)程序設(shè)計(jì)

平臺抽象層完成后,接著要完成系統(tǒng)的設(shè)備驅(qū)動(dòng)程序。 eCos 設(shè)備驅(qū)動(dòng)程序的中斷模塊分為三個(gè)層次:中斷服務(wù)程序 ISR 、中斷滯后服務(wù)程序 DSR 和中斷線程。 ISR 在響應(yīng)中斷時(shí)立即調(diào)用, DSR 由 ISR 發(fā)出調(diào)用請求后調(diào)用,而中斷線程為驅(qū)動(dòng)程序的客戶程序。

硬件中斷在最短的時(shí)間內(nèi)交付給ISR處理。硬件抽象層對硬件中斷源進(jìn)行譯碼并調(diào)用對應(yīng)的中斷 ISR 。 ISR可以對硬件進(jìn)行簡單的操作,應(yīng)使ISR的處理時(shí)間盡量短。當(dāng)ISR返回時(shí),它可將自己的中斷滯后服務(wù)程序DSR放入操作系統(tǒng)的任務(wù)調(diào)度中, DSR可以在不妨礙調(diào)度器正常工作時(shí)安全運(yùn)行。大多數(shù)情況下, DSR 將在ISR執(zhí)行完成后立即運(yùn)行。

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

    關(guān)注

    41

    文章

    3531

    瀏覽量

    128980
  • eCos
    +關(guān)注

    關(guān)注

    1

    文章

    19

    瀏覽量

    15197
收藏 人收藏

    評論

    相關(guān)推薦

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

    常見的嵌入式系統(tǒng):Linux、uClinux、WinCE、PalmOS、Symbian、eCos、uCOS-II、VxWorks、pSOS、Nucleus、ThreadX 、Rtems 、QNX
    發(fā)表于 10-28 07:35

    嵌入式系統(tǒng)的概念定義

    嵌入式系統(tǒng)的概念定義一 定義二嵌入式系統(tǒng)的分類嵌入式微處理器嵌入式微控制器即單片機(jī)
    發(fā)表于 12-17 08:33

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

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

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

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

    嵌入式系統(tǒng)構(gòu)建

    嵌入式系統(tǒng)構(gòu)建 嵌入式系統(tǒng)的硬件構(gòu)成1.1. 嵌入式系統(tǒng)
    發(fā)表于 03-15 15:15 ?39次下載

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

    嵌入式系統(tǒng)構(gòu)建教程 前 言.................................................................................................
    發(fā)表于 03-31 15:16 ?32次下載

    嵌入式XPE操作系統(tǒng)構(gòu)建及應(yīng)用

    嵌入式XPE操作系統(tǒng)構(gòu)建及應(yīng)用  1 引言   目前主流嵌入式操作系統(tǒng)有μCLinux、μC/OS-II、WindowsCE、Win
    發(fā)表于 11-07 09:19 ?1287次閱讀
    <b class='flag-5'>嵌入式</b>XPE操作<b class='flag-5'>系統(tǒng)</b>的<b class='flag-5'>構(gòu)建</b>及應(yīng)用

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

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

    eCos嵌入式操作系統(tǒng)構(gòu)建

    eCos具有非常優(yōu)秀的可移植性;使用多任務(wù)搶占機(jī)制,具有最小的中斷延遲;支持嵌入式系統(tǒng)所需的所有同步原語,提供包括設(shè)備驅(qū)動(dòng)程序、內(nèi)存管理、例外處理、標(biāo)準(zhǔn)
    發(fā)表于 05-05 11:46 ?1261次閱讀

    嵌入式系統(tǒng)構(gòu)建

    嵌入式系統(tǒng)構(gòu)建
    發(fā)表于 01-08 14:27 ?11次下載

    嵌入式系統(tǒng)構(gòu)建

    嵌入式系統(tǒng)構(gòu)建
    發(fā)表于 10-27 09:05 ?37次下載
    <b class='flag-5'>嵌入式</b>的<b class='flag-5'>系統(tǒng)</b><b class='flag-5'>構(gòu)建</b>

    安全嵌入式的操作系統(tǒng)構(gòu)建與配置

    安全嵌入式的操作系統(tǒng)構(gòu)建與配置
    發(fā)表于 10-30 17:03 ?10次下載
    安全<b class='flag-5'>嵌入式</b>的操作<b class='flag-5'>系統(tǒng)</b>的<b class='flag-5'>構(gòu)建</b>與配置

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

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

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

    嵌入式實(shí)時(shí)操作系統(tǒng)的使用,可以增強(qiáng)系統(tǒng)性能,確保系統(tǒng)穩(wěn)定性和可靠性,便于維護(hù)開發(fā)應(yīng)用程序.因此越來越廣泛 的使用于各種嵌人
    的頭像 發(fā)表于 09-15 17:47 ?2356次閱讀
    基于LPC2294<b class='flag-5'>嵌入式</b>處理平臺實(shí)現(xiàn)<b class='flag-5'>eCos</b>操作<b class='flag-5'>系統(tǒng)</b>的應(yīng)用

    什么是嵌入式操作系統(tǒng) 常見的嵌入式系統(tǒng)有哪些

    常見的嵌入式系統(tǒng):Linux、uClinux、WinCE、PalmOS、Symbian、eCos、uCOS-II、VxWorks、pSOS、Nucleus、ThreadX 、Rtems 、QNX
    發(fā)表于 10-21 09:36 ?27次下載
    什么是<b class='flag-5'>嵌入式</b>操作<b class='flag-5'>系統(tǒng)</b> 常見的<b class='flag-5'>嵌入式</b><b class='flag-5'>系統(tǒng)</b>有哪些