真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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ū)動程序)當(dāng)中,通過不斷地檢測I/O設(shè)備的當(dāng)前狀態(tài),來控制一個I/O操作的完成。具體來說,在進行I/O操作之前,要循環(huán)地去檢測該設(shè)備是否已經(jīng)就緒。如果是,就向控制器發(fā)出一條命令,啟動這一次的I/O操作。然后,在這個操作的進行過程中,也要循環(huán)地去檢測設(shè)備的當(dāng)前狀態(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ū)當(dāng)中,并用指針p來指向它們。status_ reg 這個內(nèi)存單元對應(yīng)于打印機控制器里面的狀態(tài)寄存器, data register這個內(nèi)存單元對應(yīng)于它的數(shù)據(jù)寄存器,現(xiàn)在要做的事情,就是把這八個字符一個接一個地放到數(shù)據(jù)寄存器當(dāng)中。

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

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

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

當(dāng)打印機完成一個字符后,將向CPU發(fā)出一個中斷。在中斷處理程序當(dāng)中,首先判斷一下,如果所有的字符都已打印完,那么就去阻塞隊列中,把用戶任務(wù)喚醒,使它處于就緒狀態(tài);如果還有字符需要打印,就直接把下一個字符復(fù)制到打印機的數(shù)據(jù)寄存器當(dāng)中,啟動打印操作,而不需要再去循環(huán)地判斷打印機是否就緒。接下來是一些后繼處理,先向中斷控制器發(fā)出一個確認(rèn)信號,然后結(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 當(dāng)中,然后調(diào)用系統(tǒng)函數(shù)print。在print函數(shù)當(dāng)中,首先也是把buffer 當(dāng)中的字符串復(fù)制到系統(tǒng)內(nèi)核的緩沖區(qū)p當(dāng)中,然后對DMA控制器進行編程,設(shè)置它的各個寄存器的內(nèi)容,包括內(nèi)存起始地址、需要打印的字符個數(shù)、數(shù)據(jù)傳輸?shù)姆较虻取V?,print 函數(shù)就完成了任務(wù),所以就調(diào)用系統(tǒng)的調(diào)度程序,

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

采用DMA控制方式,較大的優(yōu)點是減少了中斷的次數(shù)。原本每打印一個字符,都要產(chǎn)生一次中斷,而現(xiàn)在當(dāng)所有的字符都打印完后,才會產(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)注!


網(wǎng)站標(biāo)題:UART中斷和DMA中斷的區(qū)別有哪些-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://weahome.cn/article/shgie.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部