嵌入式系統usb開發學習概述

2021-10-02 19:27:19 字數 1268 閱讀 5150

如未特別說明, 現階段學習的usb主要是指usb從機/裝置.

簡單閱讀過一些介紹usb應用基礎和協議棧的文件之後, 發現協議棧的內容主要是約定要怎樣怎樣, 資料報格式啊, 通訊機制啊. 但是, 真正落實到mcu上的程式設計時, 首要要搞清楚的是, 哪些工作是由硬體完成的, 那些工作是由軟體完成的. 需要軟體完成的部分, 可以參考已有的很多優秀且開源的usb協議棧程式, 作為使用者來講, 這部分**就不需要從頭設計編寫了, 直接復用就好. 而硬體部分在各個晶元上各有不同, 而當我們需要某個特定的晶元平台上使用usb功能時, 就需要使用具體的usb控制器想方設法滿足上層協議棧軟體對資料和事件響應的需求, 完成usb協議最終棧的移植.

這裡以複雜度相當的檔案系統fatfs和乙太網協議棧lwip作為模擬, 使用者在移植時, 只要實現底層簡單的讀寫操作, 並嵌入到協議棧的底層函式中, 中間關於協議棧的複雜機制對於大多數使用者來講都是黑盒子, 使用者直接呼叫協議棧的應用層api就能使用. usb相對於這些協議棧來說, 在底層也比較簡單, 但需要明確搞清楚對硬體的需求. 作為乙個通訊類的協議棧, usb協議棧的基本操作就是傳數, 全部資料都是通過"端點"傳輸的, 而端點在硬體上就是一段記憶體的緩衝區, 可以向其中寫資料(發數), 也可以從中讀資料(收數). 另外, usb通訊過程中還有一些事件告訴usb協議棧需要分情況處理, 這些事件在硬體上反應在usb的通訊包, 有些整合度比較高的usb控制器模組簡化了軟體判斷的工作, 能夠使用硬體電路自動檢測到這些特殊的通訊包, 然後在暫存器上通過乙個狀態標誌位告訴軟體, 這樣usb的軟體部分只要安心處理有效資料的收發就好.

但usb相對於fatfs和lwip相對難學一點的主要原因在於:

這些就是嵌入式開發者學習usb的基本思路.

建議的學習方式是:

不要一開始就啃usb協議棧, 可以先了解一些usb的基本概念, 科普一下.

然後仔細看看自己選用硬體平台上的usb控制器有什麼功能, 能夠實現哪些基本操作.

找一款自己傾向的usb協議棧實現**, 作為usb純軟體部分的框架(這部分**沒必要自己再敲一遍), 最好應用例程比較豐富, 便於自己後期修改.

想方設法將自己的硬體平台同軟體元件對接上.

usb應用層的部分與硬體完全無關, 可以用選用的usb協議棧自帶的程式驗證一下. 大多數情況下, 到這一步就能夠滿足絕大多數初學者的應用需求了, 例如hid滑鼠鍵盤, cdc串列埠, msd大容量儲存裝置等, 再複雜一點就是復合類, 也有不少usb協議棧的實現提供了樣例程式.

閱讀自己移植好的**, 再看usb協議棧的文件, 嘗試定製自己的功能. 例如, 改改裝置裝置的字串, 或者定製更複雜的裝置等等.

end

嵌入式系統學習開發概述

簡介 下面是嵌入式系統組成圖 嵌入式微處理器常用種類如下 嵌入式作業系統常用種類如下 linux發行版常用種類如下 職業發展 學習概述 嵌入式系統學習一般可以分為以下幾個步驟 一 選一塊開發板,了解其資源 1 系統資源 括號中的是模擬pc機的資源 2 介面資源 3 啟動模式 不同開發板的儲存配置不一...

嵌入式系統的開發概述

1 以硬體為中心,以計算機技術為基礎,軟硬體可裁剪,應用系統對功能 可靠性 成本 體積 功耗和應用環境有特殊要求的專用計算機系統。是將應用程式 作業系統和計算機硬體整合在一起的系統 技術角度 2 嵌入式系統是設計完成複雜功能的硬體和軟體,並使其緊密耦合在一起的計算機系統 系統角度 嵌入式系統是以嵌入...

初識嵌入式 嵌入式開發概述

1 什麼是嵌入式技術 1 嵌入式軟體與非嵌入式軟體的區別?答 嵌入式軟體是結合作業系統之上做的開發 非嵌入式軟體是做的裸機開發。裸機 沒有作業系統 2 嵌入式開發與微控制器開發的區別?答 區別 是否有作業系統。拓展 答 優點 解決了軟體的移植性 解決了開發人員的能力的劃分問題。提供了豐富的網路協議 ...