《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于散列DMA的高速串口驅動設計
基于散列DMA的高速串口驅動設計
邢麗華,高志鵬,袁德殿
摘要: 基于散列DMA的高速串口驅動設計 ,1 概 述由于串口在電報通信、工控和數據采集等領域有著廣泛的應用,絕大多數嵌入式處理器都內置了通用異步收發器(UART)。UART數據傳輸主要通過中斷或DMA的方式實現。中斷方式是在接收到數據或需要發送數據時產生中
Abstract:
Key words :

1  概  述

由于串口在電報通信、工控和數據采集等領域有著廣泛的應用,絕大多數嵌入式處理器都內置了通用異步收發器(UART)。UART數據傳輸主要通過中斷或DMA的方式實現。

中斷方式是在接收到數據或需要發送數據時產生中斷,在中斷服務程序中讀寫UART的緩沖區(FIFO)實現數據傳輸。由于串口通信速率一般比較低(典型值不超過115 200 bps),大多數嵌入式系統都采用中斷方式來傳輸串口數據。然而,中斷服務程序需要占用CPU的時間,而串口速度的提升也必將導致CPU更頻繁地響應UART中斷,這勢必會造成嵌入式系統的性能下降。

DMA數據傳輸無需CPU的參與,是一種更加高效的數據傳輸方式?,F有的DMA數據傳輸方案都是基于DMA塊傳輸方式(即Block DMA)。這種方式下每次傳輸完一個數據塊后產生一個DMA中斷,在高速串口通信中,頻繁的DMA中斷仍然會影響系統的性能。本文基于散列DMA(seatter DMA)的傳輸方式提出了一套完整的工業級高速串口驅動設計方案,實現了波特率高達12 Mbps的UART數據傳輸。

2  DMA數據傳輸的特點

DMA(Direct Memory Access,直接存儲器訪問),是指數據在內存與I/O設備間的直接傳輸,數據操作由DMA控制器(DMAC)完成而不需要CPU的參與,大大提高了CPU的利用率。因此,DMA是高速數據傳輸的理想方式。利用DMA進行數據傳輸時應注意以下幾點:

①DMA傳輸需要占用系統總線,在此期間CPU不能使用總線。如果外設在進行數據傳輸時不能有任何的間斷,就必須保證傳輸期間DMAC對系統總線的獨占,這可能會影響其他需要使用總線進行數據傳輸的設備。所以,系統總線在DMA傳輸期間是否可被搶占,要依據嵌入式系統的特定環境來決定。

②DMA傳輸存在緩存一致性(cache coherency)問題。如圖1所示,DMAC和CPU是兩個平行的單元,CPU總是通過數據緩存來訪問內存中的數據,而DMAC則直接訪問內存。如果內存中的數據被DMAC更新,而數據緩存中的數據尚未被更新,CPU獲得的某些地址的值可能并不是內存中的真實值。為了避免這個問題,可在DMAC更新完內存數據后或CPU讀取被更新過的數據前刷新數據緩存,或是使用不被數據緩存映射的非緩存(non-cacheable)內存區域。

DMA數據傳輸可分為塊傳輸和散列傳輸兩種方式。在DMA傳輸數據的過程中,要求源物理地址和目標物理地址必須是連續的。但是在某些計算機體系中(如IA架構),連續的存儲器地址在物理上不一定是連續的,所以DMA傳輸要分成多次完成。傳輸完一塊物理上連續的數據后引發一次中斷,然后進行下一塊物理上連續的數據傳輸,這就是DMA塊傳輸方式(Block DMA)。散列傳輸是在塊傳輸方式上發展起來的,它與一個傳輸鏈表相關,如圖2所示。該鏈表可以是單向結構或環形結構??刂谱种邪瑪祿粚?、數據塊大小、當前塊傳輸結束是否引發中斷等控制信息。DMA塊傳輸可看作是只含有一個節點,且下一節點指針總是指向當前節點的散列傳輸。采用散列DMA方式能更靈活、高效地傳輸數據。

3  在SPEAR300平臺上實現高速串口

3.1  硬件平臺

SPEAR300是ST公司在ARM926EJ-S核的基礎上開發的高性能嵌入式處理器。其最高工作頻率為333MHz,有8個獨立的DMA通道,支持散列DMA;UART支持DMA傳輸,發送和接收FIFO大小均為16字節,在192 MHz的外設總線(APB)頻率下支持的最高波特率為12 Mbps,如果提高APB的頻率還可以獲得更高的波特率。本文的硬件平臺是以SPEAR300為核心的人機界面產品,主要外設包括觸摸屏、液晶顯示模組、網口和串口(串口要支持最高波特率為12 Mbps的西門子MPI通信協議)。

3.2  驅動程序設計

串口驅動程序的核心是實現數據高效穩定的收發。為了實現UART的高速數據傳輸,UART中斷設置為最高優先級;同時在操作系統中允許中斷嵌套,打開UART接收超時中斷RTI并使能UART的DMA傳輸。這樣,當UART的發送FIFO數據減少到設定的參考值(FIFOLevel)時,發送DMA傳輸就會被觸發。同樣,當接收FIFO的數據增長到設定值時,接收DMA傳輸就會被觸發。為了減少DMA傳輸被觸發的次數同時保證數據被及時傳輸,發送FIFO Level設定為2字節,而接收FIFOLevel設定為14字節,將發送和接收的FIFO Level分別設定為0和16字節是有很大風險的。MPI協議要求傳輸的一幀數據不能有間斷,所以在使用DMA傳輸UART數據時DMAC必須獨占系統總線。為了避免產生緩存一致性問題,使用2塊非緩存內存區域存放待發送的數據和已接收到的數據。

發送數據時,待發送的數據量總是已知的。先構造一個傳輸節點,數據源地址為數據包的首地址,目的地址為UART寄存器,數據位寬為8,下一節點指針(PTR_NEXT)為空。當前數據包發送結束前,如果PTR_NEXT被更新,則下一個數據包的傳輸自動開始。當前數據包是否發送完畢,可通過讀取DMAC寄存器DMACCnControl的TransferSize字段得知。整個發送數據的過程無需觸發任何中斷,流程圖如圖3所示。如果采用DMA塊傳輸方式,就需要在每次傳輸完畢后產生DMA中斷,重新裝載數據到內存中的發送數據區以發送下一個數據包。

接收數據時,對方發過來的數據量一般是未知的。構造含有100個節點的循環鏈表結構,每個節點對應的傳輸塊大小為接收FIFO Level。數據源地址為UART數據寄存器的地址,首節點的目的地址為接收數據內存區域的首地址,此后節點的目的地址每次向后偏移(FIFO Level×2)個字節,數據位寬為16(8個數據位,4個狀態位,4個保留位)。當接收到的數據達到接收內存區域的80%(RECV_TH)時,需要通知數據發送方停止數據傳輸,在第80個節點處設置DMA中斷,該節點為閾值節點。采用本文的設計方案接收1幀不超過RECV_TH大小的數據,最多產生一次RTI中斷。當接收到的數據量少于FIFOLevel時不會觸發DMA接收,在RTI中斷中把UART接收FIFO中的數據復制到內存中的數據接收區,同時使DMA接收節點的目的地址向后偏移相應的長度并更新閾值節點的位置。接收數據流程如圖4所示。如果采用DMA塊傳輸方式,就必須額外使用一個環形數據緩沖區(Ring Buffer),每次接收到指定大小的數據塊后產生DMA中斷,在中斷服務程序中將接收到的數據復制到環形數據緩沖區中。

3.3 驅動測試

本文的設計方案直接應用于工業級的HMI產品,必須經過嚴格的測試。利用3臺西門子S7系列PLC和1臺產品樣機搭建令牌網,使用西門子MPI協議進行測試,并利用數據分析工具ProfiTrace監測通信過程。測試結果表明,2 400 bps~12 Mbps的各個波特率下都能進行穩定的數據通信。

結  語

本文詳細介紹了DMA數據傳輸的特點和散列DMA的工作方式。在此基礎上,提出了一套基于散列DMA的高速串口驅動設計方案,發送數據完全由DMAC完成,無需觸發任何中斷,接收1幀不超過接收區閾值的數據最多產生1次RTI中斷。和現有的各種利用DMA塊傳輸進行串口數據通信的方案相比,中斷次數大幅減少,大大提高了數據傳輸的效率。在應用了本方案的人機界面產品上,實現了波特率高達12 Mbps的穩定數據傳輸。對于在其他平臺上設計實現高速串口,本方案是一個很好的參考。

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          老鸭窝91久久精品色噜噜导演| 亚洲欧美制服另类日韩| 99国产精品久久久久久久久久| 欧美成人精品三级在线观看| 国产日韩一区二区三区| 亚洲老司机av| 亚洲欧美综合国产精品一区| 久久精品国产亚洲高清剧情介绍| 开元免费观看欧美电视剧网站| 亚洲黄页视频免费观看| 亚洲国产电影| 狠狠综合久久av一区二区老牛| 欧美日韩在线免费视频| 亚洲人成人77777线观看| 久久九九电影| 欧美一区二区成人6969| 国产视频丨精品|在线观看| 国产午夜精品理论片a级大结局| 欧美日韩精品在线播放| 欧美福利一区二区| 亚洲欧洲精品一区二区三区| 亚洲七七久久综合桃花剧情介绍| 性做久久久久久| 女女同性精品视频| 欧美色图首页| 欧美日韩精品免费| 国产毛片精品国产一区二区三区| 国产伦精品一区二区三区视频黑人| 夜夜嗨一区二区| 久久精品在线视频| 亚洲国产精品久久久久久女王| 午夜精品久久久久久99热软件| 日韩一级精品视频在线观看| 99re6热只有精品免费观看| 欧美精品一区二区三区在线播放| 欧美精品v日韩精品v国产精品| 在线成人激情黄色| 欧美激情第1页| 蜜桃久久av一区| 国产精品视频网站| 狠狠入ady亚洲精品经典电影| 亚洲大片精品永久免费| 欧美视频一区二区| 亚洲欧美在线x视频| 国产日韩高清一区二区三区在线| 久久精品一本| 一区二区三区国产在线| 久久综合狠狠综合久久综合88| 亚洲欧美精品在线| 欧美日韩一区成人| 久久综合伊人| 国产精品毛片高清在线完整版| 国外成人性视频| 日韩一级裸体免费视频| 亚洲国产美国国产综合一区二区| 亚洲你懂的在线视频| 午夜日韩视频| 午夜精品免费在线| 欧美激情网友自拍| 国产日韩欧美电影在线观看| 欧美1区3d| 久久免费精品日本久久中文字幕| 亚洲激情成人| 国产婷婷97碰碰久久人人蜜臀| 国产精品热久久久久夜色精品三区| 欧美理论电影在线播放| 亚洲国产成人porn| 国产精品扒开腿爽爽爽视频| 欧美视频你懂的| 国产欧美日本一区视频| 久久久久国产一区二区三区| 在线精品视频在线观看高清| 最近中文字幕mv在线一区二区三区四区| 欧美激情 亚洲a∨综合| 国产精品久久久久久超碰| 久久国产99| 欧美日韩午夜激情| 亚洲人成艺术| 国产在线观看精品一区二区三区| 久热爱精品视频线路一| 国产精品久久久久久久久久久久久| 亚洲六月丁香色婷婷综合久久| 欧美日本在线观看| 国产精品久久国产三级国电话系列| 欧美伊人精品成人久久综合97| 欧美激情导航| 国产精品久久久久久影院8一贰佰| 狠狠色噜噜狠狠色综合久| 亚洲一区二区三区激情| 亚洲视频导航| 亚洲福利视频一区二区| 国内精品久久久久伊人av| 国产女主播在线一区二区| 亚洲精品久久久久久久久久久| 欧美1区免费| 午夜在线视频一区二区区别| 久久综合成人精品亚洲另类欧美| 久久久久成人精品| 国产一区二区三区av电影| 亚洲精品久久久久久久久久久久久| 亚洲精品国产系列| 国产精品xxx在线观看www| 夜夜爽av福利精品导航| 欧美+日本+国产+在线a∨观看| 欧美在线播放视频| 亚洲精品日韩综合观看成人91| 欧美色综合天天久久综合精品| 欧美黄色大片网站| 在线看欧美日韩| 欧美激情综合网| 国内偷自视频区视频综合| 亚洲欧美日韩综合国产aⅴ| 久久精品91久久香蕉加勒比| 欧美日韩国产综合新一区| 欧美成人激情视频| 欧美精品免费视频| 国产精品日本欧美一区二区三区| 免费成人网www| 欧美日韩精品免费观看视频| 亚洲视频免费在线| 欧美电影免费观看网站| 亚洲综合视频1区| 亚洲承认在线| 亚洲成在人线av| 久久精品日产第一区二区| 国产偷国产偷精品高清尤物| 国语精品中文字幕| 亚洲第一视频网站| 一区二区三区|亚洲午夜| 一色屋精品亚洲香蕉网站| 国产精品久久久久久久午夜片| 国产一区二区久久久| 国产欧美日韩免费看aⅴ视频| 1000精品久久久久久久久| 亚洲国产天堂久久综合网| 欧美高清在线视频观看不卡| 国产精品一区久久久久| 国内精品美女在线观看| 国产精品成人一区| 欧美99在线视频观看| 欧美精品一区在线| 一区二区三区在线观看视频| 欧美在线视频全部完| 欧美一区二区黄| 亚洲欧洲视频在线| 亚洲精华国产欧美| 午夜精品福利一区二区蜜股av| 老鸭窝毛片一区二区三区| 国产精品女人久久久久久| 国产午夜一区二区三区| 亚洲电影av| 久久午夜影视| 黄页网站一区| 欧美jizzhd精品欧美巨大免费| 国产精品美女久久久免费| 久久影院午夜片一区| 欧美日韩大片| 久久一区二区三区四区五区| 新片速递亚洲合集欧美合集| 国产精品久久久爽爽爽麻豆色哟哟| 国内外成人免费激情在线视频| 久久久五月天| 欧美在线视频导航| 久久久国产91| 亚洲小说欧美另类社区| 久久av资源网| 亚洲无限乱码一二三四麻| 亚洲第一区色| 亚洲美女av网站| 一本色道久久88亚洲综合88| 久久中文字幕导航| 亚洲人午夜精品免费| 久久久中精品2020中文| 午夜精品久久久久久久男人的天堂| 国产女主播一区| 亚洲伊人第一页| 精品69视频一区二区三区| 日韩网站在线看片你懂的| 欧美色视频在线| 国产精品成人一区| 亚洲日本视频| 亚洲一区尤物| 国产精品久久久久av免费| 在线日本高清免费不卡| 怡红院av一区二区三区| 欧美日韩ab| 久久久久久精| 一区二区三区鲁丝不卡| 欧美精品久久久久久久免费观看| 欧美日韩免费区域视频在线观看| 亚洲男人的天堂在线aⅴ视频| 欧美亚洲综合久久| 国产欧美三级| 91久久极品少妇xxxxⅹ软件| 亚洲女人天堂av| 欧美99在线视频观看| 欧美日韩在线视频一区| 欧美激情一二三区| 欧美日韩亚洲网| 激情久久五月| 国模叶桐国产精品一区| 亚洲国产综合在线看不卡| 亚洲国产视频一区| 国产一区观看| 亚洲视频1区2区| 欧美一区二区三区在线播放| 欧美成人免费播放| 欧美午夜www高清视频| 一区二区激情小说| 国产精品裸体一区二区三区| 激情久久久久久| 欧美日韩一区二区三| 国内不卡一区二区三区| 亚洲一区在线看| 久久久国产91| 亚洲日本免费电影| 99re6热在线精品视频播放速度| 国产精品久久久久久久午夜片| 在线视频亚洲一区| 合欧美一区二区三区| 欧美一区二区女人| 欧美日韩免费网站| 久久美女艺术照精彩视频福利播放| 99国产精品久久久久久久久久| 久久精品在线观看| 亚洲电影观看| 国产精品盗摄久久久| 久久青草福利网站| 亚洲一区图片| 欧美一区亚洲| 久久国产精品久久国产精品| 亚洲欧洲日本mm| 欧美精品一区在线发布| 中文网丁香综合网| 精品粉嫩aⅴ一区二区三区四区| 激情亚洲一区二区三区四区| 老司机凹凸av亚洲导航| 一区二区在线看| 亚洲欧洲99久久| 一区免费观看| 韩国欧美国产1区| 麻豆亚洲精品| 精品91免费| 亚洲日本中文字幕免费在线不卡| 日韩午夜av| 国产日韩视频一区二区三区| 亚洲一区二区精品在线观看| 国产一区二区三区成人欧美日韩在线观看| 亚洲综合国产激情另类一区| 国产精品啊v在线| 亚洲人被黑人高潮完整版| 欧美一区2区三区4区公司二百| 亚洲免费一在线| 激情国产一区| 久久综合伊人77777| 乱中年女人伦av一区二区| 亚洲网友自拍| 欧美日韩国产欧| 中文一区字幕| 在线视频精品| 久久精品国语| 国产精品一区二区在线观看不卡| 伊人婷婷欧美激情| 欧美一区=区| 久久综合九色综合网站| 欧美怡红院视频一区二区三区| 欧美久久电影| 国内久久精品视频| 国产精品美女久久久久久免费| 老司机凹凸av亚洲导航| 国产婷婷成人久久av免费高清| 蜜臀av在线播放一区二区三区| 欧美精品在线一区二区| 国产精品久久久久9999| 国语自产精品视频在线看8查询8| 欧美日韩性视频在线| 国产精品毛片a∨一区二区三区|国| 亚洲图片欧洲图片av| 亚洲片国产一区一级在线观看| 在线观看成人网| 欧美电影电视剧在线观看| 亚洲欧美一区二区激情| 极品裸体白嫩激情啪啪国产精品| 国产精品呻吟| 狠狠色综合色综合网络| 在线亚洲观看| 校园春色国产精品| 激情一区二区三区| 亚洲三级国产| 国产日韩一级二级三级| 国产精品久久久久久av福利软件| 久久福利精品| 亚洲欧美日韩综合aⅴ视频| 国产日韩欧美在线一区| 欧美一区二区在线看| 亚洲国产裸拍裸体视频在线观看乱了| 激情久久久久久久| 国内外成人免费视频| 一本一本久久a久久精品牛牛影视| 亚洲人成网站777色婷婷| 午夜精品一区二区三区在线视| 欧美激情综合亚洲一二区| 欧美日韩综合| 欧美激情自拍| 国产精品久久一区主播| 91久久国产综合久久91精品网站| 久久久久久亚洲精品杨幂换脸| 激情综合网址| 亚洲人成网站777色婷婷| a4yy欧美一区二区三区| 99精品国产在热久久婷婷| 国产综合香蕉五月婷在线| 中文一区在线| 久久精品国产v日韩v亚洲| 亚洲高清资源| 欧美亚州在线观看| 狼人社综合社区| 一区二区三区四区国产| 国内在线观看一区二区三区| 宅男噜噜噜66一区二区66| 欧美成人精品不卡视频在线观看| 国内精品久久久久久久影视麻豆| 亚洲精品国产拍免费91在线| 亚洲乱码国产乱码精品精天堂| 亚洲国产成人av在线| 久久一二三国产| 亚洲小视频在线| 欧美一区二区高清|