日本在线www-日本在线播放一区-日本在线不卡免费视频一区-日本在线不卡视频-成人影院久久久久久影院-成人影院一区二区三区

最新廣告
關注中國自動化產業發展的先行者!
工業智能邊緣計算2025年會
CAIAC 2025
2025工業安全大會
OICT公益講堂
當前位置:首頁 >> 案例 >> 案例首頁

案例頻道

如何構建eCos嵌入式系統
  • 企業:控制網     領域:機器視覺     行業:輸配電    
  • 點擊數:2415     發布時間:2006-02-13 17:08:11
  • 分享到:
eCos是一個優秀的嵌入式實時操作系統。eCos的體系結構是一種分層結構,硬件抽象層將操作系統與硬件隔離開,這為把eCos移植到不同的硬件平臺提供了便捷的方法,抽象層就像軟件與硬件之間的橋梁。主要的移植思想是,按照eCos的模塊化設計,完成硬件抽象層。



    引言

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

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

    1、eCos的層次結構

    eCos采用模塊化設計,由不同的功能組件構成,eCos系統的層次結構如圖1所示。

    這種層次結構的最底層是硬件抽象層(Hardware Abstraction Layer),簡稱為HAL,它負責對目標系統硬件平臺進行操作和控制,包括對中斷和例外的處理,為上層軟件提供硬件操作接口。只需提供新硬件的抽象層,就可以將整個eCos系統包括基于eCos的應用移植到新的硬件平臺上。

    2、構建eCos系統 

    構建eCos系統首先要搭建自己的硬件抽象層,然后創建驅動程序,之后就可以編制應用程序了。

    3、硬件抽象層的移植

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

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

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



圖1

    平臺抽象層是對當前系統的硬件平臺進行抽象,包括平臺的啟動、芯片選擇和配置、定時設備、I/O寄存器訪問以及中斷寄存器等。

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

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

    一般來說,進行eCos開發時,移植的主要工作在于平臺抽象層,這是由于eCos已實現了絕大多數流行嵌入式CPU的體系結構抽象層和變體抽象層。平臺抽象層主要完成的工作包括:內存的布局、平臺早期初始化、中斷控制器以及簡單串口驅動程序等。

    構建一個新的平臺系統,最簡單的方法是利用eCos源碼提供的具有相同體系結構和CPU型號的參考平臺硬件抽象層,將其作為模板,復制并修改所有與新平臺相關的文件。若eCos沒有這樣的平臺,則可用另一種體系結構或CPU型號的類似硬件抽象層作為模板。比如,eCos提供了以三星公司ARM CPU S3C4510b為核心的平臺SNDS4110,當需要移植eCos到ARM CPU S3C44B0上時,這將是一個很好的起點。

    移植工作最好是從RedBoot開始,實現的第一個目標是使RedBoot運行在新平臺上。RedBoot是eCos自帶的啟動代碼,它比eCos要簡單,沒有使用中斷和線程機制,但包含了大部分最基本的功能。

    建立目標平臺的RedBoot通常按以下步驟進行(以構建S3C44b0的新平臺為例)。

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

    ② 調整組件定義文件(CDL)選項。包括選項的名字、實時時鐘/計數器、CYGHWR_MEMORY_LAYOUT 變量、串口參數以及其他的一些選項。

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

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

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

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

    ⑦ 實現簡單的串口驅動程序。串口的初始化、接收和發送在src/hal_diag.c文件完成。主要的函數如下:

    cyg_hal_plf_serial_init_channel(),完成對某個串口的具體初始化工作;
    cyg_hal_plf_serial_putc(),從串口發送一個字符;
    cyg_hal_plf_serial_getc(),從串口接收一個字符;
    cyg_hal_plf_serial_getc_nonblock(),以無阻塞的方式接收一個字符,即緩沖區中無數據時立即返回;
    cyg_hal_plf_serial_isr(),串口中斷服務程序;
    cyg_hal_plf_serial_init(),調用cyg_hal_plf_serial_init_channel()函數初始化各串口,并向內核注冊串口中斷服務程序、串口的讀寫例程和配置例程。

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

    hal_platform_ints.h完成系統的中斷宏定義。在不同的平臺中設備數量和類型不同,中斷的譯碼方式也不一致,需要根據具體情況作出調整。

    hal_platform_setup.h主要完成系統硬件的初步配置,這里一般要在看門狗和中斷關閉后,配置系統時鐘頻率、ROM和RAM的初始化參數。

    s3c44b0_misc.c文件完成目標板的進一步初始化、中斷處理、延時例程和操作系統時鐘設置。

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

    RedBoot測試成功后,說明平臺已經能正確完成初始化操作,且串口驅動也能正常工作,接著要完成中斷和Cache等測試工作。可利用一些多線程的小程序測試,檢測時鐘配置是否正確,同時也檢測了中斷能否正常工作。

    5、驅動程序設計

    平臺抽象層完成后,接著要完成系統的設備驅動程序。eCos設備驅動程序的中斷模塊分為三個層次:中斷服務程序ISR、中斷滯后服務程序DSR和中斷線程。ISR在響應中斷時立即調用,DSR由ISR發出調用請求后調用,而中斷線程為驅動程序的客戶程序。

    硬件中斷在最短的時間內交付給ISR處理。硬件抽象層對硬件中斷源進行譯碼并調用對應的中斷ISR。ISR可以對硬件進行簡單的操作,應使ISR的處理時間盡量短。當ISR返回時,它可將自己的中斷滯后服務程序DSR放入操作系統的任務調度中,DSR可以在不妨礙調度器正常工作時安全運行。大多數情況下,DSR將在ISR執行完成后立即運行。

    eCos設備驅動程序一般可分為三個部分,如圖2所示。



圖2

    eCos的所用設備驅動程序都使用設備表入口來描述。使用宏DEVTAB_ENTRY()可生成設備表入口。其格式為:

    DEVTAB_ENTRY(l, name, dep_name, handlers, init, lookup, priv)。

    l:設備表入口的“C”標識符。
    name:該設備的“C”字符串名字,在搜索設備時用到。
    dep_name:對于一個層次設備,此參數是該設備下層設備的“C”字符串名字。
    handlers:I/O函數句柄指針,由宏DEVIO_TABLE實現的。
    init:當eCos處于初始化階段時被調用的函數,該函數可以進行查找設備,對硬件進行設置等操作。
    lookup:當調用cyg_io_lookup()函數對該設備進行操作時調用的函數。
    priv:該設備驅動程序所需的專用數據。

    設備入口中的句柄handlers包含了一組設備驅動程序接口函數,是設備函數表DEVIO_TAB的指針,DEVIO_TAB包含了一組函數的指針。設備I/O函數表通過DEVIO_TAB宏來定義,格式如下:

    DEVIO_TABLE(l, write, read, get_config, set_config)。
    l:改表的“C”標識符,即在DEVTAB_ENTRY中的handlers。
    write:實現向設備傳送數據。
    read:實現從設備讀取數據。
    get_config:實現讀取設備配置信息。
    set_config:實現對設備的配置操作。

    在eCos的初始化引導過程中,對系統中的所有設備調用其相應的init()函數(即DEVTAB_ENTRY宏注冊的初始化函數),所有對設備的I/O操作通過handlers完成。

    設備驅動程序包含如下內容(xxx:表示某種設備)。

    用宏定義DEVIO_TABLE設備I/O函數表。

    DEVIO_TABLE(xxx_handlers, // I/O函數句柄指針
                xxx_write, // 寫函數
                xxx_read, // 讀函數
                xxx_get_config, // 讀配置
                xxx_set_config)// 設置配置

    用宏定義DEVTAB_ENTRY注冊設備入口。

    DEVTAB_ENTRY(xxx_device, // 設備入口名
               “/dev/xxx”, // 設備名,查找設備時用到
                NULL,// 需用到的底層驅動,這里為空
                xxx_handles, // I/O函數句柄指針
                xxx_init, // 設備初始化函數
                xxx_lookup, // 設備搜索
                xxx_priv)// 設備專用數據指針

    完成初始化函數xxx_init。完成對硬件的初始化,調用函數cyg_drv_interrupt_create建立中斷對象,然后調用函數cyg_drv_interrupt_attach完成中斷與硬件向量的連接;

    完成中斷服務程序;

    完成中斷滯后服務程序;

    若有中斷線程,則完成中斷線程;

    完成設備搜索函數xxx_lookup;

    完成寫函數xxx_write;

    完成讀函數xxx_read;

    完成讀配置函數x xx_get_config;

    完成設置配置函數xxx_set_config。

    結論

    經過硬件平臺的移植和驅動程序的編寫,就可在此基礎上開發各種應用程序了。

    eCos具有非常優秀的可移植性;使用多任務搶占機制,具有最小的中斷延遲;支持嵌入式系統所需的所有同步原語,提供包括設備驅動程序、內存管理、例外處理、標準C和數學庫;提供各種開發嵌入式應用所需的工具,是開發嵌入式系統的強有力工具。

    參考文獻

    [1] eCos User

熱點新聞

推薦產品

x
  • 在線反饋
1.我有以下需求:



2.詳細的需求:
姓名:
單位:
電話:
郵件:
主站蜘蛛池模板: 制服师生一区二区三区在线-制服师生av在线-制服 丝袜 亚洲 中文 综合-直接看毛片-欧美视频在线观看视频-欧美视频在线观看免费最新 | 欧美成人精品动漫在线专区-欧美成人精品区综合A片-欧美成人精品三区综合A片-欧美成人精品一区二区综合A片-欧美成人另类-欧美成人猛片AAAAAAA | 爆乳无码一区二区三区-爆乳熟妇一区二区三区霸乳-爆乳熟妇一区-爆乳少妇在办公室在线观看-爆乳护士一区二区三区在线播放-白丝一区二区三区 | 福利视频欧美一区二区三区-福利视频欧美-福利视频你懂的-福利视频导航网址-福利视频导航网-福利视频导航大全 | 亚洲精品在线观看视频-亚洲精品在线观看-亚洲精品在线第一页-亚洲精品在线播放视频-护士伦理-护士撩起裙子让你桶的视频 | 开心色99xxxx开心色-开心色99-开心久久婷婷综合中文字幕-开心 色 欧美 图-中文字幕人乱码中文-中文字幕人妻丰满熟女 | 九九激情网,日韩色综合,成人小视频网站,国产永久在线观看,污黄视频在线观看,看国产一级片 | 91在线视频在线-91在线视频在线观看-91在线丨亚洲-91在线天堂-91在线无码精品秘 入口91-91在线无码精品秘蜜桃 | 成人黄色在线网站-成人黄色在线免费观看-成人黄色在线观看-成人黄色在线播放-成人黄色在线-成人黄色影视 | 欧美精品一区二区精品久久-欧美精品一二区-2019酷路泽大改款-欧美精品亚洲一区二区在线播放-99日韩-99人中文字幕亚洲区 | 四色草视频-四散的尘埃在线观看-四库国产精品成人-四虎最新网址入口-国产精品一区二区三区四区五区-国产精品一区二区三区四区 | 国产一卡2卡3卡四卡精品网站-国产一久久香蕉国产线看观看-国产一进一出视频网站-国产一级在线现免费观看-亚洲高清国产拍精品影院-亚洲高清二区 | 97视频久久久-97视频在线观看播放-97视频制服无码-97丨九色丨国产人妻熟女-97无码欧美熟妇人妻蜜-97无码欧美熟妇人妻蜜桃天美 | 亚洲国产欧美精品-亚洲国产欧美国产综合一区-亚洲国产欧美国产第一区-亚洲国产模特在线播放-好吊色青青青国产在线播放-好吊色青青草 | 国产精品视频你懂的-国产精品视频网-国产精品视频一区二区猎奇-国产精品视频一区二区三区-国产精品视频一区二区三区不-国产精品视频一区二区三区不卡 | 7788理论片在线观看-7788av-777午夜精品免费播放-777奇米影视一区二区三区-蜜桃传媒在线-蜜桃成熟时1997在线看免费看 | 美女内射毛片在线看-美女内射毛片在线看免费人动物-美女内射视频WWW网站午夜-美女强奷到抽搐在线播放-美女视频黄a视频全免费网站色窝-美女视频黄的全是免费 | 7788理论片在线观看-7788av-777午夜精品免费播放-777奇米影视一区二区三区-蜜桃传媒在线-蜜桃成熟时1997在线看免费看 | 一级成人生活片免费看-一级床上爽高清播放-一级大毛片-一级大片免费看-一级二级毛片-一级夫妻黄色片 | 日本3p视频-忍住波多野10分钟就可以中出-热门电影在线观看-全免费a级毛片免费看视频免-三妻四妾韩国电影 | 在线播放波多野结衣-在线播放91撕破艺校舞蹈系-在线播放69热精品视频-在线www天堂资源网-欧美裸色美妆大全-欧美伦理三级 | 91精品在线播放视频大全在线观看-91精品在线国产一区-91精品在线视频观看-91精品中文字幕-91精品专区-91精品专区国产盗摄 | 波多野结衣在线中文-波多野结衣在线影视免费观看-波多野结衣在线影视-波多野结衣在线一区二区-波多野结衣在线一区-波多野结衣在线网址 | 中文字幕在线观看网址-中文字幕在线观看网站-中文字幕在线观看国产-中文字幕在线观看-开心片色99xxxx-开心久久激情 | 午夜国产小视频-午夜国产视频-午夜国产情侣拍视频-午夜国产精品影院在线观看-国产日产高清欧美一区二区三区-国产日本在线视频 | 99久久这里只精品国产免费,毛片在线播放网站,狠狠色狠色综合曰曰,国产在线成人精品,欧美色视频网,激情五月婷婷综合 | 一个色综合网-一个色综合高清在线观看-一个色在线视频-一个色亚洲-一个人在线观看的www-一个人在线观看www中国 | 久久久精品视频免费观看,非会员体验60秒试看福利区,免费福利在线观看,国内免费视频成人精品,久久久中文字幕日本,婷婷激情五月 | 日本a天堂,亚洲精品乱码久久久久久,欧美精品一区二区三区在线播放,国产亚洲视频在线观看,国产丰满眼镜女在线观看,亚洲日韩欧美综合 | 一级毛片在线看-一级毛片在线播放免费-一级毛片一级毛片免费毛片-一级毛片一级毛片-九九51精品国产免费看-九号影院 | 与子敌伦刺激对白亂輪亂性-与嫂子同居的日子在线观看-与邻居换娶妻子2在线观看-瑜伽牲交AV-久久久96-久久久91精品国产一区二区 | 色视频www在线播放国产人成-色射综合-色射网-色射啪-国产91成人-国产91白浆四溢 | 国产福利在线视频尤物tv-国产福利在线看-国产福利在线高清导航大全-国产福利在线-国产福利影视-国产福利一区二区麻豆 | 久草视频精品-久草视频免费-久草视频免费看-久草视频免费在线播放-天天操操-天天操操操操操 | 中国一级特黄毛片-中国一级毛片在线观看-中国一级毛片特级毛片-中国一级毛片视频-客厅也啪啪厨房也啪啪女-客厅沙发与子对白在线观看 | 国产成人av网站网址-国产成人av无码精品-国产成人av无码精品天堂-国产成人av无码片在线观看-国产成人av无码一区二区三区不卡-国产成人av无码永久免费 | 亚洲幼女网-亚洲呦女专区-亚洲永久在线观看-亚洲永久免费视频-精品久久香蕉国产线看观看麻豆-精品久久日日躁夜夜躁AV | 青草视频在线观看免费视频-青草视频在线观看免费-青草视频网址-青草视频网站在线观看-国产黄色一级网站-国产黄色一级毛片 | 天天干天天操天天碰-天天干天天操天天摸-天天干天天操天天干-天天干天天操天天插-欧美一级久久久久久久久大-欧美一区二区VA毛片视频 | 一个人看的在线www高清视频-一个人看的小说在线阅读-一个人看的手机视频www-一个人看的视频在线观看免费播放动漫-久久99精品久久久久久秒播放器-久久99精品久久久久久秒播 | 久久re这里视频只有精品首页-久久re这里视频只精品首页-久久re这里视频精品8-久久re这里视频精品15-一本道色综合手机久久-一本道色播 |