搜尋此網誌

網頁

2010年4月7日 星期三

USB driver 與 Network device driver 開發

1. 開發USB驅動程式並不需要指定是字元型,或區塊型的。

2. USB 的驅動架構是採用封包方式,而不使用傳統的read/ write 方式,亦可自行新增fops,建構裝置檔將資料傳回給user space process。

3. OS底下的USB只進行一樣工作 => I/O 存取 (丟封包的方式)

4. Input device 為處理人為輸入的一個sub-system。

5. 配合與講義(二)的投影片P.68與後面第十章研讀usbmouse.c。

6. tty終端機應用的架構(由上到下): application -> tty -> input device subsystem -> user space standard input / output。

7. usb_device_id <= 建立一個table讓kernel知道這個driver所支援的硬體裝置。 8. 滑鼠移動 =>產生中斷由usb-core收到 => 傳送urb封包給device driver 的 callback function。

9. 滑鼠 <= interrupt transfers webCam <= isochronous transfers 10. 函數呼叫順序: usb_alloc_urb => usb_fill_[control bulk int]_urb => usb_free_urb

11. usb_fill_xxx_urb 系列函數中參數 usb_complete * complete 為一含數指標,該函數的工作在於讓driver可以知道剛才丟給裝置的urb封包已經被處理完成了(透過usb-core callback complete函數)。

12. 同上函數中,pipe參數的設定(transmit / receive)會決定complete 函數的實作方式。

13. 當complete function 被callback後,可以將transfer buffer 指標指向下一筆資料。

14. input device 也是一個subsystem ,負責接收人為輸入,當driver接收到資料欲傳送給user space process時,必須透過input device subsystem來丟。

15. 重要資料結構: usb_device、usb_driver、urb。

16. input device sub-system 中重要的資料結構: input_dev

沒有留言:

張貼留言