專案背景
- 主控 CPU:AT91RM9200(ARM920T 核心)
- 任務:利用內建 USB Host 控制器訪問 U 盤,按上層指令將數據寫入指定檔案
- 約束:無額外 USB 專用控制芯片、裸機運行(無 OS)、需穩定可靠高效、不影響主迴圈其他任務
裸機開發的取捨
十餘年嵌入式開發從未使用任何 RTOS。優點:系統極簡、完全可控、問題定位快;缺點:移植性差、通用代碼需重寫。但針對專案複雜度,**裸機反而更清晰**——無驅動加載、無 OS API 呼叫、直接面向 OHCI 寄存器與協議,理解深度更高。
讀者預備知識清單
- USB 介面基礎(端點、傳輸類型、枚舉流程)
- USB 協議層通訊流程(Token/Data/Handshake 階段)
- USB 主機對設備管理流程(地址分配、配置選擇)
- OHCI 標準—— AT91RM9200 USB Host 操作規範核心
- Mass Storage Bulk-Only 協議—— U 盤訪問命令傳輸封裝
- UFI 命令集—— 讀寫扇區、驗證媒體等 SCSI 簡化指令
- FAT16/32 檔案系統—— 目錄項、FAT 表、簇鏈操作
上述內容將在後續章節按需展開,建議預先閱讀相關規範文檔。
核心參考資料
- Open Host Controller Interface Specification for USB (Compaq, FTP 可獲取)
- ARM 嵌入式系統軟件開發實例(周立功等,北航出版社)
- USB 2.0 應用系統開發實例精選(廖濟林,電子工業出版社)
- Universal Serial Bus Mass Storage Class Bulk-Only Transport
- Universal Serial Bus Mass Storage Class UFI Command Specification
- Microsoft Extensible Firmware Initiative FAT32 Specification(FAT16 相容)
系列規劃
本系列將按軟體分層架構逐層講解:硬體→寄存器封裝→OHCI 軟體介面→USB 設備管理→UFI 命令→磁盤操作介面→檔案系統→檔案操作 API→業務應用。下篇進入「總體架構設計」。
本文出自「rainman」博客。