中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > eCos嵌入式操作系統(tǒng)構(gòu)建

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

        作者: 時(shí)間:2011-05-10 來(lái)源:網(wǎng)絡(luò) 收藏
        5 驅(qū)動(dòng)程序設(shè)計(jì)

        本文引用地址:http://www.antipu.com.cn/article/150774.htm

          平臺(tái)抽象層完成后,接著要完成系統(tǒng)的設(shè)備驅(qū)動(dòng)程序。設(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放入的任務(wù)調(diào)度中,DSR可以在不妨礙調(diào)度器正常工作時(shí)安全運(yùn)行。大多數(shù)情況下,DSR將在ISR執(zhí)行完成后立即運(yùn)行。

          設(shè)備驅(qū)動(dòng)程序一般可分為三個(gè)部分,如圖2所示。

          的所用設(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í)符。

          name:該設(shè)備的“C”字符串名字,在搜索設(shè)備時(shí)用到。

          dep_name:對(duì)于一個(gè)層次設(shè)備,此參數(shù)是該設(shè)備下層設(shè)備的“C”字符串名字。

          handlers:I/O函數(shù)句柄指針,由宏DEVIO_TABLE實(shí)現(xiàn)的。

          init:當(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)程序所需的專(zhuān)用數(shù)據(jù)。

          設(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)。

          l:改表的“C”標(biāo)識(shí)符,即在DEVTAB_ENTRY中的handlers。

          write:實(shí)現(xiàn)向設(shè)備傳送數(shù)據(jù)。

          read:實(shí)現(xiàn)從設(shè)備讀取數(shù)據(jù)。

          get_config:實(shí)現(xiàn)讀取設(shè)備配置信息。

          set_config:實(shí)現(xiàn)對(duì)設(shè)備的配置操作。

          在eCos的初始化引導(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, // 寫(xiě)函數(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è)備專(zhuān)用數(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。

          ◆ 完成寫(xiě)函數(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)程序的編寫(xiě),就可在此基礎(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)有力工具。

        linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)

        上一頁(yè) 1 2 下一頁(yè)

        評(píng)論


        相關(guān)推薦

        技術(shù)專(zhuān)區(qū)

        關(guān)閉