新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > eCos嵌入式操作系統構建

        eCos嵌入式操作系統構建

        作者: 時間:2011-05-10 來源:網絡 收藏
        5 驅動程序設計

        本文引用地址:http://www.104case.com/article/150774.htm

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

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

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

          的所用設備驅動程序都使用設備表入口來描述。使用宏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和數學庫;提供各種開發應用所需的工具,是開發系統的強有力工具。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 澄江县| 珲春市| 边坝县| 新乡县| 东乡族自治县| 富川| 沈阳市| 化德县| 白玉县| 株洲市| 木兰县| 昌吉市| 扶沟县| 泊头市| 濮阳县| 阳原县| 灵川县| 旅游| 邵阳市| 奎屯市| 阿城市| 株洲市| 环江| 丰台区| 安平县| 鄱阳县| 隆回县| 遵义县| 中超| 车险| 临夏市| 兴海县| 忻城县| 砀山县| 孙吴县| 灵石县| 大厂| 柳州市| 永定县| 汽车| 全州县|