0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

英創(chuàng)信息技術(shù)精簡ISA總線Linux編程 – Part3簡介

英創(chuàng)信息技術(shù) ? 來源:英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2020-02-11 16:48 ? 次閱讀

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

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

硬件DMA的基本工作原理

下圖是基于硬件DMA實(shí)現(xiàn)高速數(shù)據(jù)采集功能的系統(tǒng)框圖:

●應(yīng)用程序通過常規(guī)的異步ISA讀寫操作,對AD采集單元進(jìn)行必要配置。

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

●當(dāng)AD采集單元轉(zhuǎn)換數(shù)據(jù)準(zhǔn)備好,發(fā)出DMA請求信號(DMAREQ置高,脈沖寬度400ns – 1000ns)。

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

●DMA讀取的數(shù)據(jù)將自動存入驅(qū)動程序內(nèi)部的環(huán)形Buffer中,當(dāng)DMA讀取的數(shù)據(jù)達(dá)到一定閾值(4KB)時(shí),驅(qū)動將通過事件觸發(fā)應(yīng)用程序讀取整塊數(shù)據(jù)。

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

實(shí)現(xiàn)基于硬件DMA的數(shù)據(jù)采集,需要以下信號:

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

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

DMA傳輸總線時(shí)序說明

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

圖1硬件DMA傳輸總線時(shí)序

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

圖2硬件觸發(fā)DMA傳輸時(shí)序前半部分

圖3硬件觸發(fā)DMA傳輸時(shí)序后半部分

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

每個總線周期詳細(xì)的時(shí)序關(guān)系如下:

圖4硬件觸發(fā)DMA總線周期時(shí)序

圖5硬件觸發(fā)DMA總線周期時(shí)序參數(shù)標(biāo)注

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

應(yīng)用程序設(shè)計(jì)要點(diǎn)

應(yīng)用程序啟動DMA數(shù)據(jù)傳輸,需要使用數(shù)據(jù)結(jié)構(gòu)struct isa_transfer的傳遞參數(shù)和數(shù)據(jù),struct isa_transfer的結(jié)構(gòu)定義如下:

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 */
};

啟動硬件觸發(fā)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均必須為空。停止硬件觸發(fā)DMA傳輸?shù)拇a為:

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

在啟動DMA后,應(yīng)用程序的數(shù)據(jù)接收線程需調(diào)用poll等待數(shù)據(jù)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….

讀取數(shù)據(jù)的代碼為:

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);
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6081

    瀏覽量

    34942
收藏 人收藏

    評論

    相關(guān)推薦

    創(chuàng)國產(chǎn)化背景下的工控主板發(fā)展現(xiàn)狀

    創(chuàng),是信息技術(shù)應(yīng)用創(chuàng)新產(chǎn)業(yè)的簡稱,于2016年“信創(chuàng)工委會”(信息技術(shù)應(yīng)用創(chuàng)新工作委員會)提出,目的就是要推動我們國內(nèi)軟硬件關(guān)鍵技術(shù)的研發(fā)
    的頭像 發(fā)表于 09-21 16:15 ?42次閱讀

    加速鯤鵬落地!拓維信息創(chuàng)遷移工具榮獲鯤鵬原生開發(fā)技術(shù)認(rèn)證

    認(rèn)證。圖/拓維·數(shù)據(jù)庫適配中間件取得鯤鵬原生開發(fā)N認(rèn)證在數(shù)字化時(shí)代的大潮中,信創(chuàng)戰(zhàn)略作為國家推動信息技術(shù)應(yīng)用創(chuàng)新、保障信息安全與自主可控的關(guān)鍵舉措,其重要性日益凸顯
    的頭像 發(fā)表于 09-10 08:03 ?240次閱讀
    加速鯤鵬落地!拓維<b class='flag-5'>信息</b>信<b class='flag-5'>創(chuàng)</b>遷移工具榮獲鯤鵬原生開發(fā)<b class='flag-5'>技術(shù)</b>認(rèn)證

    梯度科技入選2023年信息技術(shù)應(yīng)用創(chuàng)新解決方案名單

    日前,工業(yè)和信息化部網(wǎng)絡(luò)安全產(chǎn)業(yè)發(fā)展中心(工業(yè)和信息化部信息中心)在天津舉辦2024信息技術(shù)應(yīng)用創(chuàng)新發(fā)展大會暨解決方案應(yīng)用推廣大會。會上正式公布了2023年
    的頭像 發(fā)表于 09-09 16:29 ?270次閱讀

    中軟國際信創(chuàng)服務(wù)助力大連信創(chuàng)產(chǎn)業(yè)發(fā)展

    為進(jìn)一步激發(fā)大連本地信創(chuàng)產(chǎn)業(yè)生態(tài)的活力與潛力,搭建一個高效、開放的交流平臺。由大連軟件行業(yè)協(xié)會攜手大連市信息技術(shù)應(yīng)用創(chuàng)新綜合服務(wù)中心主辦,中軟國際協(xié)辦的,2024年大連市信息技術(shù)應(yīng)用創(chuàng)新產(chǎn)業(yè)發(fā)展大會
    的頭像 發(fā)表于 08-27 16:49 ?667次閱讀

    翼輝信息入選2023年信息技術(shù)應(yīng)用創(chuàng)新解決方案名單

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

    龍芯中科三項(xiàng)信創(chuàng)方案入圍工信部2023年信息技術(shù)應(yīng)用創(chuàng)新應(yīng)用示范案例名單

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

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

    電子發(fā)燒友網(wǎng)站提供《RX78M組 EtherCAT ETG.5003示例程序固件信息技術(shù).pdf》資料免費(fèi)下載
    發(fā)表于 02-21 14:22 ?1次下載
    RX78M組  EtherCAT ETG.5003示例程序固件<b class='flag-5'>信息技術(shù)</b>

    軟通動力與捷創(chuàng)技術(shù)簽訂戰(zhàn)略合作協(xié)議

    近日,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱“軟通動力”)與寧波捷創(chuàng)技術(shù)股份有限公司(以下簡稱“捷創(chuàng)技術(shù)”)正式簽訂戰(zhàn)略合作協(xié)議,并
    的頭像 發(fā)表于 02-03 16:35 ?1001次閱讀

    基于全志V3S芯片DIY Linux開發(fā)板

    簡介:大佬已在硬創(chuàng)社開源了近50款開發(fā)板,動手能力極強(qiáng),于去年年底開始接觸學(xué)習(xí)Linux,并由全志V3s、F1C200S等芯片開始上手DIY個人的L
    的頭像 發(fā)表于 01-15 09:37 ?2128次閱讀
    基于全志V<b class='flag-5'>3</b>S芯片DIY <b class='flag-5'>Linux</b>開發(fā)板

    闡述量子信息技術(shù)的研究現(xiàn)狀與未來

    20世紀(jì) 80 年代, 科學(xué)家將量子力學(xué)應(yīng)用到信息領(lǐng)域, 從而誕生了量子信息技術(shù), 諸如量子計(jì)算機(jī)、量子密碼、量子傳感等. 這些技術(shù)的運(yùn)行規(guī)律遵從量子力學(xué), 因此不僅其原理是量子力學(xué), 器件本身也
    發(fā)表于 11-22 11:40 ?674次閱讀
    闡述量子<b class='flag-5'>信息技術(shù)</b>的研究現(xiàn)狀與未來

    樂得瑞LDR6020P Type-C PD顯示器低成本精簡方案簡介

    樂得瑞LDR6020P Type-C PD顯示器低成本精簡方案簡介
    的頭像 發(fā)表于 11-10 17:42 ?685次閱讀
    樂得瑞LDR6020P Type-C PD顯示器低成本<b class='flag-5'>精簡</b>方案<b class='flag-5'>簡介</b>

    開鴻智谷受邀參加2023軟件和信息技術(shù)服務(wù)業(yè)創(chuàng)新發(fā)展論壇

    10月18日,以“智薈雄安創(chuàng)想未來”為主題的雄安新區(qū)2023軟件和信息技術(shù)服務(wù)業(yè)創(chuàng)新發(fā)展論壇在雄安新區(qū)國際酒店會議中心召開。本次論壇以推動軟件和信息技術(shù)服務(wù)業(yè)創(chuàng)新發(fā)展為目的,邀行政校企各級單位共商共建。開鴻智
    的頭像 發(fā)表于 10-20 08:30 ?689次閱讀
    開鴻智谷受邀參加2023軟件和<b class='flag-5'>信息技術(shù)</b>服務(wù)業(yè)創(chuàng)新發(fā)展論壇

    基于ISA總線與KH-9300的數(shù)據(jù)采集系統(tǒng)軟件設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于ISA總線與KH-9300的數(shù)據(jù)采集系統(tǒng)軟件設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 10-13 14:36 ?2次下載
    基于<b class='flag-5'>ISA</b><b class='flag-5'>總線</b>與KH-9300的數(shù)據(jù)采集系統(tǒng)軟件設(shè)計(jì)

    Linux驅(qū)動模塊.ko內(nèi)存精簡優(yōu)化過程

    Linux 驅(qū)動模塊可以獨(dú)立的編譯成 .ko 文件,雖然大小一般只有幾 MB,但對總內(nèi)存只有幾十 MB 的小型 Linux 系統(tǒng)來說,常常也是一個非常值得優(yōu)化的點(diǎn)。本文以一個實(shí)際例子,詳細(xì)描述 .ko 內(nèi)存精簡優(yōu)化的具體過程。
    發(fā)表于 09-25 09:23 ?1136次閱讀

    信息技術(shù)是干什么?

    廣播電子技術(shù)信息技術(shù)
    橙群微電子
    發(fā)布于 :2023年09月22日 09:17:48