日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]摘要:詳細(xì)地分析了PC/AT機(jī)系統(tǒng)的DMA(直接存儲(chǔ)器存取)控制器結(jié)構(gòu)及其傳輸方式,并給出了C語(yǔ)言編程實(shí)例。DMA是英文DiretMemorAccess的縮寫,即直接存儲(chǔ)器存取,DMA傳輸是PC機(jī)

摘要:詳細(xì)地分析了PC/AT機(jī)系統(tǒng)的DMA(直接存儲(chǔ)器存取)控制器結(jié)構(gòu)及其傳輸方式,并給出了C語(yǔ)言編程實(shí)例。

DMA是英文DiretMemorAccess的縮寫,即直接存儲(chǔ)器存取,DMA傳輸是PC機(jī)與外設(shè)

高速數(shù)據(jù)交換的重要方法,其一個(gè)典型應(yīng)用是應(yīng)用于聲卡的錄放音過(guò)程中,錄音時(shí),CPU首先設(shè)置好聲卡和DMA的傳輸參數(shù)。當(dāng)啟動(dòng)DMA數(shù)據(jù)傳輸(即開(kāi)始錄音)后,即由DMA控制器DMAC)按管PC總線進(jìn)行數(shù)據(jù)傳輸,每次傳輸結(jié)束后,DMA控制器便歸還總線控制權(quán),并申請(qǐng)CPU中斷,告之?dāng)?shù)據(jù)傳輸完畢,然后由中斷服務(wù)程序?qū)MA數(shù)據(jù)緩沖區(qū)中數(shù)據(jù)取走并準(zhǔn)備下次數(shù)據(jù)傳輸(即錄音),由于在傳輸過(guò)程中無(wú)需CPU干沙,因此在錄音期間CPU可以執(zhí)行其它程序,這樣既極大地提高了數(shù)據(jù)傳輸速度又提高了CPU的執(zhí)行效率,正是由于DMA的這些優(yōu)點(diǎn),所以目前在工業(yè)控制領(lǐng)域的數(shù)據(jù)采集過(guò)程中都大量地采用了DMA數(shù)據(jù)傳輸方法。但是,由于DMA編程的資料較少,因此DMA編程一直是硬件編程方面的一個(gè)難點(diǎn),本文將以C語(yǔ)言為例詳細(xì)介紹DMA編程方法。

1、PC/AT的DMA系統(tǒng)特點(diǎn)

PC/AT使用兩片8237A-5芯片組成級(jí)連結(jié)構(gòu),每片8237A-5芯片內(nèi)部有4個(gè)獨(dú)立的通道,分別以通道O-通道7表示。但由于通道4被用作第0片和第1片的級(jí)連,因此PC/AT系統(tǒng)-一共能提供7個(gè)通道的DMA數(shù)據(jù)傳輸,在這7個(gè)通道中,除通道2作為軟盤DMA傳輸服務(wù),通道0留給SDIC通信透配器外,其余通道0,1,3,5.6和7均留作擴(kuò)充使用,在這7個(gè)DMA通道中,通道0~3按8位數(shù)據(jù)最大傳輸64KB設(shè)計(jì);面通道5-7按16位數(shù)據(jù)最大傳輸64K字(128KB)設(shè)計(jì),它們都支持尋址16MB空間的能力。

2、DMA通道地址產(chǎn)生方式

8237A-5只能管理16位地址(AI5-A0),但為了尋址PC/AT機(jī)的24位地址空間尋址,在DMA系統(tǒng)中將PCAT機(jī)的16M空間分為多個(gè)物理頁(yè)面,從面保證了在DMA周期內(nèi)只需16位地址尋址,因此DMA系統(tǒng)中為每個(gè)通道設(shè)置了一個(gè)DMA頁(yè)面寄存器,用以存放此物理頁(yè)面號(hào)。

對(duì)于8位傳輸通道0~3,由于芯片的地址使用字節(jié)邊界,即A15-A0為16位長(zhǎng)的字節(jié)地址,因此每頁(yè)64KB,而對(duì)于16位傳輸通道5-7,由于芯片的地址使用字邊界,即A16-AI(A0固定為0)為16位長(zhǎng)的字地址,因此每頁(yè)可達(dá)128KB,計(jì)算地址偏移和計(jì)數(shù)個(gè)數(shù)時(shí)尤其應(yīng)該性意兩者區(qū)別,對(duì)于DOS管理下的1M常規(guī)內(nèi)存,頁(yè)面分布圖1所示:

從DMA通道地址產(chǎn)生方式,我們可以看出DMA控制器僅能在-個(gè)物理頁(yè)面內(nèi)傳輸數(shù)據(jù),因此當(dāng)數(shù)據(jù)跨頁(yè)面存放時(shí),我們必須分多次對(duì)其進(jìn)行數(shù)據(jù)傳輸,從面保證每次傳輸時(shí)數(shù)據(jù)都在同一頁(yè)面內(nèi)。

 


3、DMAI/O地址

DMA控制器(DMAC)共有16個(gè)端口地址和4個(gè)頁(yè)面寄存器地址,共分為兩大類:控制DMA狀態(tài)及設(shè)置數(shù)據(jù)地址。

在設(shè)置DMA傳輸數(shù)據(jù)時(shí),要用到3個(gè)端口,分別是:頁(yè)面寄存器,地址(偏移)寄存器和數(shù)據(jù)計(jì)數(shù)器,表1給出了每個(gè)通道及其相應(yīng)1/O口地址。

 


在控制DMAC的狀態(tài)時(shí),要用到另外3個(gè)端口,分別是:方式寄存器,屏蔽寄存器和清除寄存器。

(1)方式寄存器(地址為0Bh或D6h,分別為8位通道和16位通道地址)

此方式寄存器用于設(shè)置DMA的數(shù)據(jù)傳輸方式,其控制字格式如圖2所示。

 


例如:我們經(jīng)常用到的兩個(gè)方式字為(假定選DMA通道1):

45h:DMA寫(即內(nèi)存一1/0卡)

49h:DMA讀(即1/0卡一內(nèi)存)

(2)屏戴寄存器(地址為0Ah或D4h,分別為8位通道和16位通道地址)

此屏蔽寄存器用于使某個(gè)DMA通道屏蔽或開(kāi)放DMA請(qǐng)求,其控制字格式如圖3所示。

 


(3)清除寄存器(地址為0Qh或D8h,分別為8位通道和16位通道地址)

當(dāng)輸出0到此端口時(shí),將停止由屏蔽寄存器(地址為0Ah或D4h)所選定的DMA通道所有正在進(jìn)行的過(guò)程。DMA編程

4、DMA編程

通常,對(duì)某個(gè)DMA通道編程的步驟如下:

(1)保存原有中斷向量,設(shè)置新中斷向量,編寫中斷服務(wù)程序,其主要內(nèi)容為下一次DMA傳輸編程,輸出EO(中斷結(jié)束)至中斷控制器;或者是直接轉(zhuǎn)出(當(dāng)不需再次DMA傳輸時(shí));

(2)DMAC初始化,包括設(shè)置方式控制字,屏數(shù)控制字及本次傳輸數(shù)據(jù)的頁(yè)面號(hào),,頁(yè)面地址偏移及傳輸數(shù)據(jù)個(gè)數(shù),必須特別注意的是DMAC的數(shù)據(jù)計(jì)數(shù)器比要傳輸?shù)膶?shí)際個(gè)數(shù)要少1;

(3)開(kāi)放該通道允許DMA中斷請(qǐng)求;

計(jì)數(shù)等,為考慮通用性,使用了目前普遍使用

(4)在程序結(jié)束時(shí)恢復(fù)中斷向量。

筆者已編制了一個(gè)對(duì)DMA進(jìn)行編控制的的TurboC2.0編程,程序也可以不加修改地使程序,此程序包括幾個(gè)有關(guān)DMAC編程的通用用于BorlandC++系統(tǒng)中,程序中假設(shè)I/0卡函數(shù),如DMAC控制塊參數(shù)的獲得,中斷向量產(chǎn)生的硬件中斷號(hào)是DREQ5,使用DMA通道及恢復(fù)設(shè)置,DMAC初始化,暫停DMA傳輸通道號(hào)1,讀者在應(yīng)用過(guò)程中應(yīng)根據(jù)實(shí)際I/O卡提繼續(xù)DMA傳輸,終止DMA傳輸,讀取已傳輸供的硬件中斷號(hào)及DMA通道號(hào)作相應(yīng)修改。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

在電子電路設(shè)計(jì)中,確保電源的穩(wěn)定和安全至關(guān)重要。LTC4365 作為一款出色的過(guò)壓(OV)、欠壓(UV)以及反向極性故障保護(hù)控制器,在眾多領(lǐng)域得到了廣泛應(yīng)用。其能夠?yàn)殡娫摧斎腚妷嚎赡艹霈F(xiàn)過(guò)高、過(guò)低甚至負(fù)值的應(yīng)用場(chǎng)景提供可...

關(guān)鍵字: 控制器 柵極 輸出電壓

ZCC3790 作為一款同步 4 開(kāi)關(guān)升降壓電壓 / 電流調(diào)節(jié)器控制器,展現(xiàn)出了強(qiáng)大的性能。它能夠在輸入電壓高于、低于或等于輸出電壓的復(fù)雜情況下,精準(zhǔn)地調(diào)節(jié)輸出電壓、輸出電流或輸入電流。其恒定頻率、電流模式架構(gòu)賦予了它靈...

關(guān)鍵字: 升降壓 控制器 寬電壓

2025年8月12日 – 專注于引入新品的全球電子元器件和工業(yè)自動(dòng)化產(chǎn)品授權(quán)代理商貿(mào)澤電子(Mouser Electronics) 是Phoenix Contact解決方案的全球授權(quán)代理商。貿(mào)澤供應(yīng)超過(guò)93,000種可訂...

關(guān)鍵字: 樓宇自動(dòng)化 控制器 連接器

在之前的文章“為機(jī)器人技術(shù)的未來(lái)發(fā)展筑牢安全防線:網(wǎng)絡(luò)安全的作用”中,我們?nèi)娼榻B了機(jī)器人控制系統(tǒng)面臨的安全挑戰(zhàn)。文章強(qiáng)調(diào)了遵守機(jī)器人行業(yè)安全標(biāo)準(zhǔn)的重要性,并探索了加強(qiáng)機(jī)器人控制系統(tǒng)保護(hù)所需的基本安全能力。此外,我們還展...

關(guān)鍵字: 機(jī)器人 PLC 控制器

工業(yè)4.0的核心是工廠自動(dòng)化,工業(yè)機(jī)器人、自主移動(dòng)機(jī)器人(AMR)和協(xié)作機(jī)器人對(duì)于實(shí)現(xiàn)現(xiàn)代工業(yè)4.0至關(guān)重要。機(jī)器人正日益智能化,協(xié)作能力不斷增強(qiáng),能夠在有人或無(wú)人干預(yù)的情況下高效完成復(fù)雜任務(wù)。隨著自動(dòng)化程度和機(jī)器人使用...

關(guān)鍵字: 機(jī)器人 工業(yè)4.0 控制器

全新 I/O 解決方案賦予制造商更大的設(shè)計(jì)自由度,打造更智能、更具適應(yīng)性更的設(shè)備

關(guān)鍵字: 控制器 I/O 系統(tǒng)

【2025年7月24日, 德國(guó)慕尼黑訊】全球功率系統(tǒng)和物聯(lián)網(wǎng)領(lǐng)域的半導(dǎo)體領(lǐng)導(dǎo)者英飛凌科技股份公司(FSE代碼:IFX / OTCQX代碼:IFNNY)近日推出新型英飛凌ID Key系列,進(jìn)一步擴(kuò)展其通用串行總線(USB)...

關(guān)鍵字: 控制器 USB 非易失性存儲(chǔ)器

挑戰(zhàn)賽鼓勵(lì)參與者利用 WL-ICLED 技術(shù)展示創(chuàng)意

關(guān)鍵字: LED 控制器

鏈表作為一種基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu),在程序設(shè)計(jì)中扮演著重要角色。掌握鏈表的高效操作技巧,特別是逆序、合并和循環(huán)檢測(cè),對(duì)于提升算法性能和解決復(fù)雜問(wèn)題至關(guān)重要。本文將詳細(xì)介紹這些操作的C語(yǔ)言實(shí)現(xiàn),并分析其時(shí)間復(fù)雜度。

關(guān)鍵字: 鏈表 C語(yǔ)言

在C/C++多文件編程中,靜態(tài)變量(static)與全局變量的作用域規(guī)則看似簡(jiǎn)單,實(shí)則暗藏諸多陷阱。開(kāi)發(fā)者若未能準(zhǔn)確理解其鏈接屬性與生命周期,極易引發(fā)難以調(diào)試的內(nèi)存錯(cuò)誤、競(jìng)態(tài)條件以及維護(hù)災(zāi)難。本文將深入剖析這兩類變量的作...

關(guān)鍵字: 靜態(tài)變量 全局變量 C語(yǔ)言
關(guān)閉