系統單一職責:對 U 盤讀寫。遵循嵌入式**分層架構**,各層單一功能、介面隔離、上層僅依賴下一層(極少跨層),便於維護與移植。
| 層級 | 名稱 | 核心職責 | 關鍵介面/輸出 |
|---|---|---|---|
| 1 | 硬體層 | USB 協議物理處理(AT91RM9200 UHP 控制器) | 電氣訊號、總線時序 |
| 2 | 寄存器讀寫介面層 | 封裝 OHCI 寄存器指標 pUhp 與 HCCA 區,屏蔽寄存器細節 | ReadReg()/WriteReg() |
| 3 | OHCI 軟體介面層 | 依 OHCI 標準封裝 ED(端點描述符)與 TD(傳輸描述符)操作,提供基礎傳輸介面 | SubmitControl/Bulk/Interrupt() |
| 4 | USB 設備管理層 | 獲取設備/配置/介面/端點描述符,實現設備枚舉與檢測流程 | EnumerateDevice() |
| 5 | UFI 命令層 | 實現 Bulk-Only 協議下的 UFI 指令(READ_10/WRITE_10/REQUEST_SENSE 等) | 扇區讀寫命令 |
| 6 | U 盤操作命令介面層 | 封裝 UFI 為邏輯扇區 diskRead()/diskWrite(),完成 U 盤枚舉、確定 LBA 0 位置 | 邏輯塊讀寫 API |
| 7 | 檔案系統層 | FAT16 初始化、參數計算、目錄查找、簇鏈遍歷、扇區↔簇轉換 | FindFile()/ReadCluster() |
| 8 | 檔案操作 API 庫 | 仿 C 標準庫 fopen/fclose/fread/fwrite/fseek,供業務層直接使用 | 標準檔案操作 API |
| 9 | 業務應用層 | 接收計費數據,呼叫檔案 API 完成話單儲存 | 業務邏輯入口 |
本系列所有代碼嚴格遵循此架構。記住九層模型,閱讀後續原始碼將事半功倍。下篇進入「寄存器初始化」具體實現。
本文出自「rainman」博客。