本文記錄從零開始開發 USB 攝像頭驅動的完整歷程,採用 WinDriver 工具鏈,而非傳統 DDK/DriverStudio。程式碼與執行前請先閱讀 ReadMe.txt。注意:此驅動屬應用層模式,不支援 DirectShow 介面。
閱讀驅動開發入門書,建立基本認知:驅動定義、作用、硬體如何匹配驅動、應用程式如何經驅動存取硬體、驅動產出檔案類型、開發模式比較。
三種主流開發路徑:
| 方式 | 優點 | 缺點 |
|---|---|---|
| DDK 範例改寫 | 品質最佳、最標準 | 難度最高、環境最繁瑣 |
| DriverStudio | 封裝 DDK、視覺化 | 對新手仍具挑戰、偵錯難 |
| WinDriver | 快速通訊、API 友善、無需核心除錯 | 部分效能損耗、非標準驅動模型 |
本專案採 WinDriver,並搭配 BusHound 追蹤現成驅動的初始化序列,轉換為程式碼;再參考晶片資料表(OV511+ 公開文件)補充特殊設定。
Linux 為開源專案,同款晶片驅動原始碼完整可得。分析發現 OV511+ 未壓縮 YUV420 資料以 384 bytes 區塊傳輸(256Y + 64U + 64V),非標準 YUV420,需轉換流程:
OV511+ YUV420 → 標準 YUV420 → RGB24。壓縮資料則需額外解碼,因時間關係未深入。