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
沒有留言:
張貼留言