首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

基於 OHCI 的 USB 主機開發(二):總體分層架構設計

     編輯:關於C語言

架構設計原則

系統單一職責:對 U 盤讀寫。遵循嵌入式**分層架構**,各層單一功能、介面隔離、上層僅依賴下一層(極少跨層),便於維護與移植。

九層架構自底向上

層級名稱核心職責關鍵介面/輸出
1硬體層USB 協議物理處理(AT91RM9200 UHP 控制器)電氣訊號、總線時序
2寄存器讀寫介面層封裝 OHCI 寄存器指標 pUhp 與 HCCA 區,屏蔽寄存器細節ReadReg()/WriteReg()
3OHCI 軟體介面層依 OHCI 標準封裝 ED(端點描述符)與 TD(傳輸描述符)操作,提供基礎傳輸介面SubmitControl/Bulk/Interrupt()
4USB 設備管理層獲取設備/配置/介面/端點描述符,實現設備枚舉與檢測流程EnumerateDevice()
5UFI 命令層實現 Bulk-Only 協議下的 UFI 指令(READ_10/WRITE_10/REQUEST_SENSE 等)扇區讀寫命令
6U 盤操作命令介面層封裝 UFI 為邏輯扇區 diskRead()/diskWrite(),完成 U 盤枚舉、確定 LBA 0 位置邏輯塊讀寫 API
7檔案系統層FAT16 初始化、參數計算、目錄查找、簇鏈遍歷、扇區↔簇轉換FindFile()/ReadCluster()
8檔案操作 API 庫仿 C 標準庫 fopen/fclose/fread/fwrite/fseek,供業務層直接使用標準檔案操作 API
9業務應用層接收計費數據,呼叫檔案 API 完成話單儲存業務邏輯入口

架構優勢

  • 可移植性:更換 CPU 僅需重寫第 2-3 層(OHCI 相關),上層介面不變
  • 可擴展性:新增 USB 設備(如印表機、鍵盤)僅需擴展第 3-4 層支援中斷/同步傳輸,新增驅動與應用即可
  • 可測試性:各層介面明確,可單元測試、模擬下層行為
  • 清晰分工:團隊可按層並行開發,介面契約為準

代碼組織對應

本系列所有代碼嚴格遵循此架構。記住九層模型,閱讀後續原始碼將事半功倍。下篇進入「寄存器初始化」具體實現。

本文出自「rainman」博客。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved