設備驅動
程序主要用於對設備數據的讀寫操作,以及對設備配置和讀取設備信息的操作,它還可以使用和管理來自設備的中斷。所有的設備驅動程序設計接口都具有普遍性質。
設備驅動程序一般可分爲三個部分: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() //函數完成對設別的配置操作。