久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

UART中斷和DMA中斷的區(qū)別有哪些-創(chuàng)新互聯(lián)

這篇文章主要講解了“UART中斷和DMA中斷的區(qū)別有哪些”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“UART中斷和DMA中斷的區(qū)別有哪些”吧!

專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、成都做網(wǎng)站服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)尚志免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了1000+企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。

單片機I/O設(shè)備的控制方式主要有三種:程序循環(huán)檢測、中斷驅(qū)動和直接內(nèi)存訪問。

1、程序循環(huán)檢測方式

程序循環(huán)檢測方式的基本思路是:在程序(一般是設(shè)備驅(qū)動程序)當中,通過不斷地檢測I/O設(shè)備的當前狀態(tài),來控制一個I/O操作的完成。具體來說,在進行I/O操作之前,要循環(huán)地去檢測該設(shè)備是否已經(jīng)就緒。如果是,就向控制器發(fā)出一條命令,啟動這一次的I/O操作。然后,在這個操作的進行過程中,也要循環(huán)地去檢測設(shè)備的當前狀態(tài),看它是否已經(jīng)完成。總之,在I/O操作的整個過程中,控制I/O設(shè)備的所有工作都是由CPU來完成的。這種方式也稱為是繁忙等待方式或輪詢方式。它的缺點主要是:在進行一個I/O操作的時候,要一直占用著CPU,這樣就會浪費CPU的時間。

假設(shè)I/O地址采用的是內(nèi)存映像編址方式,現(xiàn)在需要在打印機上打印一個字符串“ABCDEFGH”。對于操作系統(tǒng)來說,要完成這個任務(wù),其實很簡單,只要把這八個字符一個接一個地送到打印機設(shè)備的I/O端口地址就可以了。如圖(a)所示,這八個字符被保存在系統(tǒng)內(nèi)核的一個緩沖區(qū)當中,并用指針p來指向它們。status_ reg 這個內(nèi)存單元對應(yīng)于打印機控制器里面的狀態(tài)寄存器, data register這個內(nèi)存單元對應(yīng)于它的數(shù)據(jù)寄存器,現(xiàn)在要做的事情,就是把這八個字符一個接一個地放到數(shù)據(jù)寄存器當中。

它的基本思路是:逐個去打印每一個字符。在打印一個字符之前,首先用一個while語句來檢測打印機的當前狀態(tài),看它是否已經(jīng)就緒,如果還沒有就緒,就在這里循環(huán)等待;如果已經(jīng)就緒,就把當前的字符送入到打印機的數(shù)據(jù)寄存器當中。在本例中,由于采用了內(nèi)存映像的編址方式,因此,在程序員眼中,狀態(tài)寄存器和數(shù)據(jù)寄存器都被看成是普通的內(nèi)存單元,對它們的訪問也是普通的賦值操作,不需要專門的I/O指令。但是這個賦值操作的功能與普通的賦值操作不同,它相當于是給打印機發(fā)出了一個命令,讓它去打印一個字符。另外,每次打印完-一個字符后,都要重新判斷設(shè)備是否就緒,因為相對于CPU來說,打印機是一個慢速設(shè)備,它在執(zhí)行打印命令時,不可能像CPU那么快,而是需要一定的時間來完成。因此,當CPU把一個字符交給它之后,必須循環(huán)等待一段時間, 才能去處理下一一個字符。

2、中斷驅(qū)動方式

循環(huán)檢測的控制方式,需要占用大量的CPU時間。假設(shè)打印機的打印速度為100字符/秒,在循環(huán)檢測方式下,當一個字符被寫入到打印機的數(shù)據(jù)寄存器后,CPU要等待10ms才能把下一個字符寫進去,而這10ms的時間,就在循環(huán)等待中被白白浪費掉了。為了解決這個問題,一種辦法就是讓CPU在這10ms的時間內(nèi),先去運行其他的任務(wù),然后等打印機處理完上一個字符后,CPU再接著處理下一個字符。這種方法被稱為是中斷驅(qū)動的控制方式。它的基本思路是:當一個用戶任務(wù)需要進行I/O操作時,會去調(diào)用相應(yīng)的系統(tǒng)函數(shù),由這個函數(shù)來發(fā)起I/O操作,并將當前任務(wù)阻塞起來,然后調(diào)度其他的任務(wù)去使用CPU。當所需的I/O操作完成時,相應(yīng)的設(shè)備就會向CPU發(fā)出一個中斷,系統(tǒng)在中斷處理程序當中,如果發(fā)現(xiàn)還有數(shù)據(jù)需要處理,就再次啟動I/O 操作。在中斷驅(qū)動的控制方式下,數(shù)據(jù)的每一次讀寫還是通過CPU來完成,只不過當I/O設(shè)備在進行數(shù)據(jù)處理時,CPU不必在那里等待,而是可以去執(zhí)行其他任務(wù)。

仍以打印字符的問題為例。如下圖所示,在中斷驅(qū)動方式下,對于用戶程序來說,它所做的事情可能是:把需要打印的字符串放到一個緩沖區(qū)buffer中,然后調(diào)用一個系統(tǒng)調(diào)用函數(shù)print。在print 系統(tǒng)調(diào)用中,首先把用戶緩沖區(qū)中的字符串復(fù)制到系統(tǒng)內(nèi)核的字符數(shù)組p當中,然后打開中斷。接下來是一個循環(huán)檢測語句,判斷打印機的當前狀態(tài)是否就緒,當打印機就緒后,就把第一個字符放到數(shù)據(jù)寄存器里面去打印。接下來,未等該字符打印完,就去調(diào)用系統(tǒng)的調(diào)度器,選擇另一個就緒任務(wù)去運行,而當前的這個任務(wù),就會被阻塞起來。

當打印機完成一個字符后,將向CPU發(fā)出一個中斷。在中斷處理程序當中,首先判斷一下,如果所有的字符都已打印完,那么就去阻塞隊列中,把用戶任務(wù)喚醒,使它處于就緒狀態(tài);如果還有字符需要打印,就直接把下一個字符復(fù)制到打印機的數(shù)據(jù)寄存器當中,啟動打印操作,而不需要再去循環(huán)地判斷打印機是否就緒。接下來是一些后繼處理,先向中斷控制器發(fā)出一個確認信號,然后結(jié)束中斷處理程序,返回到被中斷的那個任務(wù)。

3、直接內(nèi)存訪問方式

在中斷驅(qū)動的控制方式下,每一次數(shù)據(jù)讀寫還是通過CPU來完成,而且每一次處理的數(shù)據(jù)量很少,如1個字節(jié),所以中斷出現(xiàn)的頻率就很高。而中斷處理需要額外的系統(tǒng)開銷,所以也會浪費一些CPU時間。因此人們又提出了一種新的解決辦法,也就是直接內(nèi)存訪問(Direct Memory Access, DMA)的控制方式。它的基本思路是:讓DMA控制器來代替CPU,完成I/O設(shè)備與內(nèi)存之間的數(shù)據(jù)傳送,從而空出更多的CPU時間,去運行其他的任務(wù)。

仍以打印字符的問題為例。如下圖所示,在DMA控制方式下,用戶程序所做的事情是完全相同的,即把字符串復(fù)制到一個緩沖區(qū)buffer 當中,然后調(diào)用系統(tǒng)函數(shù)print。在print函數(shù)當中,首先也是把buffer 當中的字符串復(fù)制到系統(tǒng)內(nèi)核的緩沖區(qū)p當中,然后對DMA控制器進行編程,設(shè)置它的各個寄存器的內(nèi)容,包括內(nèi)存起始地址、需要打印的字符個數(shù)、數(shù)據(jù)傳輸?shù)姆较虻?。之后,print 函數(shù)就完成了任務(wù),所以就調(diào)用系統(tǒng)的調(diào)度程序,

選擇另一個就緒任務(wù)去運行,而當前的這個任務(wù)就會被阻塞起來。接下來,當CPU正在執(zhí)行這個新任務(wù)的同時,DMA控制器會與設(shè)備控制器進行交互,把需要打印的字符,一個接一個地送到打印機控制器當中。在所有的字符都打印完之后,就向CPU發(fā)出一個中斷,表明這一次的I/O操作已經(jīng)全部完成了。因此,在中斷處理程序里面,已經(jīng)沒有什么實質(zhì)性的工作,先是向中斷控制器發(fā)出一個確認信號,然后喚醒剛才被阻塞的任務(wù)。

采用DMA控制方式,較大的優(yōu)點是減少了中斷的次數(shù)。原本每打印一個字符,都要產(chǎn)生一次中斷,而現(xiàn)在當所有的字符都打印完后,才會產(chǎn)生一個中斷,這樣就減少了中斷處理的開銷。

感謝各位的閱讀,以上就是“UART中斷和DMA中斷的區(qū)別有哪些”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對UART中斷和DMA中斷的區(qū)別有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

分享題目:UART中斷和DMA中斷的區(qū)別有哪些-創(chuàng)新互聯(lián)
當前路徑:http://sd-ha.com/article4/shgie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、定制開發(fā)、響應(yīng)式網(wǎng)站、標簽優(yōu)化、網(wǎng)站建設(shè)、域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化