衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

英創信息技術精簡ISA總線Linux編程 – Part3簡介

英創信息技術 ? 來源:英創信息技術 ? 作者:英創信息技術 ? 2020-02-11 16:48 ? 次閱讀

精簡ISA總線接口是一種8-bit寬度的雙向并行擴展總線,其特點是地址數據分時復用8位總線,加上4條總線控制信號,即可實現對外部數據的快速讀寫。若再使能一條總線時鐘信號(共13條信號),就可實現高達10MB/s以上的數據傳輸。精簡ISA總線作為英創主板的特色功能之一,在ESM6802、ESM7000、ESM7100、ESM335x等多款型號中均有配置。

關于對精簡ISA總線接口的應用編程的基本方法,請參考《精簡ISA總線編程– Part 1》;應用程序直接啟動DMA做定長數據的傳送方法,請參考《精簡ISA總線編程– Part 2》。本文介紹由外部硬件觸發DMA傳送,應用程序通過ISA驅動(/dev/em_isa)讀取采集數據的方法。

硬件DMA的基本工作原理

下圖是基于硬件DMA實現高速數據采集功能的系統框圖:

●應用程序通過常規的異步ISA讀寫操作,對AD采集單元進行必要配置。

●通過特殊的isa_write_buf(..)操作啟動硬件DMA。

●當AD采集單元轉換數據準備好,發出DMA請求信號(DMAREQ置高,脈沖寬度400ns – 1000ns)。

●DMA控制器感受到DMAREQ信號,連續產生4個同步總線周期,讀取AD單元內已準備好的數據,每個同步周期讀取2個字節,共讀取8個字節。從DMAREQ請求開始,到DMA數據傳輸完畢,整個過程大約1840ns。之后DMA將等待一下一個DMAREQ脈沖信號。

●DMA讀取的數據將自動存入驅動程序內部的環形Buffer中,當DMA讀取的數據達到一定閾值(4KB)時,驅動將通過事件觸發應用程序讀取整塊數據。

由于AD單元中的數據是通過DMA硬件存入系統緩沖區的,由此產生的CPU開銷就很低。應用程序可在數據采集的同時,完成必要的數據處理、顯示、通訊等功能塊。另一方面,由于AD采集單元不再需要保存轉換的數據,可有效降低硬件成本。

實現基于硬件DMA的數據采集,需要以下信號:

ESM7000信號管腳 實際信號功能
ISA_AD0 ISA地址數據總線,LSB
ISA_AD1 ISA地址數據總線
ISA_AD2 ISA地址數據總線
ISA_AD3 ISA地址數據總線
ISA_AD4 ISA地址數據總線
ISA_AD5 ISA地址數據總線
ISA_AD6 ISA地址數據總線
ISA_AD7 ISA地址數據總線,MSB
ISA_CSn ISA片選控制信號CS,低電平有效
GPIO24 ISA同步總線周期時鐘BCLK
ISA_ADVn ISA地址鎖存控制信號ADV,低電平有效
ISA_RDn ISA數據讀控制信號RD,低電平有效
ISA_WEn ISA數據寫控制信號WE,低電平有效
GPIO12 DMA請求信號DMAREQ,輸入,高電平有效

注意:在使用硬件DMA數據傳輸時,將禁止使用掛角GPIO12和GPIO24的GPIO功能、禁止使用CAN2端口。

DMA傳輸總線時序說明

圖1是一次完整的DMA傳輸總體時序圖。

圖1硬件DMA傳輸總線時序

從上面的時序可見,DMAREQ請求開始,到第一個總線周期,大約有640ns的延時。整個傳輸周期大約1840ns。按2000ns計算,采用硬件DMA傳輸,可實現每秒4MB字節的數據傳輸率。若假設4路模擬通道,每個樣點16-bit量化,這樣就對應每通道500ksps的采樣率。這樣的采樣率可滿足絕大部分的工控應用需求。展開圖1觀察,可見:

圖2硬件觸發DMA傳輸時序前半部分

圖3硬件觸發DMA傳輸時序后半部分

從上面的時序圖可見,有DMA啟動的總線周期,每個周期只有6個BCLK脈沖,讀取2個數據字節。這與在《精簡ISA總線編程– Part 2》中介紹的CPU啟動的DMA操作不同。在使用時需特別注意。DMAREQ的脈沖寬度有一定要求:DMAREQ脈沖寬度應大于240ns,才能保證可靠觸發DMA,其次DMAREQ應在DMA傳輸周期結束前變低,否則可能誤觸發下一次DMA傳輸。

每個總線周期詳細的時序關系如下:

圖4硬件觸發DMA總線周期時序

圖5硬件觸發DMA總線周期時序參數標注

為了簡化AD采集單元的電路設計,硬件觸發DMA傳輸總線周期輸出的地址固定在0xE0。AD采集單元的其他寄存器應避免使用0xE0 – 0xE1這兩個地址。

應用程序設計要點

應用程序啟動DMA數據傳輸,需要使用數據結構struct isa_transfer的傳遞參數和數據,struct isa_transfer的結構定義如下:

structisa_transfer
{
void *rx_buf; /* != NULL: buffer for bus read */
void *tx_buf; /* != NULL: buffer for bus write */
unsigned len; /* buffer length in byte */
unsigned offset; /* offset,port address on isa bus */
unsigned inc; /* = 0: fixed offset, = 1: offset+1 after r/w */
};

啟動硬件觸發DMA傳輸,需要特殊的寫操作,代碼如下:

structisa_transfer t;
// start ext-trigger dma
memset(&t, 0, sizeof(structisa_transfer));
t.offset = 0x50E0;
t.len = 0xFFFFFFFF;
isa_write_buf(fd, &t);

注意在上述代碼中t.rx_buf和t.tx_buf均必須為空。停止硬件觸發DMA傳輸的代碼為:

structisa_transfer t;
// stopext-trigger dma
memset(&t, 0, sizeof(structisa_transfer));
t.offset = 0x50E0;
t.len = 0;
isa_write_buf(fd, &t);

在啟動DMA后,應用程序的數據接收線程需調用poll等待數據ready的消息:

structpollfdfds[1];
fds[0].fd = fd;
fds[0].events = POLLPRI;
// wait data ready with timeout 2 seconds
if(poll(fds, 1, 2) == -1) {
perror("poll failed!\n");
goto error;
}
// data is ready….

讀取數據的代碼為:

intrc, total_bytes;
structisa_transfer t;
externunsignedchargbuf[64 * 1024];
total_bytes = 0;
memset(&t, 0, sizeof(structisa_transfer));
// read data
t.rx_buf = gbuf;
t.offset = offset;
t.len = sizeof(gbuf);
rc = read(fd, &t, sizeof(structisa_transfer));
if(rc< 0) {
printf("%s dma data read failed %d\n", __func__, rc);
}
elseif(rc> 0) {
total_bytes += rc;
printf("%s dma data read %d\n", __func__, total_bytes);
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式主板
    +關注

    關注

    7

    文章

    6086

    瀏覽量

    35614
收藏 人收藏

    評論

    相關推薦

    龍芯中科榮獲2024年度信息技術應用創新工作委員會卓越貢獻成員單位

    近日,中國電子工業標準化技術協會信息技術應用創新工作委員會(以下簡稱“信工委會”)在北京召開2024年度工作總結座談會暨信“大比武”總結大會。中國工程院院士、信
    的頭像 發表于 01-23 10:50 ?165次閱讀

    芯盛智能榮獲2024年信息技術應用創新工作委員會卓越貢獻成員單位

    日前,中國電子工業標準化技術協會信息技術應用創新工作委員會(以下簡稱 “信工委會”)2024 年度總結座談會于北京隆重舉行。此次會議對在信工作中作出突出貢獻的成員單位予以表彰。江蘇
    的頭像 發表于 01-20 09:56 ?157次閱讀

    飛騰助力首屆教育信息技術應用創新大賽圓滿落幕

    近日,由中國教育技術協會主辦,教育部教育管理信息中心教育信實驗室、公安部第三研究所、中國電子工業標準化技術協會信工委會支持,北京航空航天
    的頭像 發表于 12-24 09:57 ?205次閱讀

    有方科技參編的信息技術團體標準發布

    近日,有方科技參編的《信息技術產品供應鏈成熟度 共性指標 第1部分:企業背景評價》《信息技術產品供應鏈成熟度 共性指標 第2部分:技術掌控評價》《信息技術產品供應鏈成熟度 共性指標 第
    的頭像 發表于 12-23 10:44 ?225次閱讀

    龍芯中科助力2024首屆教育信息技術應用創新大賽成功舉辦

    近日,2024首屆教育信息技術應用創新大賽在北京航空航天大學成功舉辦。本次大賽由中國教育技術協會主辦,教育信實驗室、公安部第三研究所、中國電子工業標準化技術協會信
    的頭像 發表于 12-19 17:02 ?282次閱讀

    拓維信息參與牽頭組建!長沙新一代信息技術產教聯合體正式獲批

    的長沙新一代信息技術產教聯合體成功獲批,為長沙市信息技術產業發展注入了新的活力。圖/《2024年長沙市市級市域產教聯合體名單》長沙新一代信息技術產教聯合體將依托龍頭企
    的頭像 發表于 12-07 01:06 ?483次閱讀
    拓維<b class='flag-5'>信息</b>參與牽頭組建!長沙新一代<b class='flag-5'>信息技術</b>產教聯合體正式獲批

    全志T113-S3板載Linux系統信息查詢

    包含多個內置命令,可幫助我們熟悉正在使用的軟件和硬件平臺。為了全面了解如何查看Linux系統的各種信息,下面的內容將詳細介紹各個方面的查詢命令和方法。產品簡介眺望電子E
    的頭像 發表于 11-22 01:07 ?466次閱讀
    全志T113-S<b class='flag-5'>3</b>板載<b class='flag-5'>Linux</b>系統<b class='flag-5'>信息</b>查詢

    中科達榮獲2024年軟件和信息技術服務優秀企業

    及前百家企業”名單。中科達憑借非凡的技術實力與持續的創新能力,成功入選“2024年度軟件和信息技術服務競爭力百強企業”以及“2024年軟件和信息技術服務優秀企業”。
    的頭像 發表于 10-30 11:44 ?557次閱讀

    Linux應用編程的基本概念

    Linux應用編程涉及到在Linux環境下開發和運行應用程序的一系列概念。以下是一些涵蓋Linux應用編程的基本概念。
    的頭像 發表于 10-24 17:19 ?291次閱讀

    國產化背景下的工控主板發展現狀

    ,是信息技術應用創新產業的簡稱,于2016年“信工委會”(信息技術應用創新工作委員會)提出,目的就是要推動我們國內軟硬件關鍵技術的研發
    的頭像 發表于 09-21 16:15 ?508次閱讀

    梯度科技入選2023年信息技術應用創新解決方案名單

    日前,工業和信息化部網絡安全產業發展中心(工業和信息化部信息中心)在天津舉辦2024信息技術應用創新發展大會暨解決方案應用推廣大會。會上正式公布了2023年
    的頭像 發表于 09-09 16:29 ?492次閱讀

    中軟國際信服務助力大連信產業發展

    為進一步激發大連本地信產業生態的活力與潛力,搭建一個高效、開放的交流平臺。由大連軟件行業協會攜手大連市信息技術應用創新綜合服務中心主辦,中軟國際協辦的,2024年大連市信息技術應用創新產業發展大會
    的頭像 發表于 08-27 16:49 ?954次閱讀

    翼輝信息入選2023年信息技術應用創新解決方案名單

    近日,2023 年(第五屆)信息技術應用創新解決方案公布遴選名單,歷經資格初審、技術中評、區域評議、終評預審,翼輝以“面向工業領域嵌入式操作系統 SylixOS 解決方案”,成功在全國優秀方案中脫穎而出,入選典型解決方案名單。
    的頭像 發表于 04-28 11:37 ?619次閱讀
    翼輝<b class='flag-5'>信息</b>入選2023年<b class='flag-5'>信息技術</b>應用創新解決方案名單

    龍芯中科三項信方案入圍工信部2023年信息技術應用創新應用示范案例名單

    近日,工業和信息化部通報了2023年信息技術應用創新解決方案征集遴選結果,本次共評選出典型解決方案173個、應用示范案例83個、單項創新案例64個。
    的頭像 發表于 03-07 16:45 ?1014次閱讀
    龍芯中科三項信<b class='flag-5'>創</b>方案入圍工信部2023年<b class='flag-5'>信息技術</b>應用創新應用示范案例名單

    RX78M組 EtherCAT ETG.5003示例程序固件信息技術

    電子發燒友網站提供《RX78M組 EtherCAT ETG.5003示例程序固件信息技術.pdf》資料免費下載
    發表于 02-21 14:22 ?1次下載
    RX78M組  EtherCAT ETG.5003示例程序固件<b class='flag-5'>信息技術</b>
    巴塘县| 宁陕县| 网上百家乐导航| 美国百家乐官网怎么玩| 百家乐技巧方法| 百合百家乐官网的玩法技巧和规则 | 百家乐休闲游戏| 百家乐官网投注软件有用吗 | 百家乐正反投注| 蓝盾百家乐官网的玩法技巧和规则| 灵武市| 大发888登陆器下载| 太阳城百家乐祖玛| 粤港澳百家乐官网娱乐 | 大发888手机客户端下载| 希尔顿百家乐试玩| 百家乐官网桌码合| 免费百家乐官网奥秘| 棋牌网| 大发888 官方| 威尼斯人娱乐网| 百家乐图淑何看| 百家乐翻天快播| 百家乐作弊演示| 木棉百家乐官网的玩法技巧和规则 | bet365国际娱乐| 老虎机上分器原理图| 香港百家乐玩法| 太阳城百家乐注册平台| 长江百家乐官网的玩法技巧和规则 | 麻将二八杠游戏| 威尼斯人娱乐城老品牌值得您信赖lm0| 缅甸百家乐网络赌博解谜| 百家乐梅花图标| 百家乐官网网上赌场| 678百家乐官网博彩娱乐场开户注册| 百家乐官网投注方向| 百家乐官网投注技巧建议| 百家乐官网连闲几率| 百家乐官网玩法和技巧| 百家乐官网网真人真钱群|