能不能說人話之中斷與DMA(1)

2021-10-05 17:57:40 字數 1301 閱讀 3758

教科書上有的我就不說了

主要寫這個是為了解釋清楚一些東西,讓後來人學習起來也比較好明白。

紀念我曾經剛剛及格的微機原理。

內容如果有錯誤,也請大家慷慨指正,不吝賜教。

中斷:中斷是cpu接收到的乙個訊號,那麼外部裝置不可能就乙個裝置,只用一根線就行了。如果有很多裝置,怎麼同時發給cpu?並且如何區分?這個就是你要定乙個列表,用不同的號來表示裝置。一般電腦上是1-32號,就這麼多。其中有很多號都被系統本身的裝置占用了,比如時鐘,每分每秒都要發中斷給cpu。還有硬碟什麼的,具體這個表就是硬體irq表。其中還有很多空餘的,那麼就可以把你的裝置連上這個號,用這個中斷。

那麼這是邏輯上你要用這個號。你的裝置要引出一根線去連線cpu,但cpu上設計成只使用一根線,叫intr線來接收所有訊號,那怎麼辦?所有這些線其實是先連線到8259控制器。8259控制器不管叫什麼,就是乙個集線器,8入1出,把所有訊號整合了之後只要有乙個發了中斷訊號,那麼他的輸出就發乙個中斷訊號通知給cpu。然後cpu再去問8259,是誰發給我的,再來獲取發中斷訊號的裝置的編號。

古董電腦是用級聯8259,兩個8259,可以有產生7加8一共十五個訊號線。預留的32個號物理上只用了15個。

好了,那麼中斷是什麼東西?就是乙個通知機制。發個訊號給cpu,這裡面不涉及資料傳輸的。不知道書上為何一直說中斷傳輸,還說耗cpu?

軟體上,涉及中斷的是驅動程式開發。常用操作叫掛中斷,把乙個函式掛到中斷上。這樣當這個中斷對應的裝置發出中斷後,就會呼叫我們指定的函式。在函式裡面進行裝置的實際操作。

1。終端號由誰指定?

由bios分配,寫驅動的時候,你只能被動去詢問。怎麼詢問?wdm驅動開發原理,中斷號,裝置資源的一種。translatedresources裡頭。linux下直接讀配置空間,有個偏移裡面寫著呢,是bios寫進去的。

2。cpu怎麼向8259詢問發中斷的裝置號?

通過埠操作。port操作,讀埠,寫埠,然後就出來了。這裡必須學點彙編才行。再具體就去找現成**或查intel主板晶元組的晶元資料(開放的隨便下)。

3。多裝置同時中斷怎麼辦?

8259用乙個位元組的八個位表示中斷狀態,0是沒中斷,1是中斷了。如果是多個1,那麼就是多個裝置同時中斷了。系統裡面是分別呼叫對應的處理函式,呼叫過的對應位清零就行了。

4。實際操作是什麼?

讀寫暫存器,就是對一塊記憶體讀寫。但是這塊記憶體的讀寫,會被硬體解釋成裝置訊號,發往裝置。一般的記憶體讀寫則會解釋成記憶體操作的訊號,發往記憶體。

具體呢?cpu發給晶元組中的晶元,那些晶元決定的。現在這些晶元物理上整合到了cpu內部中,邏輯上還是在cpu外部。

dma:

這個就先解釋pci裝置,記憶體,和裝置資源了。

不能說的hidden

不能說的hidden 時光跑跑。路在腳下。晨光依在。vashon 1.所謂 時尚 本質上就是自己看不見自己的樣子。好比我們在地球上,卻感覺不到地球在動。2.但真正令人恐慌的是,流行一時的不僅有衣服,還有道德觀念。明明是專橫武斷,毫無依據的錯誤觀點,但是大多數人卻深信不疑,受到影響而不自知。這是非常危...

NDA iphone 不能說的秘密

nda has been lifted.so many many resource can be founded.the love with internet.with blog with open source.so many thanks.merry chirstmas my friends!蘋...

只能談情 不能說愛

喜歡上一樣東西,便很難把它從我心裡趕走,很難說服自己不去想它。為一本 只能談情 不能說愛 咱想盡辦法。和j偶然聊起 的時候知道了這本書,然後就在網上瘋狂找尋,得到的只是最起始的幾章。於是,繼續追尋.先是在某個下著雨週末去把光谷書城和街道口新華書店處翻了兩遍,不甘心的我回來就再從網上想辦法。上 吧,讓...