计算机与USB沟通方式
一直不理解我們的設備如何通過USB或者其他接口溝通的,查了一些資料。
比如usb設備。
參考:
詳解USB總線工作原理
USB配置、接口和端點
USB具體通信過程
物理地址和虛擬地址的區別
1.設備插入,端口那里電壓發生變化。
2.進入枚舉過程:枚舉就是從設備中讀取一些信息,了解設備類型、速度,就可以根據設備信息來從硬盤中加載合適的驅動程序到內存中運行。
具體步驟如下:
s1 端口給cpu通過中斷線發送一個硬件中斷信號,計算機就能檢測到設備插入。
s2 CPU檢測到中斷,啟動該接口的中斷處理程序,這個中斷處理程序就是讀hub的一些信息,比如設備速度類型(是高速設備還是低速設備),**HUB應該指的是電腦的USB插口 **。hub應該是在usb設備上
s3 中斷處理程序等待100ms,保證接入的設備進入電壓穩定狀態,然后發消息讓HUB進入復位狀態,持續至少10ms保證電壓穩定,等待下一步操作。
s4進行高速模式測試,看接入的設備是否支持高速模式,還是只能全速模式。(不知道如何檢測的,檢測的方式是怎么樣的)
s5 中斷處理程序不斷向HUB發送Get_Port_Status請求,查詢設備是否復位成功和狀態,設備進行回應,確認設備進入空閑狀態,就可以準備發消息了。
s6 此時通信通過控制傳輸,默認地址0,端口0(不理解這里是什么意思,控制傳輸是什么?地址是什么?端口是什么?)
s7中斷處理程序向設備發送請求獲取最大包長度
s8 中斷處理程序給設備分配一個地址(這個地址是干嘛用的?)
s9 中斷處理程序發送請求獲取設備信息,包括支持的配置個數,設備類型。設備ID等(這些內容應該是提前燒在設備中了)。
s10 中斷處理程序根據設備信息選擇最合適的驅動從硬盤中加載到內存運行。將設備以及設備信息添加到設備列表里,調用match函數查看驅動是否匹配了,以前沒問題后,控制權就交給驅動,中斷處理程序下線!
s6、s8答案:
需要說明的是:在計算機這邊,一臺設備就是接口,接口通過數個端點來通信。
總體工作過程如下:
1.客戶軟件把要傳輸的數據放入數據緩沖區。
2.上層應用調用該設備的驅動程序向usb總線驅動程序發送請求把數據拿走
3.usb主控制器驅動程序對數據進行相關處理,不然拆解、分包等
4.usb主控制器把數據分包,發到USB總線上,只要發到USB總線上,設備就能接收到了?
5.設備拿走后,調用設備內的芯片對數據進行相關處理。以下第5步中,指定端點實在計算機的接口那里還是設備中?
上面涉及到了主控制器驅動程序、主控制器,那么設備的驅動程序是指哪一個?還是其他的?
懵了,這么多東西?驅動程序是拿來干嘛的?
有一個問題:根據我的想法,電腦usb插口是不是有寄存器?,電腦跟usb的通信都通過放在那里的寄存器來運行?因為看計算機的模塊組成圖(譚玉剛的),CPU是由一些引腳到設備上的,但是我不確定插口那里有沒有寄存器,或者說寄存器在外設中,插口那里只是線路連接?但是計算機組成里又有外設編址的說法,要是那里沒有寄存器,如何來編址的說法?還有寄存器是如何工作的?
答:關于端口
我覺得,端點的情況,有多少個,每一個的特性應該會在設備描述符中發給計算機吧。
訪問外設的端口(寄存器),在8086CPU上是使用in/out指令,那是因為8086的外設是獨立編址,肯定不能跟訪問內存一樣的指令,否則不能區分訪問的是內存還是外設,
但是統一編址就不用in/out指令訪問外設了,外設已經提前分配好內存地址了。
物理地址和虛擬地址的區別
usb配置、接口和端點
所以說,電腦插口那里并沒有寄存器,只有線路連接的作用。
答:解答寄存器是如何工作的?
首先寄存器也是一個簡單的數字線路,和簡單的邏輯門是一樣的,有輸入和輸出,區別在于普通的邏輯門對于相同的輸入,只有一個輸出,但是寄存器這個線路(默認只有簡單的1位),當它保存的是0時,輸入通電后它的輸出就是0,當它保存的是1時,通電后它的輸出就是1。
那么它是如何保存0或者1呢?
我的理解如下:
注:通電即輸入為1
首先,計算機沒通電時,它保存的肯定是0。
一個1位的寄存器由一個或門、一個非門、一個與門構成。有兩個輸入,一個輸出。假設一個輸入為A,一個為B,B的功能為控制讀或寫,設定當B通電,是寫狀態,此時寫入A,后邊的線路是個回路結構,如果A是1即通電,那么后面的線路就一直通電(是個回路結構,可以保存電),如果A是0,后面的線路就沒電。當后面的線路是一直通電狀態時,就是把1保存下來了,如果要讀寄存器數據,也就是B不通電,也就是在讀的狀態,那么A通電,因為后面的線路是有電的,不論如何輸出都是1。相反,如果后面線路是沒電的,在進行讀的時候,當A通電時,因為后面的線路沒有保存電,輸出就是0.
也就是說,1或0的保存是通過電的保存來完成。所以這東西不能斷電,否則數據丟失。
還有一個要注意的是寫的時候要應該沒有輸出。
總結
以上是生活随笔為你收集整理的计算机与USB沟通方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机是如何按照时钟来顺序工作的
- 下一篇: 试图理解80836实模式转变为保护模式