日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]摘要 eCos是一個(gè)優(yōu)秀的嵌入式實(shí)時(shí)操作系統(tǒng)。eCos的體系結(jié)構(gòu)是一種分層結(jié)構(gòu),硬件抽象層將操作系統(tǒng)與硬件隔離開(kāi),這為把eCos移植到不同的硬件平臺(tái)提供了便捷的方法,抽象層

摘要 eCos是一個(gè)優(yōu)秀的嵌入式實(shí)時(shí)操作系統(tǒng)。eCos的體系結(jié)構(gòu)是一種分層結(jié)構(gòu),硬件抽象層將操作系統(tǒng)與硬件隔離開(kāi),這為把eCos移植到不同的硬件平臺(tái)提供了便捷的方法,抽象層就像軟件與硬件之間的橋梁。主要的移植思想是,按照eCos的模塊化設(shè)計(jì),完成硬件抽象層。關(guān)鍵詞 eCos 移植 硬件抽象層 嵌入式 可配置操作系統(tǒng) 引言   目前,嵌入式操作系統(tǒng)的種類較多,其中比較流行的有VxWorks、Windows CE、Psos、Palm OS、嵌入式Linux等。這些嵌入式操作系統(tǒng)在開(kāi)放性、實(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),可以在源碼級(jí)實(shí)現(xiàn)對(duì)系統(tǒng)的配置和裁減。與 Linux的配置和裁減相比,eCos的配置方法更清晰、更方便;且系統(tǒng)層次也比Linux清晰明了,移植和增加驅(qū)動(dòng)模塊更加容易。正是由于這些特性,eCos引起了越來(lái)越多的關(guān)注,同時(shí)也吸引越來(lái)越多的廠家使用eCos開(kāi)發(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等。源代碼及開(kāi)發(fā)工具可在Red Hat的網(wǎng)站上免費(fèi)下載,網(wǎng)頁(yè)地址是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),簡(jiǎn)稱為HAL,它負(fù)責(zé)對(duì)目標(biāo)系統(tǒng)硬件平臺(tái)進(jìn)行操作和控制,包括對(duì)中斷和例外的處理,為上層軟件提供硬件操作接口。只需提供新硬件的抽象層,就可以將整個(gè)eCos系統(tǒng)包括基于eCos的應(yīng)用移植到新的硬件平臺(tái)上。 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)和平臺(tái)抽象層(Platform HAL)。   體系結(jié)構(gòu)抽象層。eCos所支持的不同處理器系列具有不同的體系結(jié)構(gòu),如ARM系列、PowerPC系列、MIPS系列等。體系結(jié)構(gòu)抽象層對(duì)CPU的基本結(jié)構(gòu)進(jìn)行抽象和定義,此外它還包括中斷的交付處理、上下文切換、CPU啟動(dòng)以及該類處理器結(jié)構(gòu)的指令系統(tǒng)等。   變體抽象層指的是處理器在該處理器系列中所具有的特殊性,這些特殊性包括Cache、MMU、FPU等。eCos的變體抽象層就是對(duì)這些特殊性進(jìn)行抽象和封裝。

圖1   平臺(tái)抽象層是對(duì)當(dāng)前系統(tǒng)的硬件平臺(tái)進(jìn)行抽象,包括平臺(tái)的啟動(dòng)、芯片選擇和配置、定時(shí)設(shè)備、I/O寄存器訪問(wèn)以及中斷寄存器等。   硬件抽象層的這三個(gè)子模塊之間沒(méi)有明顯的界線。對(duì)于不同的目標(biāo)平臺(tái),這種區(qū)分具有一定的模糊性。例如,MMU和Cache可能在某個(gè)平臺(tái)上屬于體系結(jié)構(gòu)抽象層,而在另一個(gè)平臺(tái)上則可能屬于變體抽象層的范圍;再比如,內(nèi)存和中斷控制器可能是一種片內(nèi)設(shè)備而屬于變體抽象層,也可能是片外設(shè)備而屬于平臺(tái)抽象層。   eCos的移植通過(guò)這三個(gè)子模塊來(lái)完成,即平臺(tái)抽象層的移植、變體抽象層的移植和體系結(jié)構(gòu)抽象層的移植。對(duì)一個(gè)新的體系結(jié)構(gòu)來(lái)說(shuō),其系統(tǒng)結(jié)構(gòu)抽象層的建立相對(duì)來(lái)說(shuō)比較困難。eCos支持大部分當(dāng)前廣泛使用的嵌入式CPU,已具有了支持各種體系結(jié)構(gòu)的硬件抽象層。因此,eCos的移植很少需要進(jìn)行體系結(jié)構(gòu)抽象層的編寫。 4 平臺(tái)抽象層的移植   一般來(lái)說(shuō),進(jìn)行eCos開(kāi)發(fā)時(shí),移植的主要工作在于平臺(tái)抽象層,這是由于eCos已實(shí)現(xiàn)了絕大多數(shù)流行嵌入式CPU的體系結(jié)構(gòu)抽象層和變體抽象層。平臺(tái)抽象層主要完成的工作包括:內(nèi)存的布局、平臺(tái)早期初始化、中斷控制器以及簡(jiǎn)單串口驅(qū)動(dòng)程序等。   構(gòu)建一個(gè)新的平臺(tái)系統(tǒng),最簡(jiǎn)單的方法是利用eCos源碼提供的具有相同體系結(jié)構(gòu)和CPU型號(hào)的參考平臺(tái)硬件抽象層,將其作為模板,復(fù)制并修改所有與新平臺(tái)相關(guān)的文件。若eCos沒(méi)有這樣的平臺(tái),則可用另一種體系結(jié)構(gòu)或CPU型號(hào)的類似硬件抽象層作為模板。比如,eCos提供了以三星公司ARM CPU S3C4510b為核心的平臺(tái)SNDS4110,當(dāng)需要移植eCos到ARM CPU S3C44B0上時(shí),這將是一個(gè)很好的起點(diǎn)。    移植工作最好是從RedBoot開(kāi)始,實(shí)現(xiàn)的第一個(gè)目標(biāo)是使RedBoot運(yùn)行在新平臺(tái)上。RedBoot是eCos自帶的啟動(dòng)代碼,它比eCos要簡(jiǎn)單,沒(méi)有使用中斷和線程機(jī)制,但包含了大部分最基本的功能。    建立目標(biāo)平臺(tái)的RedBoot通常按以下步驟進(jìn)行(以構(gòu)建S3C44b0的新平臺(tái)為例)。    ① 復(fù)制eCos源碼中選定的參考平臺(tái),根據(jù)需要對(duì)目錄及文件更名。更名的主要內(nèi)容有:新平臺(tái)的目錄名、組件定義文件(CDL)、內(nèi)存布局文件(MLT)、平臺(tái)初始化的源文件和頭文件   ② 調(diào)整組件定義文件(CDL)選項(xiàng)。包括選項(xiàng)的名字、實(shí)時(shí)時(shí)鐘/計(jì)數(shù)器、CYGHWR_MEMORY_LAYOUT 變量、串口參數(shù)以及其他的一些選項(xiàng)。   ③ 在頂層ecos.db文件中加入所需要的包,并增加對(duì)目標(biāo)平臺(tái)的描述。在最初,該目標(biāo)平臺(tái)的入口可以只包含硬件抽象層包,其他硬件支持包以后再加入。經(jīng)過(guò)修改后,就可在eCos配置程序中選擇新的平臺(tái)進(jìn)行配置?! ? ④ 修改include/pkgconf中的內(nèi)存布局(MLT)文件。按照新的硬件平臺(tái)內(nèi)存布局修改MLT文件。MLT文件對(duì)應(yīng)每種啟動(dòng)類型有三個(gè)不同后綴的文件:.h文件以及.ldi文件和mlt文件。手工修改時(shí)只需修改.h文件和.ldi文件,并保證兩個(gè)文件同步修改。修改的主要內(nèi)容有ROM的起始地址、 ROM的大小、RAM的起始地址和RAM的大小?! ?⑤ 修改平臺(tái)的io宏定義。在include/plt_io.h文件中完成對(duì)平臺(tái)的各種IO宏定義,包括各種CPU的系統(tǒng)配置寄存器、內(nèi)存配置寄存器、串口配置寄存器、LCD配置寄存器、以太網(wǎng)配置寄存器等的I/O地址?! ? ⑥ 修改平臺(tái)的Cache代碼。在include/hal_cache.h文件中修改有關(guān)Cache的宏定義。在開(kāi)發(fā)初期,最好先將Cache關(guān)閉,等移植穩(wěn)定后再打開(kāi)?! ? ⑦ 實(shí)現(xiàn)簡(jiǎn)單的串口驅(qū)動(dòng)程序。串口的初始化、接收和發(fā)送在src/hal_diag.c文件完成。主要的函數(shù)如下:  cyg_hal_plf_serial_init_channel(),完成對(duì)某個(gè)串口的具體初始化工作;  cyg_hal_plf_serial_putc(),從串口發(fā)送一個(gè)字符;  cyg_hal_plf_serial_getc(),從串口接收一個(gè)字符;  cyg_hal_plf_serial_getc_nonblock(),以無(wú)阻塞的方式接收一個(gè)字符,即緩沖區(qū)中無(wú)數(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)核注冊(cè)串口中斷服務(wù)程序、串口的讀寫例程和配置例程。   ⑧ 修改或增加平臺(tái)初始化程序。平臺(tái)初始化在3個(gè)文件文件中完成:src/s3c44b0_misc.c、include /hal_platform_setup.h和include/hal_platform_ints.h?! al_platform_ints.h完成系統(tǒng)的中斷宏定義。在不同的平臺(tái)中設(shè)備數(shù)量和類型不同,中斷的譯碼方式也不一致,需要根據(jù)具體情況作出調(diào)整。  hal_platform_setup.h主要完成系統(tǒng)硬件的初步配置,這里一般要在看門狗和中斷關(guān)閉后,配置系統(tǒng)時(shí)鐘頻率、ROM和RAM的初始化參數(shù)?! 3c44b0_misc.c文件完成目標(biāo)板的進(jìn)一步初始化、中斷處理、延時(shí)例程和操作系統(tǒng)時(shí)鐘設(shè)置。   經(jīng)過(guò)以上修改,底層的平臺(tái)抽象層就基本完成了,這時(shí)可用eCos的配置工具生成RedBoot進(jìn)行測(cè)試。   RedBoot測(cè)試成功后,說(shuō)明平臺(tái)已經(jīng)能正確完成初始化操作,且串口驅(qū)動(dòng)也能正常工作,接著要完成中斷和Cache等測(cè)試工作??衫靡恍┒嗑€程的小程序測(cè)試,檢測(cè)時(shí)鐘配置是否正確,同時(shí)也檢測(cè)了中斷能否正常工作。 5 驅(qū)動(dòng)程序設(shè)計(jì)   平臺(tái)抽象層完成后,接著要完成系統(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)用請(qǐng)求后調(diào)用,而中斷線程為驅(qū)動(dòng)程序的客戶程序。   硬件中斷在最短的時(shí)間內(nèi)交付給ISR處理。硬件抽象層對(duì)硬件中斷源進(jìn)行譯碼并調(diào)用對(duì)應(yīng)的中斷ISR。ISR可以對(duì)硬件進(jìn)行簡(jiǎ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)行。   eCos設(shè)備驅(qū)動(dòng)程序一般可分為三個(gè)部分,如圖2所示。

圖2   eCos的所用設(shè)備驅(qū)動(dòng)程序都使用設(shè)備表入口來(lái)描述。使用宏DEVTAB_ENTRY()可生成設(shè)備表入口。其格式為:   DEVTAB_ENTRY(l, name, dep_name, handlers, init, lookup, priv)。   l:設(shè)備表入口的“C”標(biāo)識(shí)符?! ame:該設(shè)備的“C”字符串名字,在搜索設(shè)備時(shí)用到?! ep_name:對(duì)于一個(gè)層次設(shè)備,此參數(shù)是該設(shè)備下層設(shè)備的“C”字符串名字?! andlers:I/O函數(shù)句柄指針,由宏DEVIO_TABLE實(shí)現(xiàn)的?! nit:當(dāng)eCos處于初始化階段時(shí)被調(diào)用的函數(shù),該函數(shù)可以進(jìn)行查找設(shè)備,對(duì)硬件進(jìn)行設(shè)置等操作。  lookup:當(dāng)調(diào)用cyg_io_lookup()函數(shù)對(duì)該設(shè)備進(jìn)行操作時(shí)調(diào)用的函數(shù)。  priv:該設(shè)備驅(qū)動(dòng)程序所需的專用數(shù)據(jù)?! ≡O(shè)備入口中的句柄handlers包含了一組設(shè)備驅(qū)動(dòng)程序接口函數(shù),是設(shè)備函數(shù)表DEVIO_TAB的指針,DEVIO_TAB包含了一組函數(shù)的指針。設(shè)備I/O函數(shù)表通過(guò)DEVIO_TAB宏來(lái)定義,格式如下:  DEVIO_TABLE(l, write, read, get_config, set_config)?! :改表的“C”標(biāo)識(shí)符,即在DEVTAB_ENTRY中的handlers。  write:實(shí)現(xiàn)向設(shè)備傳送數(shù)據(jù)?! ead:實(shí)現(xiàn)從設(shè)備讀取數(shù)據(jù)?! et_config:實(shí)現(xiàn)讀取設(shè)備配置信息?! et_config:實(shí)現(xiàn)對(duì)設(shè)備的配置操作?! ≡趀Cos的初始化引導(dǎo)過(guò)程中,對(duì)系統(tǒng)中的所有設(shè)備調(diào)用其相應(yīng)的init()函數(shù)(即DEVTAB_ENTRY宏注冊(cè)的初始化函數(shù)),所有對(duì)設(shè)備的I/O操作通過(guò)handlers完成。  設(shè)備驅(qū)動(dòng)程序包含如下內(nèi)容(xxx:表示某種設(shè)備)。   ◆ 用宏定義DEVIO_TABLE設(shè)備I/O函數(shù)表。 DEVIO_TABLE(xxx_handlers, // I/O函數(shù)句柄指針      xxx_write, // 寫函數(shù)      xxx_read, // 讀函數(shù)      xxx_get_config, // 讀配置      xxx_set_config)// 設(shè)置配置  ◆ 用宏定義DEVTAB_ENTRY注冊(cè)設(shè)備入口。 DEVTAB_ENTRY(xxx_device, // 設(shè)備入口名      “/dev/xxx”, // 設(shè)備名,查找設(shè)備時(shí)用到      NULL,// 需用到的底層驅(qū)動(dòng),這里為空      xxx_handles, // I/O函數(shù)句柄指針      xxx_init, // 設(shè)備初始化函數(shù)      xxx_lookup, // 設(shè)備搜索      xxx_priv)// 設(shè)備專用數(shù)據(jù)指針  ◆ 完成初始化函數(shù)xxx_init。完成對(duì)硬件的初始化,調(diào)用函數(shù)cyg_drv_interrupt_create建立中斷對(duì)象,然后調(diào)用函數(shù)cyg_drv_interrupt_attach完成中斷與硬件向量的連接?!  ? 完成中斷服務(wù)程序?!  ?完成中斷滯后服務(wù)程序?!  ?若有中斷線程,則完成中斷線程?!  ?完成設(shè)備搜索函數(shù)xxx_lookup?!  ? 完成寫函數(shù)xxx_write。  ◆ 完成讀函數(shù)xxx_read?!  ?完成讀配置函數(shù)x xx_get_config。  ◆ 完成設(shè)置配置函數(shù)xxx_set_config。 結(jié)論   經(jīng)過(guò)硬件平臺(tái)的移植和驅(qū)動(dòng)程序的編寫,就可在此基礎(chǔ)上開(kāi)發(fā)各種應(yīng)用程序了。   eCos具有非常優(yōu)秀的可移植性;使用多任務(wù)搶占機(jī)制,具有最小的中斷延遲;支持嵌入式系統(tǒng)所需的所有同步原語(yǔ),提供包括設(shè)備驅(qū)動(dòng)程序、內(nèi)存管理、例外處理、標(biāo)準(zhǔn)C和數(shù)學(xué)庫(kù);提供各種開(kāi)發(fā)嵌入式應(yīng)用所需的工具,是開(kāi)發(fā)嵌入式系統(tǒng)的強(qiáng)有力工具。 參考文獻(xiàn) 1 eCos User?s Guide. Red Hat Inc. %26;amp; eCosCentric Ltd, 2003 2 eCos Tutorial. Red Hat Inc, 2002 3 eCos Reference Manual. Red Hat Inc %26;amp; eCosCentric Ltd, 2003 4 Bart Veer, John Dallaway. The eCos Component Writer?s Guide. Red Hat Inc, 2003 5 Antony J. Massa, Embedded Software Development with eCos. Prentice Hall PTR, 2002

本站聲明: 本文章由作者或相關(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)系本站刪除。
換一批
延伸閱讀

Arm 控股有限公司(納斯達(dá)克股票代碼:ARM,以下簡(jiǎn)稱 Arm)今日宣布推出全新 Arm? Lumex? 計(jì)算子系統(tǒng) (Compute Subsystem, CSS) 平臺(tái),這是一套專為旗艦級(jí)智能手機(jī)及下一代個(gè)人電腦加...

關(guān)鍵字: CPU AI 消費(fèi)電子

Arm 控股有限公司(納斯達(dá)克股票代碼:ARM,以下簡(jiǎn)稱 Arm)今日宣布推出全新 Arm? Lumex?計(jì)算子系統(tǒng) (Compute Subsystem, CSS) 平臺(tái),這是一套專為旗艦級(jí)智能手機(jī)及下一代個(gè)人電腦加速...

關(guān)鍵字: 消費(fèi)電子 CPU AI

8位單片機(jī)在嵌入式設(shè)計(jì)領(lǐng)域已經(jīng)成為半個(gè)多世紀(jì)以來(lái)的主流選擇。盡管嵌入式系統(tǒng)市場(chǎng)日益復(fù)雜,8位單片機(jī)依然不斷發(fā)展,積極應(yīng)對(duì)新的挑戰(zhàn)和系統(tǒng)需求。如今,Microchip推出的8位PIC?和AVR?單片機(jī)系列,配備了先進(jìn)的獨(dú)立...

關(guān)鍵字: 單片機(jī) 嵌入式 CPU

在工業(yè)物聯(lián)網(wǎng)設(shè)備部署中,Modbus通信故障是導(dǎo)致系統(tǒng)停機(jī)的首要原因之一。據(jù)統(tǒng)計(jì),超過(guò)60%的現(xiàn)場(chǎng)問(wèn)題源于通信配置錯(cuò)誤或數(shù)據(jù)解析異常。本文從嵌入式系統(tǒng)開(kāi)發(fā)視角,系統(tǒng)闡述Modbus通信調(diào)試的方法論,結(jié)合實(shí)際案例解析如何高...

關(guān)鍵字: 嵌入式系統(tǒng) Modbus通信

在嵌入式系統(tǒng)開(kāi)發(fā)中,看門狗(Watchdog Timer, WDT)是保障系統(tǒng)可靠性的核心組件,其初始化時(shí)機(jī)的選擇直接影響系統(tǒng)抗干擾能力和穩(wěn)定性。本文從硬件架構(gòu)、軟件流程、安全規(guī)范三個(gè)維度,系統(tǒng)分析看門狗初始化的最佳實(shí)踐...

關(guān)鍵字: 單片機(jī) 看門狗 嵌入式系統(tǒng)

上海2025年8月15日 /美通社/ -- 在數(shù)字化轉(zhuǎn)型浪潮與數(shù)據(jù)安全需求的雙重驅(qū)動(dòng)下,瀾起科技今日重磅推出第六代津逮? 性能核 CPU (以下簡(jiǎn)稱 C6P )。這款融合突破性架構(gòu)、全棧兼容性與芯片級(jí)安全防護(hù)的高性能服...

關(guān)鍵字: CPU BSP 數(shù)字化 AI

采用分離式架構(gòu),充分利用主機(jī) CPU 和 PCIe? 基礎(chǔ)設(shè)施,克服傳統(tǒng)存儲(chǔ)瓶頸

關(guān)鍵字: CPU 數(shù)據(jù)中心 服務(wù)器

人工智能(AI)和機(jī)器學(xué)習(xí)(ML)是使系統(tǒng)能夠從數(shù)據(jù)中學(xué)習(xí)、進(jìn)行推理并隨著時(shí)間的推移提高性能的關(guān)鍵技術(shù)。這些技術(shù)通常用于大型數(shù)據(jù)中心和功能強(qiáng)大的GPU,但在微控制器(MCU)等資源受限的器件上部署這些技術(shù)的需求也在不斷增...

關(guān)鍵字: 嵌入式系統(tǒng) 人工智能 機(jī)器學(xué)習(xí)
關(guān)閉