99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

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

英創(chuàng)信息技術(shù) ? 來(lái)源:英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2020-02-11 16:50 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

關(guān)于對(duì)精簡(jiǎn)ISA總線接口的應(yīng)用編程的基本方法,請(qǐng)參考《精簡(jiǎn)ISA總線編程 – Part 1》。本文介紹由應(yīng)用程序啟動(dòng)基于DMA的數(shù)據(jù)塊讀寫(xiě),即MemCpy方式的DMA。采用DMA進(jìn)行ISA總線數(shù)據(jù)傳送的目的,是為了降低高速傳送大量數(shù)據(jù)時(shí)的CPU開(kāi)銷(xiāo)。MemCpy方式的DMA是指軟件線程啟動(dòng)DMA,然后該線程掛起等待DMA操作完成。在多線程環(huán)境中,其他線程即可在DMA執(zhí)行過(guò)程中得以并行運(yùn)行。

ISA總線信號(hào)定義如下:

信號(hào)及說(shuō)明 PIN# 信號(hào)及說(shuō)明
RESET_B,硬件復(fù)位 1 2 ISA_ADVn,地址鎖存控制信號(hào)
ISA_AD0,地址數(shù)據(jù)總線,LSB 3 4 ISA_AD4,地址數(shù)據(jù)總線
ISA_AD1,地址數(shù)據(jù)總線 5 6 ISA_AD5,地址數(shù)據(jù)總線
ISA_AD2,地址數(shù)據(jù)總線 7 8 ISA_AD6,地址數(shù)據(jù)總線
ISA_AD3,地址數(shù)據(jù)總線 9 10 ISA_AD7,地址數(shù)據(jù)總線,MSB
MSLn,支持多模塊掛接總線 11 12 ISA_WEn,數(shù)據(jù)寫(xiě)控制信號(hào)
GPIO9,可選作為IRQ 13 14 ISA_RDn,數(shù)據(jù)讀控制信號(hào)
GPIO8,可選作為IRQ 15 16 ISA_CSn,片選控制信號(hào)
GPIO25,可選作為IRQ 17 18 VDD_5V0,+5V供電
GPIO24 / ISA_BCLK,同步時(shí)鐘ISA_BCLK 19 20 GND,電源信號(hào)地

本文以下部分,將以ESM7000 Linux平臺(tái)為例,介紹具體的編程方法。

DMA總線訪問(wèn)API

應(yīng)用啟動(dòng)DMA數(shù)據(jù)傳輸,需要使用數(shù)據(jù)結(jié)構(gòu)struct isa_transfer的傳遞參數(shù)和數(shù)據(jù),structisa_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 */
};

每一個(gè)總線周期的操作只能是讀或?qū)懀虼嗽趇sa_transfer結(jié)構(gòu)中只能有一個(gè)buffer指針不為NULL。以下是執(zhí)行32字節(jié)數(shù)據(jù)塊寫(xiě)的代碼,寫(xiě)入地址為0x4040。順序的數(shù)據(jù)可方便時(shí)序的觀察。

unsignedchargbuf[64 * 1024];
unsignedint i, value;
structisa_transfer t;
unsignedchar *pBuf8;
// write data block
memset(&t, 0, sizeof(structisa_transfer));
t.offset = 0x4040;
t.len = 32; // max len<= 16KB = 16 * 1024
t.tx_buf = gbuf;
// fill data
value = 0x55; // initialvalue
pBuf8 = (unsignedchar*)t.tx_buf;
for(i = 0; i
*pBuf8 = (unsignedchar)(value + i);
pBuf8++;
}
isa_write_buf(fd, &t);

注意offset必須是0x4000 – 0x40FF,驅(qū)動(dòng)程序才會(huì)啟動(dòng)MemCpy方式的DMA傳輸。若從0x4040讀入32字節(jié)數(shù)據(jù),實(shí)現(xiàn)代碼則為:

unsignedchargbuf[64 * 1024];
structisa_transfer t;
// read data block
memset(&t, 0, sizeof(structisa_transfer));
t.offset = 0x4040;
t.len = 32; // max len<= 16KB = 16 * 1024
t.rx_buf = gbuf;
isa_read_buf(fd, &t);

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

圖1、圖2分別為MemCpy方式DMA讀總線時(shí)序概要、寫(xiě)總線時(shí)序概要。

圖1DMA讀總線時(shí)序

圖2DMA寫(xiě)總線時(shí)序

從上面的時(shí)序可見(jiàn),DMA也是16字節(jié)一組,連續(xù)4個(gè)總線周期組成,每組之間有一定間隔。DMA讀操作的總線速率大約為11.8MB/s,DMA寫(xiě)操作的總線速率大約為11.2MB/s。

展開(kāi)DMA寫(xiě)的總線時(shí)序可看到:

圖3DMA寫(xiě)總線時(shí)序—第1組起始部分

圖4DMA寫(xiě)總線時(shí)序—第1組結(jié)束部分

圖5DMA寫(xiě)總線時(shí)序—第2組起始部分

圖6DMA寫(xiě)總線時(shí)序—第2組結(jié)束部分

在每個(gè)總線周期中,地址遞增4。這樣當(dāng)傳輸長(zhǎng)度超過(guò)256字節(jié)時(shí),ISA地址及會(huì)循環(huán)。這意味著當(dāng)采用MemCpy方式DMA進(jìn)行數(shù)據(jù)傳輸時(shí),數(shù)據(jù)端口譯碼不能采用普通的組合電路地址譯碼方式,而必須采用BCLK+ ADV#的同步電路譯碼方式。具體方式就是每個(gè)周期的第一個(gè)BCLK下降沿鎖存到有效ADV#,標(biāo)志同步周期的開(kāi)始,之后經(jīng)過(guò)連續(xù)7個(gè)BCLK下降沿后同步周期結(jié)束。

DMA傳輸時(shí)的CPU負(fù)載率

與純軟件的同步總線周期傳輸相比,DMA傳輸最大的優(yōu)點(diǎn)是有效降低了總線傳輸?shù)腃PU開(kāi)銷(xiāo),使應(yīng)用程序的其它線程能同步運(yùn)行?;镜臏y(cè)試代碼如下:

#define MAX_DMA_LEN (16*1024)
unsignedchar gbuf[64 * 1024];
unsignedint i, count = 1;
struct isa_transfer t;
unsignedchar *pBuf8;
longdouble a[4], b[4], loadavg; //for CPU utilization calculation
FILE *fp;
constchar *bus_type_name[] = {"async-cpu","async-dma-mem","async-dma-ext","sync-cpu","sync-dma-mem","sync-dma-ext"};
// fill data
pBuf8 = (unsignedchar*)gbuf;
for(i = 0; i < MAX_DMA_LEN; i++){
*pBuf8 = (unsignedchar)(value + i);
pBuf8++;
}
memset(&t, 0, sizeof(struct isa_transfer));
// get initial values for calculating CPU usage in %
fp = fopen("/proc/stat","r");
fscanf(fp,"%*s %Lf %Lf %Lf %Lf",&a[0],&a[1],&a[2],&a[3]);
fclose(fp);
// write data block loop
while(count) {
i = (count < MAX_DMA_LEN)? count : MAX_DMA_LEN;
t.offset = offset;
t.len = i;
t.tx_buf = gbuf;
isa_write_buf(fd, &t);
count -= i;
}
// get end values for calculating CPU usage in %
fp = fopen("/proc/stat","r");
fscanf(fp,"%*s %Lf %Lf %Lf %Lf",&b[0],&b[1],&b[2],&b[3]);
fclose(fp);
// calculate CPU usage in %
loadavg = ((b[0]+b[1]+b[2]) - (a[0]+a[1]+a[2])) /((b[0]+b[1]+b[2]+b[3]) - (a[0]+a[1]+a[2]+a[3]));
loadavg *= 100;
i = (offset >> 12) & 0xf;
printf("%s bus write, CPU utilization is : %Lf%%\n",bus_type_name[i], loadavg);

使用100M數(shù)據(jù)長(zhǎng)度來(lái)測(cè)試總的CPU負(fù)載率的情況如下:

模式 MemCpy DMA 純軟件操作
同步總線讀 6.01% 50.3%
同步總線寫(xiě) 5.71% 50.0%

ESM7000使用的是具有雙核CPU的iMX7D,總CPU負(fù)載率50%,表示某個(gè)CPU核的負(fù)載已經(jīng)100%。DMA的使用對(duì)提高系統(tǒng)整體的性能是非常顯著的。

進(jìn)一步可測(cè)試應(yīng)用層實(shí)際的傳輸速率如下:

模式 傳輸速率 CPU負(fù)載
MemCpy DMA同步總線讀 8.67MB/s 6.01%
MemCpy DMA同步總線寫(xiě) 7.93MB/s 5.71%

若把每個(gè)周期傳輸?shù)淖止?jié)數(shù)從4個(gè)提升到8個(gè),傳輸率則可有50%的提升。

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

    關(guān)注

    87

    文章

    11511

    瀏覽量

    213881
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6102

    瀏覽量

    36314
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    DEKRA德凱成為沙特通信和信息技術(shù)設(shè)備技術(shù)法規(guī)認(rèn)證機(jī)構(gòu)

    近日,DEKRA德凱成功獲得沙特標(biāo)準(zhǔn)、計(jì)量和質(zhì)量組織(SASO)認(rèn)可,正式成為沙特通信和信息技術(shù)設(shè)備技術(shù)法規(guī)(Technical Regulation for Communications
    的頭像 發(fā)表于 07-15 14:27 ?229次閱讀

    科普|信創(chuàng)是什么?一文讀懂“信息技術(shù)應(yīng)用創(chuàng)新”戰(zhàn)略

    什么是信創(chuàng)?信創(chuàng),即“信息技術(shù)應(yīng)用創(chuàng)新”,是國(guó)家推動(dòng)IT系統(tǒng)自主可控、安全可控的重要戰(zhàn)略工程。它不僅是技術(shù)層面的創(chuàng)新,更承載著保障國(guó)家網(wǎng)絡(luò)安全、推動(dòng)產(chǎn)業(yè)升級(jí)和實(shí)現(xiàn)數(shù)字主權(quán)的重任。簡(jiǎn)單來(lái)
    的頭像 發(fā)表于 06-13 10:06 ?2034次閱讀
    科普|信<b class='flag-5'>創(chuàng)</b>是什么?一文讀懂“<b class='flag-5'>信息技術(shù)</b>應(yīng)用創(chuàng)新”戰(zhàn)略

    Linux的作用

    學(xué)校和教育機(jī)構(gòu)使用Linux來(lái)教授計(jì)算機(jī)科學(xué)和信息技術(shù)相關(guān)的課程。 總之,Linux是一個(gè)功能強(qiáng)大、靈活且廣泛應(yīng)用的操作系統(tǒng),適用于各種不同的用途和場(chǎng)景。
    發(fā)表于 04-04 01:57

    Platform總線簡(jiǎn)介

    平臺(tái)總線(Platform Bus)是 Linux 內(nèi)核中的一個(gè)基礎(chǔ)架構(gòu),用于支持硬件平臺(tái)上的設(shè)備驅(qū)動(dòng)程序的開(kāi)發(fā)和管理。它提供了一種統(tǒng)一的方式來(lái)表示和操作與特定平臺(tái)相關(guān)的設(shè)備。平臺(tái)總線的設(shè)計(jì)目標(biāo)是將
    發(fā)表于 03-31 16:43

    龍芯中科榮獲2024年度信息技術(shù)應(yīng)用創(chuàng)新工作委員會(huì)卓越貢獻(xiàn)成員單位

    近日,中國(guó)電子工業(yè)標(biāo)準(zhǔn)化技術(shù)協(xié)會(huì)信息技術(shù)應(yīng)用創(chuàng)新工作委員會(huì)(以下簡(jiǎn)稱“信創(chuàng)工委會(huì)”)在北京召開(kāi)2024年度工作總結(jié)座談會(huì)暨信創(chuàng)“大比武”總結(jié)大會(huì)。中國(guó)工程院院士、信
    的頭像 發(fā)表于 01-23 10:50 ?716次閱讀

    芯盛智能榮獲2024年信息技術(shù)應(yīng)用創(chuàng)新工作委員會(huì)卓越貢獻(xiàn)成員單位

    日前,中國(guó)電子工業(yè)標(biāo)準(zhǔn)化技術(shù)協(xié)會(huì)信息技術(shù)應(yīng)用創(chuàng)新工作委員會(huì)(以下簡(jiǎn)稱 “信創(chuàng)工委會(huì)”)2024 年度總結(jié)座談會(huì)于北京隆重舉行。此次會(huì)議對(duì)在信創(chuàng)工作中作出突出貢獻(xiàn)的成員單位予以表彰。江蘇
    的頭像 發(fā)表于 01-20 09:56 ?644次閱讀

    不同類型的總線技術(shù)對(duì)比

    總線技術(shù)是計(jì)算機(jī)系統(tǒng)中用于連接各個(gè)組件(如CPU、內(nèi)存、硬盤(pán)等)的關(guān)鍵技術(shù),它們負(fù)責(zé)數(shù)據(jù)傳輸和通信。以下是一些常見(jiàn)的總線技術(shù)及其對(duì)比: 1.
    的頭像 發(fā)表于 12-31 09:40 ?1300次閱讀

    飛騰助力首屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽圓滿落幕

    近日,由中國(guó)教育技術(shù)協(xié)會(huì)主辦,教育部教育管理信息中心教育信創(chuàng)實(shí)驗(yàn)室、公安部第三研究所、中國(guó)電子工業(yè)標(biāo)準(zhǔn)化技術(shù)協(xié)會(huì)信創(chuàng)工委會(huì)支持,北京航空航天
    的頭像 發(fā)表于 12-24 09:57 ?518次閱讀

    有方科技參編的信息技術(shù)團(tuán)體標(biāo)準(zhǔn)發(fā)布

    近日,有方科技參編的《信息技術(shù)產(chǎn)品供應(yīng)鏈成熟度 共性指標(biāo) 第1部分:企業(yè)背景評(píng)價(jià)》《信息技術(shù)產(chǎn)品供應(yīng)鏈成熟度 共性指標(biāo) 第2部分:技術(shù)掌控評(píng)價(jià)》《
    的頭像 發(fā)表于 12-23 10:44 ?616次閱讀

    龍芯中科助力2024首屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽成功舉辦

    近日,2024首屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽在北京航空航天大學(xué)成功舉辦。本次大賽由中國(guó)教育技術(shù)協(xié)會(huì)主辦,教育信創(chuàng)實(shí)驗(yàn)室、公安部第三研究所、中國(guó)電子工業(yè)標(biāo)準(zhǔn)化技術(shù)協(xié)會(huì)信
    的頭像 發(fā)表于 12-19 17:02 ?574次閱讀

    中科創(chuàng)達(dá)榮獲2024年軟件和信息技術(shù)服務(wù)優(yōu)秀企業(yè)

    及前百家企業(yè)”名單。中科創(chuàng)達(dá)憑借非凡的技術(shù)實(shí)力與持續(xù)的創(chuàng)新能力,成功入選“2024年度軟件和信息技術(shù)服務(wù)競(jìng)爭(zhēng)力百?gòu)?qiáng)企業(yè)”以及“2024年軟件和信息技術(shù)服務(wù)優(yōu)秀企業(yè)”。
    的頭像 發(fā)表于 10-30 11:44 ?981次閱讀

    Linux應(yīng)用編程的基本概念

    Linux應(yīng)用編程涉及到在Linux環(huán)境下開(kāi)發(fā)和運(yùn)行應(yīng)用程序的一系列概念。以下是一些涵蓋Linux應(yīng)用編程的基本概念。
    的頭像 發(fā)表于 10-24 17:19 ?662次閱讀

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

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

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

    認(rèn)證。圖/拓維·數(shù)據(jù)庫(kù)適配中間件取得鯤鵬原生開(kāi)發(fā)N認(rèn)證在數(shù)字化時(shí)代的大潮中,信創(chuàng)戰(zhàn)略作為國(guó)家推動(dòng)信息技術(shù)應(yīng)用創(chuàng)新、保障信息安全與自主可控的關(guān)鍵舉措,其重要性日益凸顯
    的頭像 發(fā)表于 09-10 08:03 ?803次閱讀
    加速鯤鵬落地!拓維<b class='flag-5'>信息</b>信<b class='flag-5'>創(chuàng)</b>遷移工具榮獲鯤鵬原生開(kāi)發(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ā)展大會(huì)暨解決方案應(yīng)用推廣大會(huì)。會(huì)上正式公布了2023年
    的頭像 發(fā)表于 09-09 16:29 ?775次閱讀