eCos驅動程序設計

設備驅動 程序主要用於對設備數據的讀寫操作,以及對設備配置和讀取設備信息的操作,它還可以使用和管理來自設備的中斷。所有的設備驅動程序設計接口都具有普遍性質。
    設備驅動程序一般可分爲三個部分:D EV TAB_ENTRY,設備IO函數表DEVIO_TAB、設備IO函數。

     eCos中所有設備驅動都使用設備表入口來進行描述,設備表入口是一個具有cyg_devtab_entry_t類型的數據結構,使用宏DEVTAG_ENTRY()可以生成一個設備表入口。

         DEVTAB_ENTRY(l, name, dep_name, handers, init, lookup, priv)
其中:
    l--------該設備表入口的“C”標識符
    name------設備的“C”字符串名字
    dep_name---對於一個層次設備,此參數是該設備的下層設備的“C”字符串名字
    handlers-----IO函數句柄指針
    init-------當eCos處於初始化狀態時候被調用的函數,該函數可以進行查找設備,對硬件進行設置等操作。
    lookup-----當調用cyg_io_lookup()函數能對該設備進行操作的時候所調用的一個函數。
    priv-------該設備驅動程序所需要的專用數據存在位置。

對於塊設備,則需要宏
     BLOCK_DEVTAG_ENTRY(i, name, dep_name, handers, init, lookup, priv)

    設備表入口中的句柄handlers提供了一組設備驅動程序接口函數。handles是設備IO函數表DEVIO_TAB的指針,DEVIO_TAB包含了一組函數的指針,這些函數是各種接口函數cyg_io_XXX()的具體實現。

 

設備IO函數通過DEVIO_TAB宏來定義
   

      DEVIO_TABLE(l, write, read, get_config, set_config)
其中:
    l------表示的“C”標識符
    write----cyg_io_write()    //實現向設備傳送數據
    read----cyg_io_read()       //實現向設別讀取數據
    get_config---cyg_io_get_config()       //實現對設備配置信息的讀取操作
    set_config---cyg_io_set_config()        //函數完成對設別的配置操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章