USB host處理過程

2021-06-12 10:43:07 字數 1204 閱讀 8463

在usbh_core.c中有乙個函式usbh_process(),這個函式很重要,main()函式每迴圈一次,它就執行一次,

它處理所有usb核心狀態的變化,

typedef enum host_state; 

根據這個當前狀態(phost->gstate)處於以上哪個狀態的不同,做出不同的處理過程。其中最重要的要屬這兩個狀態:host_enumeration,,host_class。

host_enumeration狀態,不言而喻,這就是大名鼎鼎的列舉狀態,經過空閒,連線狀態後面就要對裝置進行列舉了,列舉過程其實也是對狀態機的處理過程,用

的是這個usbh_handleenum(pdev , phost)函式,也在在usbh_core.c中,因為列舉過程也是usb過程的核心過程。列舉過程根據時間先後順序依次經過 

typedef enum enum_state; 

以上幾個過程,如果都得到正確的處理,且返回值也為ok的話,列舉過程結束,此時已經獲得了usb裝置的基本資訊。比如:裝置描述符,配置描述符等等。下一

步就該載入裝置驅動了,根據列舉過程獲得到的裝置型別和id號,比如大容量儲存裝置,hid,vidio等,選擇不同的裝置驅動載入,並初始化。這一步是在usbh_process()處

理函式在的host_usr_input狀態下執行的。正確執行後進入下乙個狀態host_class_request,

在這個host_class_request狀態,主要是初始化裝置驅動類的狀態機(host class state machine),為一步做準備。

下面就到了另乙個重要的處理函式,status = phost->class_cb->machine(pdev, phost);其實這個函式最終會呼叫usbh_msc_handle(),這個函式在

usbh_msc_core.c中,usbh_msc_core.c顧名思義,這就是usb主機端mass storage類的驅動程式,核心檔案,

usbh_msc_handle()函式根據當前所處的狀態,作出相應的處理。

typedef enum

mscstate;

#define ush_usr_fs_init 0

#define ush_usr_fs_readlist 1

#define ush_usr_fs_writefile 2

#define ush_usr_fs_draw 3

如果我要編寫我自己的應用程式的話,應該就是修改這個函式吧,

Hadoop map reduce處理過程

1 在hadoop中,每個mapreduce任務都被初始化為乙個job。每個job又可以分成兩個階段 map階段和reduce階段 map函式接受乙個形式的輸入,然後同樣產生乙個形式的中間輸出,hadoop會負責將所有具有相同結果中間key值的value集合到一起傳給reduce函式,reduce函...

Openstack nova api 處理過程

乙個python函式示例 乙個python類的示例 所有的web請求引數都被封裝在environ這個dictionary中,start response函式讓人難以理解,其主要作用是設定reponse的http返回碼和http header.返回的list的乙個item對應於http respons...

編譯處理過程

編譯,編譯程式讀取源程式 字元流 對之進行詞法和語法的分析,將高階語言指令轉換為功能等效的彙編 再由匯程式設計序轉換為機器語言,並且按照作業系統對可執行檔案格式的要求鏈結生成可執行程式。c源程式標頭檔案 預編譯處理 cpp 編譯程式本身 優化程式 匯程式設計序 鏈結程式 可執行檔案 1.編譯預處理 ...