欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于dma的數(shù)據(jù)傳輸方法

文檔序號:6502138閱讀:449來源:國知局
基于dma的數(shù)據(jù)傳輸方法
【專利摘要】本發(fā)明公開了一種基于DMA的數(shù)據(jù)傳輸方法,包括如下步驟:a)初始化外部設備,并為每個外部設備設置DMA操作緩沖區(qū)后開啟DMA控制器;b)所述每個外部設備通過DMA控制器將數(shù)據(jù)傳送到各自的DMA操作緩沖區(qū);c)應用程序采用定期輪詢方式獲取各個外部設備對應DMA操作緩沖區(qū)中的數(shù)據(jù)。本發(fā)明提供的基于DMA的數(shù)據(jù)傳輸方法,完全由外部設備自動判斷是否進行DMA傳輸,CPU僅需要查詢是否有可用數(shù)據(jù)即可,從而避免了傳統(tǒng)DMA數(shù)據(jù)傳輸過程中由于頻繁的交互導致性能下降的現(xiàn)象,避免了中斷交互造成的效率低下,提高了數(shù)據(jù)傳輸效率和性能。
【專利說明】基于DMA的數(shù)據(jù)傳輸方法

【技術領域】
[0001] 本發(fā)明涉及一種數(shù)據(jù)傳輸方法,尤其涉及一種基于DMA的數(shù)據(jù)傳輸方法。

【背景技術】
[0002] DMA (Direct Memory Access,直接內(nèi)存存取)是所有現(xiàn)代電腦的重要特色,它允許 不同速度的硬件裝置來溝通,而不需要依于CPU的大量中斷負載。
[0003] DMA傳輸將數(shù)據(jù)從一個地址空間復制到另外一個地址空間。當CPU初始化這個傳 輸動作時,傳輸動作本身是由DMA控制器來實行和完成。典型的例子就是移動一個外部內(nèi) 存的區(qū)塊到芯片內(nèi)部更快的內(nèi)存區(qū),像是這樣的操作并沒有讓處理器工作拖延,反而可以 被重新調度去處理其他的工作。
[0004] 在實現(xiàn)DMA傳輸時,是由DMA控制器直接掌管總線,因此,存在著一個總線控制權 轉移問題。即DMA傳輸前,CPU要把總線控制權交給DMA控制器,而在結束DMA傳輸后,DMA 控制器應立即把總線控制權再交回給CPU。
[0005] 傳統(tǒng)的DMA數(shù)據(jù)傳輸必須經(jīng)過如下4個步驟:DMA請求:CPU對DMA控制器初始化, 并向I/O接口發(fā)出操作命令,I/O接口提出DMA請求;DMA響應:DMA控制器對DMA請求判 別優(yōu)先級及屏蔽,向總線裁決邏輯提出總線請求;DMA傳輸:DMA控制器獲得總線控制權后, CPU即刻掛起或只執(zhí)行內(nèi)部操作,由DMA控制器輸出讀寫命令,直接控制RAM與I/O接口進 行DMA傳輸;DMA結束。當完成規(guī)定的成批數(shù)據(jù)傳送后,DMA控制器即釋放總線控制權,并向 I/O接口發(fā)出結束信號。
[0006] 現(xiàn)有CPU通過DMA發(fā)送數(shù)據(jù)過程如圖1所示,接收數(shù)據(jù)過程如圖2所示。雖然數(shù) 據(jù)傳輸過程中,CPU可以被解放出來去做其他的事情,但是整個交互過程還是涉及到CPU中 斷,DMA請求交互。對于大量數(shù)據(jù)傳輸,需要高的數(shù)據(jù)傳輸效率,而中斷和交互就是性能的 瓶頸。


【發(fā)明內(nèi)容】

[0007] 本發(fā)明所要解決的技術問題是提供一種基于DMA的數(shù)據(jù)傳輸方法,能夠大大降低 中斷交互造成的效率低下,避免傳統(tǒng)DMA數(shù)據(jù)傳輸過程中由于頻繁的交互導致性能下降的 現(xiàn)象。
[0008] 本發(fā)明為解決上述技術問題而采用的技術方案是提供一種基于DMA的數(shù)據(jù)傳輸 方法,包括如下步驟:a)初始化外部設備,并為每個外部設備設置DMA操作緩沖區(qū)后開啟 DMA控制器;b)所述每個外部設備通過DMA控制器將數(shù)據(jù)傳送到各自的DMA操作緩沖區(qū);c) 應用程序采用定期輪詢方式獲取各個外部設備對應DMA操作緩沖區(qū)中的數(shù)據(jù)。
[0009] 上述的基于DMA的數(shù)據(jù)傳輸方法,其中,所述步驟a)中設置DMA操作緩沖區(qū)包括 設置存放數(shù)據(jù)的物理內(nèi)存起始地址、數(shù)據(jù)緩沖區(qū)長度以及指示當前數(shù)據(jù)存儲位置相對起始 地址的地址偏移值。
[0010] 上述的基于DMA的數(shù)據(jù)傳輸方法,其中,所述外部設備在DMA操作緩沖區(qū)寫入數(shù)據(jù) 完成后再更新地址偏移值,所述應用程序預先存儲各個外部設備DMA操作緩沖區(qū)的地址偏 移值,并在定期輪詢時根據(jù)地址偏移值的變化判斷是否有可用數(shù)據(jù)。
[0011] 上述的基于DMA的數(shù)據(jù)傳輸方法,其中,所述DMA操作緩沖區(qū)為環(huán)形數(shù)據(jù)緩沖區(qū), 當數(shù)據(jù)寫入地址到達環(huán)形數(shù)據(jù)緩沖區(qū)邊界時,若無剩余數(shù)據(jù),則設置地址偏移值為〇,若有 剩余數(shù)據(jù),則所述剩余數(shù)據(jù)開始從頭寫入,并設置地址偏移值為剩余數(shù)據(jù)的長度。
[0012] 上述的基于DMA的數(shù)據(jù)傳輸方法,其中,所述步驟b)的具體過程如下:blO)所述 外部設備緩沖區(qū)中有待寫數(shù)據(jù)時,根據(jù)配置信息獲取物理內(nèi)存起始地址以及當前偏移地址 值,并計算出待寫數(shù)據(jù)地址;b20)判斷待寫數(shù)據(jù)是否能完全寫入,若是,根據(jù)所述待寫地址 將所述待寫數(shù)據(jù)寫入所述DMA操作緩沖區(qū),當前偏移地址值增加待寫數(shù)據(jù)的長度,并且如 果新的當前偏移地址值等于所述數(shù)據(jù)緩沖區(qū)的長度,將當前偏移地址值設置為〇 ;若否,根 據(jù)所述待寫地址將所述待寫數(shù)據(jù)寫入并將所述剩余數(shù)據(jù)開始從頭寫入DMA操作緩沖區(qū),并 設置地址偏移值為剩余數(shù)據(jù)的長度。
[0013] 上述的基于DMA的數(shù)據(jù)傳輸方法,其中,所述步驟b20)中每次寫入所述DMA操作 緩沖區(qū)后,根據(jù)新的當前偏移地址值以及物理內(nèi)存起始地址計算出下次待寫入數(shù)據(jù)地址并 保存于配置信息中;所述步驟blO)中的待寫數(shù)據(jù)地址為上次寫入數(shù)據(jù)時更新保存于配置 信息中的數(shù)據(jù)地址。
[0014] 上述的基于DMA的數(shù)據(jù)傳輸方法,其中,所述步驟c)具體為:應用程序定期輪詢 時,若發(fā)現(xiàn)該外部設備對應的DMA操作緩沖區(qū)地址偏移值和預存的地址偏移值不同,則獲 取所述預存地址偏移值處的數(shù)據(jù)并將所述預存地址偏移值更新為DMA操作緩沖區(qū)的地址 偏移值。
[0015] 上述的基于DMA的數(shù)據(jù)傳輸方法,其中,所述外部設備與應用程序之間傳輸定長 數(shù)據(jù),定長數(shù)據(jù)的長度為L,所述數(shù)據(jù)緩沖區(qū)的長度為定長數(shù)據(jù)的長度的整數(shù)倍,所述步驟 b20)為根據(jù)所述待寫地址將所述定長數(shù)據(jù)寫入所述DMA操作緩沖區(qū),當前偏移地址值增加 L〇
[0016] 上述的基于DMA的數(shù)據(jù)傳輸方法,其中,所述外部設備和應用程序之間傳輸變長 數(shù)據(jù),所述變長數(shù)據(jù)包括數(shù)據(jù)字頭和數(shù)據(jù)內(nèi)容,所述數(shù)據(jù)字頭包括數(shù)據(jù)總長度和位置格式 配置信息,所述步驟b20)為根據(jù)所述待寫地址將所述變長數(shù)據(jù)寫入所述DMA操作緩沖區(qū), 當前偏移地址值增加所述變長數(shù)據(jù)的總長度。
[0017] 上述的基于DMA的數(shù)據(jù)傳輸方法,其中,所述應用程序獲取所述預存地址偏移值 處的變長數(shù)據(jù)后根據(jù)數(shù)據(jù)字頭中的位置格式配置信息解析變長數(shù)據(jù)的內(nèi)容。
[0018] 為了解決上述問題,本發(fā)明還提供了一種基于DMA的數(shù)據(jù)傳輸方法,包括如下步 驟:d)初始化外部設備,并為每個外部設備設置DMA操作緩沖區(qū)后開啟DMA控制器,所述設 置DMA操作緩沖區(qū)包括設置存放數(shù)據(jù)的物理內(nèi)存起始地址、數(shù)據(jù)緩沖區(qū)長度以及指示當前 數(shù)據(jù)存儲位置相對起始地址的地址偏移值;e)將應用程序中的數(shù)據(jù)傳送到待寫入數(shù)據(jù)的外 部設備DMA操作緩沖區(qū);f)所述外部設備定期輪詢所述對應的DMA操作緩沖區(qū)的地址偏移 值,如果新獲取的地址偏移值與預存的地址偏移值不同,則所述外部設備通過所述DMA控 制器獲取所述DMA操作緩沖區(qū)中的數(shù)據(jù)。
[0019] 為了解決上述問題,本發(fā)明還提供了一種基于DMA的數(shù)據(jù)傳輸方法,包括如下步 驟:g)初始化外部設備,并為每個外部設備設置DMA操作緩沖區(qū)后開啟DMA控制器,所述設 置DMA操作緩沖區(qū)包括設置存放數(shù)據(jù)的物理內(nèi)存起始地址、數(shù)據(jù)緩沖區(qū)長度以及指示當前 數(shù)據(jù)存儲位置相對起始地址的地址偏移值;h)將應用程序中的數(shù)據(jù)傳送到待寫入數(shù)據(jù)的外 部設備DMA操作緩沖區(qū),并發(fā)送指令至所述待寫入數(shù)據(jù)的外部設備中的寄存器;i)所述外 部設備被所述寄存器觸發(fā)之后,通過DMA控制器獲取所述DMA操作緩沖區(qū)中的數(shù)據(jù)。
[0020] 本發(fā)明對比現(xiàn)有技術有如下的有益效果:本發(fā)明提供的基于DMA的數(shù)據(jù)傳輸方 法,完全由外部設備自動判斷是否進行DMA傳輸,CPU僅需要查詢是否有可用數(shù)據(jù)即可,從 而避免了傳統(tǒng)DMA數(shù)據(jù)傳輸過程中由于頻繁的交互導致性能下降的現(xiàn)象,避免了中斷交互 造成的效率低下,提高了數(shù)據(jù)傳輸效率和性能。

【專利附圖】

【附圖說明】
[0021] 圖1為現(xiàn)有CPU通過DMA發(fā)送數(shù)據(jù)流程示意圖;
[0022] 圖2為現(xiàn)有CPU通過DMA接收數(shù)據(jù)流程示意圖;
[0023] 圖3為本發(fā)明基于DMA的數(shù)據(jù)傳輸流程示意圖;
[0024] 圖4為本發(fā)明實施例中基于DMA的定長數(shù)據(jù)交互示意圖;
[0025] 圖5為本發(fā)明實施例中基于DMA的定長數(shù)據(jù)發(fā)送的流程示意圖;
[0026] 圖6為本發(fā)明實施例中基于DMA的定長數(shù)據(jù)接收的流程示意圖;
[0027] 圖7為本發(fā)明實施例中基于DMA的變長數(shù)據(jù)交互示意圖。

【具體實施方式】
[0028] 下面結合附圖和實施例對本發(fā)明作進一步的描述。
[0029] 圖3為本發(fā)明基于DMA的數(shù)據(jù)傳輸流程示意圖。
[0030] 請參見圖3,本發(fā)明提供的基于DMA的數(shù)據(jù)傳輸方法包括如下步驟:
[0031] 步驟S1 :初始化外部設備,并為每個外部設備設置DMA操作緩沖區(qū)(ring buffer) 后開啟DMA控制器;初始化設備的信息包括:用于DMA操作過程中存放數(shù)據(jù)的物理內(nèi)存起 始地址DATA_BUFFER_START_ADDRESS、數(shù)據(jù)緩沖區(qū)長度DATA_BUFFER_LENGTH以及用于指明 設備已經(jīng)寫入到DMA操作緩沖區(qū)中數(shù)據(jù)相對于DATA_BUFFER_START_ADDRESS的地址偏移值 DATA_OFFSET_ADDRESS。初始化設備完成后開啟DMA控制器。接下來,在后續(xù)DMA數(shù)據(jù)傳輸 過程中不再涉及CPU與DMA控制器之間的相互交互。
[0032] 步驟S2 :每個外部設備通過DMA控制器將設備緩沖區(qū)FIFO數(shù)據(jù)按照配置信息自 動傳送到各自的DMA操作緩沖區(qū);每次外部設備緩沖區(qū)中有待寫數(shù)據(jù)時,根據(jù)配置信息獲 取物理內(nèi)存起始地址以及當前偏移地址值,并計算出待寫數(shù)據(jù)地址。為了便于下次寫入數(shù) 據(jù),外部設備每次寫入所述DMA操作緩沖區(qū)后,可以先根據(jù)新的當前偏移地址值以及物理 內(nèi)存起始地址自動計算出下次待寫入數(shù)據(jù)地址并保存于配置信息中。下次有待寫數(shù)據(jù)時, 待寫數(shù)據(jù)地址可以直接從配置信息中獲取。DMA傳輸?shù)臄?shù)據(jù)可以分為定長和變長,定長數(shù)據(jù) 接收和傳輸過程相對簡單,只需要一次定位就可以獲得數(shù)據(jù),而變長數(shù)據(jù)接收和傳輸過程 則需要輔助數(shù)據(jù)結構才能正確獲得完整數(shù)據(jù)。
[0033] 請繼續(xù)參見圖4,以定長數(shù)據(jù)的發(fā)送為例,假設DMA數(shù)據(jù)一次交互固定大小的數(shù)據(jù) 塊長度為L,地址偏移值的初始值為0。
[0034] 如圖5所示設備端的具體處理步驟如下:
[0035] 步驟S201 :當設備緩存區(qū)FIFO中有數(shù)據(jù)DataO時,自動發(fā)起DMA寫操作將數(shù)據(jù)寫 入到內(nèi)存中待寫數(shù)據(jù)地址處。
[0036] 步驟S202 :更新DMA操作緩沖區(qū)中的offset值為L,表明已經(jīng)存在下個待寫數(shù)據(jù) 的起始地址。
[0037] 步驟S203 :更新待寫數(shù)據(jù)地址,當數(shù)據(jù)寫入地址到達環(huán)形緩沖區(qū)邊界時,若無剩 余數(shù)據(jù),則更新地址偏移值值為〇 ;若有剩余數(shù)據(jù),則所述剩余數(shù)據(jù)重新開始重頭寫入,并 設置地址偏移值為剩余數(shù)據(jù)的長度。一般在傳輸定長數(shù)據(jù)時,為DMA操作緩沖區(qū)中開辟的 數(shù)據(jù)緩沖區(qū)長度,優(yōu)選是定長數(shù)據(jù)長度L的整數(shù)倍。
[0038] 步驟S204 :循環(huán)步驟S201?S203,如此反復,直到外部設備被停止。
[0039] 步驟S3 :應用程序采用定期輪詢方式獲取各個外部設備對應DMA操作緩沖區(qū)中的 數(shù)據(jù)。應用程序通過讀取DATA_OFFSET_ADDRESS地址處的值就可以獲得DMA操作緩沖區(qū)中 的數(shù)據(jù)情況。由于沒有交互的存在,應用程序必須主動去判斷是否存在可用數(shù)據(jù),即輪詢 DATA_OFFSET_ADDRESS地址處的地址偏移值。輪詢的頻率也是影響效率的一個因素,過密會 增加 CPU負荷,可以通過增大DMA操作緩沖區(qū)(ring buffer)尺寸來緩存較長時間數(shù)據(jù)。
[0040] 應用程序初始化后,應用程序中預先設置地址偏移值更新為內(nèi)存中設備更新的地 址偏移值,即表明數(shù)據(jù)緩沖區(qū)中沒有數(shù)據(jù)。
[0041] 如圖6所示,以定長數(shù)據(jù)接收為例,主機端應用程序處理步驟如下:
[0042] 步驟S301 :應用程序讀取DMA操作緩沖區(qū)中地址偏移值,如果預存的地址偏移值 和DMA操作緩沖區(qū)中地址偏移值的不同,說明外部設備已把數(shù)據(jù)寫入到內(nèi)存中,執(zhí)行步驟 S302,否則繼續(xù)循環(huán)比較直至預存的地址偏移值和DMA操作緩沖區(qū)中的地址偏移值不同。
[0043] 步驟S302 :應用程序讀取物理內(nèi)存起始地址+地址偏移值(Offset Local)的數(shù) 據(jù),從而獲得來自外部設備的數(shù)據(jù);
[0044] 步驟S303 :如果起始地址+地址偏移值到達DMA操作緩沖區(qū)最后,應用程序更新 預存的地址偏移值為〇,否則應用將預存預存的地址偏移值增加一個數(shù)據(jù)長度L。
[0045] 步驟S304 :重新執(zhí)行步驟S301?S303,直到所述應用程序停止運行。
[0046] 圖5為本發(fā)明基于DMA的變長數(shù)據(jù)交互示意圖。
[0047] 請繼續(xù)參見圖5,當每次DMA數(shù)據(jù)傳輸?shù)某叽绮煌瑫r必須添加輔助數(shù)據(jù)才能正確 獲得數(shù)據(jù)。因此必須為每個變長數(shù)據(jù)添加數(shù)據(jù)頭(header)結構,來指明讀取數(shù)據(jù)信息,包 括變長數(shù)據(jù)包總長度、位置格式配置信息。根據(jù)header結構定制和解析數(shù)據(jù),就可以根據(jù) 需要傳輸各種復雜的數(shù)據(jù)塊。變長數(shù)據(jù)傳輸過程與定長數(shù)據(jù)傳輸過程一樣,不同的是外部 設備必須定制header和數(shù)據(jù)信息,而應用程序必須通過header才能獲得數(shù)據(jù),中間增加了 一個解析過程。
[0048] 此外,對變長數(shù)據(jù),當數(shù)據(jù)寫入地址到達環(huán)形緩沖區(qū)邊界時,若無剩余數(shù)據(jù),則更 新地址偏移值為0 ;若有剩余數(shù)據(jù),則所述剩余數(shù)據(jù)重新開始重頭寫入,并設置地址偏移值 為剩余數(shù)據(jù)的長度。具體操作如下:每次寫變長數(shù)據(jù)時先判斷待寫數(shù)據(jù)是否能完全寫入,若 是,根據(jù)所述待寫地址將所述待寫數(shù)據(jù)寫入所述DMA操作緩沖區(qū),當前偏移地址值增加待 寫數(shù)據(jù)的長度,并且如果新的當前偏移地址值等于所述數(shù)據(jù)緩沖區(qū)的長度,將當前偏移地 址值設置為〇 ;若否,根據(jù)所述待寫地址將所述待寫數(shù)據(jù)寫入并將所述剩余數(shù)據(jù)開始從頭 寫入DMA操作緩沖區(qū),并設置地址偏移值為剩余數(shù)據(jù)的長度。
[0049] 上面詳細描述了外部設備發(fā)送數(shù)據(jù),CPU (應用程序)接收數(shù)據(jù)的傳輸過程。對于 CPU (應用程序)發(fā)送數(shù)據(jù),與外部設備接收數(shù)據(jù)流程大致相同,只不過是反向進行操作。外 部設備預先保存一個本地地址偏移變量,并以一定的時間間隔采樣DMA操作緩沖區(qū)中的地 址偏移值,如果DMA操作緩沖區(qū)中的地址偏移值值與本地預存地址偏移值不相同說明DMA 操作緩沖區(qū)中存在數(shù)據(jù),于是外部設備啟動DMA控制器將數(shù)據(jù)從DMA操作緩沖區(qū)中拷貝到 設備緩沖區(qū)中,如此反復進行,在此不再一一贅述。在另一個實施例中,數(shù)據(jù)寫入DMA操作 緩沖區(qū)中之后,將已寫入數(shù)據(jù)的相關信息發(fā)送至外部設備寄存器,從而觸發(fā)設備根據(jù)寄存 器信息通過DMA控制器讀取數(shù)據(jù)。
[0050] 雖然本發(fā)明已以較佳實施例揭示如上,然其并非用以限定本發(fā)明,任何本領域技 術人員,在不脫離本發(fā)明的精神和范圍內(nèi),當可作些許的修改和完善,因此本發(fā)明的保護范 圍當以權利要求書所界定的為準。
【權利要求】
1. 一種基于DMA的數(shù)據(jù)傳輸方法,其特征在于,包括如下步驟: a) 初始化外部設備,并為每個外部設備設置DMA操作緩沖區(qū)后開啟DMA控制器; b) 所述每個外部設備通過DMA控制器將數(shù)據(jù)傳送到各自的DMA操作緩沖區(qū); c) 應用程序采用定期輪詢方式獲取各個外部設備對應DMA操作緩沖區(qū)中的數(shù)據(jù)。
2. 如權利要求1所述的基于DMA的數(shù)據(jù)傳輸方法,其特征在于,所述步驟a)中設置DMA 操作緩沖區(qū)包括設置存放數(shù)據(jù)的物理內(nèi)存起始地址、數(shù)據(jù)緩沖區(qū)長度以及指示當前數(shù)據(jù)存 儲位置相對起始地址的地址偏移值。
3. 如權利要求2所述的基于DMA的數(shù)據(jù)傳輸方法,其特征在于,所述外部設備在DMA操 作緩沖區(qū)寫入數(shù)據(jù)完成后再更新地址偏移值,所述CPU預先存儲各個外部設備DMA操作緩 沖區(qū)的地址偏移值,并在定期輪詢時根據(jù)地址偏移值的變化判斷是否有可用數(shù)據(jù)。
4. 如權利要求3所述的基于DMA的數(shù)據(jù)傳輸方法,其特征在于,所述DMA操作緩沖區(qū)為 環(huán)形數(shù)據(jù)緩沖區(qū),當數(shù)據(jù)寫入地址到達環(huán)形數(shù)據(jù)緩沖區(qū)邊界時,若無剩余數(shù)據(jù),則設置地址 偏移值為〇,若有剩余數(shù)據(jù),則所述剩余數(shù)據(jù)開始從頭寫入,并設置地址偏移值為剩余數(shù)據(jù) 的長度。
5. 如權利要求4所述的基于DMA的數(shù)據(jù)傳輸方法,其特征在于,所述步驟b)的具體過 程如下: blO)所述外部設備緩沖區(qū)中有待寫數(shù)據(jù)時,根據(jù)配置信息獲取物理內(nèi)存起始地址以及 當前偏移地址值,并計算出待寫數(shù)據(jù)地址; b20)判斷待寫數(shù)據(jù)是否能完全寫入,若是,根據(jù)所述待寫地址將所述待寫數(shù)據(jù)寫入所 述DMA操作緩沖區(qū),當前偏移地址值增加待寫數(shù)據(jù)的長度,并且如果新的當前偏移地址值 等于所述數(shù)據(jù)緩沖區(qū)的長度,將當前偏移地址值設置為〇 ;若否,根據(jù)所述待寫地址將所述 待寫數(shù)據(jù)寫入并將所述剩余數(shù)據(jù)開始從頭寫入DMA操作緩沖區(qū),并設置地址偏移值為剩余 數(shù)據(jù)的長度。
6. 如權利要求5所述的基于DMA的數(shù)據(jù)傳輸方法,其特征在于, 所述步驟b20)中每次寫入所述DMA操作緩沖區(qū)后,根據(jù)新的當前偏移地址值以及物理 內(nèi)存起始地址計算出下次待寫入數(shù)據(jù)地址并保存于配置信息中;所述步驟blO)中的待寫 數(shù)據(jù)地址為上次寫入數(shù)據(jù)時更新保存于配置信息中的數(shù)據(jù)地址。
7. 如權利要求5或者6所述的基于DMA的數(shù)據(jù)傳輸方法,其特征在于,所述步驟c)具 體為: 應用程序定期輪詢時,若發(fā)現(xiàn)該外部設備對應的DMA操作緩沖區(qū)地址偏移值和預存 的地址偏移值不同,則獲取所述預存地址偏移值處的數(shù)據(jù)并將所述預存地址偏移值更新為 DMA操作緩沖區(qū)的地址偏移值。
8. 如權利要求7所述的基于DMA的數(shù)據(jù)傳輸方法,其特征在于,所述外部設備與應用程 序之間傳輸定長數(shù)據(jù),定長數(shù)據(jù)的長度為L,所述數(shù)據(jù)緩沖區(qū)的長度為定長數(shù)據(jù)的長度的整 數(shù)倍,所述步驟b20)為根據(jù)所述待寫地址將所述定長數(shù)據(jù)寫入所述DMA操作緩沖區(qū),當前 偏移地址值增加 L。
9. 如權利要求7所述的基于DMA的數(shù)據(jù)傳輸方法,其特征在于,所述外部設備和應用程 序之間傳輸變長數(shù)據(jù),所述變長數(shù)據(jù)包括數(shù)據(jù)字頭和數(shù)據(jù)內(nèi)容,所述數(shù)據(jù)字頭包括數(shù)據(jù)總 長度和位置格式配置信息,所述步驟b20)為根據(jù)所述待寫地址將所述變長數(shù)據(jù)寫入所述 DMA操作緩沖區(qū),當前偏移地址值增加所述變長數(shù)據(jù)的總長度。
10. 如權利要求9所述的基于DMA的數(shù)據(jù)傳輸方法,其特征在于,所述應用程序獲取所 述預存地址偏移值處的變長數(shù)據(jù)后根據(jù)數(shù)據(jù)字頭中的位置格式配置信息解析變長數(shù)據(jù)的 內(nèi)容。
11. 一種基于DMA的數(shù)據(jù)傳輸方法,其特征在于,包括如下步驟: d) 初始化外部設備,并為每個外部設備設置DMA操作緩沖區(qū)后開啟DMA控制器,所述設 置DMA操作緩沖區(qū)包括設置存放數(shù)據(jù)的物理內(nèi)存起始地址、數(shù)據(jù)緩沖區(qū)長度以及指示當前 數(shù)據(jù)存儲位置相對起始地址的地址偏移值; e) 將應用程序中的數(shù)據(jù)傳送到待寫入數(shù)據(jù)的外部設備DMA操作緩沖區(qū); f) 所述外部設備定期輪詢所述對應的DMA操作緩沖區(qū)的地址偏移值,如果新獲取的地 址偏移值與預存的地址偏移值不同,則所述外部設備通過所述DMA控制器獲取所述DMA操 作緩沖區(qū)中的數(shù)據(jù)。
12. -種基于DMA的數(shù)據(jù)傳輸方法,其特征在于,包括如下步驟: g) 初始化外部設備,并為每個外部設備設置DMA操作緩沖區(qū)后開啟DMA控制器,所述設 置DMA操作緩沖區(qū)包括設置存放數(shù)據(jù)的物理內(nèi)存起始地址、數(shù)據(jù)緩沖區(qū)長度以及指示當前 數(shù)據(jù)存儲位置相對起始地址的地址偏移值; h) 將應用程序中的數(shù)據(jù)傳送到待寫入數(shù)據(jù)的外部設備DMA操作緩沖區(qū),并發(fā)送指令至 所述待寫入數(shù)據(jù)的外部設備中的寄存器; i) 所述外部設備被所述寄存器觸發(fā)之后,通過DMA控制器獲取所述DMA操作緩沖區(qū)中 的數(shù)據(jù)。
【文檔編號】G06F13/28GK104123250SQ201310146199
【公開日】2014年10月29日 申請日期:2013年4月25日 優(yōu)先權日:2013年4月25日
【發(fā)明者】曾群 申請人:上海聯(lián)影醫(yī)療科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
河北区| 和田县| 昂仁县| 周至县| 隆安县| 梁山县| 邵东县| 四川省| 禄丰县| 大兴区| 芮城县| 苏州市| 巴林右旗| 南阳市| 柳河县| 延边| 平远县| 泽州县| 喜德县| 景德镇市| 泰来县| 保靖县| 本溪| 蒙阴县| 周口市| 斗六市| 寿阳县| 安陆市| 松溪县| 鄱阳县| 许昌市| 梅河口市| 阿城市| 公安县| 九寨沟县| 西吉县| 玉门市| 黎城县| 石景山区| 微博| 布尔津县|