91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

英創(chuàng)信息技術(shù)ESM335x擴(kuò)展總線中斷智能塊讀寫

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

掃碼添加小助手

加入工程師交流群

1、綜述

ESM335x 嵌入式主板的提供帶中斷的精簡ISA擴(kuò)展總線,主要用于支持高速數(shù)據(jù)采集、多路串口擴(kuò)展以及其他的高級擴(kuò)展應(yīng)用。在這些應(yīng)用中,往往出現(xiàn)需要按一定的順序讀寫一定量的數(shù)據(jù)的情況,如果用戶在應(yīng)用程序中一次一次的調(diào)用讀寫操作將會很慢而且會占用較多系統(tǒng)資源。我們在Linux-4.1.6 ISA總線驅(qū)動增加了中斷時數(shù)據(jù)塊讀寫操作的功能,當(dāng)有中斷發(fā)生時,驅(qū)動程序會按照用戶的設(shè)置讀寫塊數(shù)據(jù),并將讀到的數(shù)據(jù)進(jìn)行緩存,讀寫完之后驅(qū)動程序會通知應(yīng)用程序,用戶在應(yīng)用程序中通過讀操作就能獲得需要讀取的塊數(shù)據(jù)。使用驅(qū)動程序在中斷時自動讀寫能簡化用戶應(yīng)用程序,減少塊讀寫操作的延遲。具體的使用方法在下面介紹。

2、數(shù)據(jù)結(jié)構(gòu)及使用說明

使用發(fā)生中斷時驅(qū)動自動讀寫數(shù)據(jù)塊功能需要在應(yīng)用程序中使用em335x_drivers.h頭文件,使能功能需要使用struct isa_transfer結(jié)構(gòu)體,傳入此結(jié)構(gòu)體數(shù)組給驅(qū)動以設(shè)置讀寫操作的參數(shù):

structisa_transfer

{

constvoid *tx_buf; /* 寫數(shù)據(jù)地址,不為NULL有效 */

void *rx_buf; /* 讀數(shù)據(jù)地址,不為NULL有效 */

unsigned len; /* 讀取長度 */

unsigned offset; /* 總線地址 0x00 .. 0xFF */

unsigned inc; /* 每次讀寫之后地址的增量 */

};

●tx_buf: 不為NULL時, 表示寫操作

●rx_buf: 不為NULL時,表示讀操作,數(shù)據(jù)讀取存放地址

●tx_buf和rx_buf不能同時有效

●len:讀寫長度,以字節(jié)byte為單位,進(jìn)行塊讀寫操作時必須為偶數(shù),也可以進(jìn)行單獨的1個byte的數(shù)據(jù)讀寫,即設(shè)置為1

●offset:讀寫操作地址,塊數(shù)據(jù)讀寫時offset必須為偶數(shù)

●inc:每次讀寫操作后地址增加量,1或者0

總線塊數(shù)據(jù)讀寫說明

ESM335x精簡ISA總線只有8位數(shù)據(jù)/地址線,但是硬件內(nèi)部可以進(jìn)行16bit的讀寫,并且會自動將16bit的數(shù)據(jù)分為低8位和高8位兩次讀寫,低8位和高8位處在連續(xù)的地址處(即必須有兩個相鄰的地址),我們在驅(qū)動中為了加快讀寫操作,在用戶進(jìn)行塊讀寫(結(jié)構(gòu)體中的len為偶數(shù))時會使用16bit讀寫的方式,具體讀寫方式如下,請用戶注意讀寫地址的變化:

●設(shè)置rx_buf有效,len=4, offset=0, inc=0時,驅(qū)動讀寫地址及順序為:

低8位—offset,高8位—offset+1;低8位—offset,高8位—offset+1。

●設(shè)置rx_buf有效,len=4, offset=0, inc=1時,驅(qū)動讀寫地址及順序為:

低8位—offset,高8位—offset+1;低8位—offset+2,高8位—offset+3。

寫操作相同。

3、應(yīng)用程序示例

使用ISA總線需要先打開相應(yīng)的設(shè)備文件:

intfd;

fd = open("/dev/em335x_isa", O_RDWR);

printf("open file = %d\n", fd);

if(fd < 0)

{

returnfd;

}

應(yīng)用程序需要先初始化要傳遞給驅(qū)動的struct isa_transfer數(shù)組,讀寫順序和數(shù)組中的順序相同,用戶可自行設(shè)定,要使用中斷自動讀寫功能數(shù)組第一個元素必須初始化為0,否則將直接進(jìn)行塊讀寫操作,而不使用中斷:

#defineARRAY_SIZE(a) (sizeof(a)) //用于計算數(shù)組字節(jié)數(shù)

uint8_t tx[2] = { 0x5a, 0x55}; //第一次寫入數(shù)據(jù)

uint8_t tx2[2] = { 0xaa, 0x1b}; //第二次寫入數(shù)據(jù)

uint8_t rx[8]; //讀取數(shù)據(jù)存放處

structisa_transfer tr[4];

//第一個元素必須設(shè)置為0才會使能中斷自動讀寫功能

memset ( &tr[0], 0,sizeof(structisa_transfer) );

//第一次操作設(shè)置為寫

tr[1].tx_buf = tx;

tr[1].rx_buf = NULL;

tr[1].len = ARRAY_SIZE(tx);

tr[1].offset = 0;

tr[1].inc = 1;

//第二次操作設(shè)置為讀,應(yīng)用程序中讀操作存放數(shù)據(jù)地址rx,總線起始地址為offset

tr[2].tx_buf = NULL;

tr[2].rx_buf = rx;

tr[2].len = ARRAY_SIZE(rx) ;

tr[2].offset = 4;

tr[2].inc = 0;

//第三次操作設(shè)置為寫

tr[3].tx_buf = tx2;

tr[3].rx_buf = NULL;

tr[3].len = ARRAY_SIZE(tx2);

tr[3].offset = 0;

tr[3].inc = 1;

調(diào)用ioctl函數(shù)傳遞數(shù)組地址,使能中斷塊讀寫操作:

ret = ioctl(fd, ISA_IOC_MESSAGE(4), tr );

設(shè)置過后的讀取地址必須保證在下次調(diào)用ioctl重新設(shè)置之前一直有效,用戶之后調(diào)用read函數(shù)時驅(qū)動程序會自動將數(shù)據(jù)寫入設(shè)置的讀取地址(示例中的rx數(shù)組),而與用戶在read函數(shù)中輸入的地址無關(guān),這樣能夠簡化用戶應(yīng)用程序中的設(shè)置,用戶只需要在每次read函數(shù)之后到ioctl傳遞的結(jié)構(gòu)體數(shù)組中的讀地址處(rx數(shù)組)獲得數(shù)據(jù),并在下次讀操作之前進(jìn)行拷貝或者其他操作以防止數(shù)據(jù)丟失。

停止中斷塊讀寫操作,只傳入一個全為0的struct isa_transfer機構(gòu)體:

ret =ioctl(fd, ISA_IOC_MESSAGE(1), &tr[0] );

read函數(shù)讀取數(shù)據(jù)只需以sizeof(struct isa_transfer)為count參數(shù),地址為無關(guān)參數(shù),但是建議用戶傳入之前ioctl處的結(jié)構(gòu)體數(shù)組地址,如下所示,之后數(shù)據(jù)便會讀到之前設(shè)置的結(jié)構(gòu)體數(shù)組中指定的讀取數(shù)據(jù)存入地址處,即rx數(shù)組中:

nNum =read(fd, tr,sizeof(structisa_transfer));

需要重新設(shè)置讀寫數(shù)據(jù)參數(shù)時需要重新設(shè)置結(jié)構(gòu)體數(shù)組,并重新調(diào)用ioctl函數(shù)。

設(shè)置完成后使用select函數(shù)查詢ISA總線狀態(tài),如有中斷發(fā)生,并且驅(qū)動讀寫完了設(shè)置的數(shù)據(jù)塊,select函數(shù)將會返回大于0的數(shù)值,并且設(shè)置相應(yīng)的讀文件標(biāo)志,應(yīng)用程序就可以調(diào)用read讀取數(shù)據(jù)了,select函數(shù)用法示例:

//線程函數(shù)中調(diào)用select函數(shù)查詢總線狀態(tài),如可讀,則調(diào)用read讀取數(shù)據(jù)到之前設(shè)置的地址

intISASelectThreadFunc(void* lparam)

{

intfd = * (int*)lparam;

printf( "fd %d\n", fd );

fd_set fdRead;

structtimeval aTime;

intret;

while(1)

{

FD_ZERO(&fdRead);

FD_SET(fd,&fdRead);

aTime.tv_sec = 2;

aTime.tv_usec = 0;

ret = select ( fd+1, &fdRead, NULL, NULL, &aTime );

if( ret<0 )

printf( "select, something wrong!\n " );

if( ret>0 )

{

if( FD_ISSET(fd, &fdRead) )

{

printf( "There is a IRQ!!! AND RW complete!\n" );

/********************在此調(diào)用read************************/

read(fd, &tx[0],sizeof(structisa_transfer));

//數(shù)據(jù)已經(jīng)讀到rx數(shù)組中了,用戶可在此進(jìn)行數(shù)據(jù)處理

}

}

//判斷程序運行狀態(tài),跳出循環(huán)

//break;

}

pthread_exit( NULL );

return0;

}

//創(chuàng)建線程

intStartPulseThread(int*fd )

{

pthread_attr_t attr;

pthread_t m_thread;

int res;

res = pthread_attr_init(&attr);

if( res!=0 )

{

printf("Create attribute failed\n" );

}

res = pthread_attr_setscope( &attr, PTHREAD_SCOPE_SYSTEM );

res += pthread_attr_setdetachstate( &attr, PTHREAD_CREATE_DETACHED );

if( res!=0 )

{

printf( "Setting attribute failed\n" );

}

res = pthread_create( &m_thread, &attr, (void*(*) (void*))&ISASelectThreadFunc, fd );

if( res!=0 )

{

return-1;

}

pthread_attr_destroy( &attr );

return0;

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

    關(guān)注

    88

    文章

    11758

    瀏覽量

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

    關(guān)注

    7

    文章

    6107

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    匠芯創(chuàng)D21x芯片驅(qū)動兩輪電動車智慧升級

    防護(hù); 豐富的擴(kuò)展接口:集成雙千兆以太網(wǎng)、多路UART、CAN、USB等工業(yè)常用接口,提供強大的連接能力和靈活的系統(tǒng)擴(kuò)展空間。 平臺價值 超越單一應(yīng)用的技術(shù)通用性 匠芯創(chuàng)D21
    發(fā)表于 02-06 15:42

    龍芯中科成功舉辦2025信息技術(shù)應(yīng)用創(chuàng)新產(chǎn)教融合交流會

    11月30日,在教育部教育管理信息中心、山東省電化教育館的支持和指導(dǎo)下,龍芯中科聯(lián)合浪潮集團(tuán)、濟(jì)南幼兒師范高等??茖W(xué)校(以下簡稱“濟(jì)南幼高?!保?,成功舉辦信息技術(shù)應(yīng)用創(chuàng)新產(chǎn)教融合交流會,并同步舉行信息技術(shù)應(yīng)用創(chuàng)新實踐基地啟用儀式
    的頭像 發(fā)表于 12-08 14:53 ?777次閱讀

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

    2025年11月13日-15日,由中國教育技術(shù)協(xié)會主辦、浙江大學(xué)與中國教育技術(shù)協(xié)會網(wǎng)絡(luò)安全專業(yè)委員會聯(lián)合承辦,中國電子工業(yè)標(biāo)準(zhǔn)化技術(shù)協(xié)會信息技術(shù)應(yīng)用創(chuàng)新工作委員會、浙江高校信
    的頭像 發(fā)表于 11-21 16:23 ?786次閱讀

    誠邁科技信創(chuàng)電腦助力2025第二屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽圓滿收官

    11月15日,由中國教育技術(shù)協(xié)會主辦、浙江大學(xué)與中國教育技術(shù)協(xié)會網(wǎng)絡(luò)安全專業(yè)委員會聯(lián)合承辦,中國電子工業(yè)標(biāo)準(zhǔn)化技術(shù)協(xié)會信息技術(shù)應(yīng)用創(chuàng)新工作委員會、浙江高校信
    的頭像 發(fā)表于 11-17 17:58 ?671次閱讀
    誠邁科技信<b class='flag-5'>創(chuàng)</b>電腦助力2025第二屆教育<b class='flag-5'>信息技術(shù)</b>應(yīng)用創(chuàng)新大賽圓滿收官

    寶馬南京信息技術(shù)有限公司開業(yè)

    今日,寶馬(南京)信息技術(shù)有限公司在南京正式“掛牌運行”。這家華晨寶馬全資子公司由領(lǐng)悅數(shù)字信息技術(shù)有限公司南京分公司“迭代”而來,代表著一次里程碑式的“進(jìn)化”。這次升級不僅加速了寶馬在華數(shù)字化轉(zhuǎn)型進(jìn)程,更通過深化本土創(chuàng)新,為“未來智慧出行”的發(fā)展譜寫了核心“代碼”。
    的頭像 發(fā)表于 10-29 15:17 ?617次閱讀

    【六岳微LY-F335開發(fā)板試用體驗】芯片數(shù)據(jù)手冊解讀

    Harvard 總線架構(gòu) :獨立的程序總線、數(shù)據(jù)讀總線、數(shù)據(jù)寫總線,提升并行效率。 中斷系統(tǒng) : PIE 模塊支持96 路外設(shè)
    發(fā)表于 09-26 16:06

    易華錄入選國家級信息技術(shù)應(yīng)用創(chuàng)新典型解決方案

    近日,工業(yè)和信息化部網(wǎng)絡(luò)安全產(chǎn)業(yè)發(fā)展中心(工業(yè)和信息化部信息中心)公布了“2024年信息技術(shù)應(yīng)用創(chuàng)新解決方案”評選結(jié)果。易華錄申報的“基于節(jié)能高效藍(lán)光的超級
    的頭像 發(fā)表于 08-07 15:35 ?1613次閱讀

    信息技術(shù)應(yīng)用產(chǎn)學(xué)協(xié)同人才培養(yǎng)行動計劃”正式發(fā)布,誠邁科技入選首批參與單位

    設(shè)在中國軟件評測中心。誠邁科技作為信創(chuàng)技術(shù)先鋒企業(yè),受邀成為首批參與單位,與國內(nèi)頂尖高校、領(lǐng)軍企業(yè)和權(quán)威機構(gòu)攜手,共同打造具有中國特色的信息技術(shù)人才培養(yǎng)新范式,為
    的頭像 發(fā)表于 08-06 17:29 ?1549次閱讀
    “<b class='flag-5'>信息技術(shù)</b>應(yīng)用產(chǎn)學(xué)協(xié)同人才培養(yǎng)行動計劃”正式發(fā)布,誠邁科技入選首批參與單位

    佛瑞亞如何通過信息技術(shù)推動業(yè)務(wù)增長

    在數(shù)字化、信息化的浪潮下,信息技術(shù)已經(jīng)不僅是后臺工具,更成為驅(qū)動企業(yè)發(fā)展的關(guān)鍵力量。本期Women Inspiring Mobility,我們采訪了佛瑞亞中國區(qū)信息技術(shù)總監(jiān)馬瑛,了解她和團(tuán)隊如何將
    的頭像 發(fā)表于 07-29 14:00 ?900次閱讀

    Texas Instruments CC335x SimpleLink?雙頻Wi-Fi? 6配套IC數(shù)據(jù)手冊

    ) 和Wi-Fi 5 (802.11ac)。這些CC335x是Texas Instruments的第10代連接組合芯片。因此,CC335x基于成熟的技術(shù)設(shè)計而成。這些器件非常適合配備運行TCP/IP的Linux或
    的頭像 發(fā)表于 07-23 11:37 ?1328次閱讀
    Texas Instruments CC<b class='flag-5'>335x</b> SimpleLink?雙頻Wi-Fi? 6配套IC數(shù)據(jù)手冊

    飛騰主板為信創(chuàng)產(chǎn)業(yè)發(fā)展提高硬實力

    信息技術(shù)飛速發(fā)展的當(dāng)下,信創(chuàng)產(chǎn)業(yè)已成為我國實現(xiàn)科技自立自強、保障國家信息安全的關(guān)鍵領(lǐng)域。信創(chuàng),即信息技術(shù)應(yīng)用創(chuàng)新,其核心目標(biāo)是實現(xiàn)
    的頭像 發(fā)表于 07-22 18:20 ?707次閱讀

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

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

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

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

    2025第二屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽啟動,誠邁科技邀您挑戰(zhàn)!

    共同發(fā)布信息技術(shù)應(yīng)用創(chuàng)新人工智能方向(賽道三)“基于大模型教育教學(xué)應(yīng)用創(chuàng)新賽”賽題。本次大賽面向全國高校(本科類和高職高專類)計算機、電子信息、人工智能等相關(guān)專業(yè)在
    的頭像 發(fā)表于 05-13 17:24 ?1316次閱讀
    2025第二屆教育<b class='flag-5'>信息技術(shù)</b>應(yīng)用創(chuàng)新大賽啟動,誠邁科技邀您挑戰(zhàn)!

    2025第二屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽正式開賽

    為進(jìn)一步落實建設(shè)網(wǎng)絡(luò)強國和教育強國的戰(zhàn)略部署,推動各級教育行政部門及高校信息技術(shù)應(yīng)用創(chuàng)新能力提升,培養(yǎng)實戰(zhàn)型創(chuàng)新人才。龍芯中科聯(lián)合太初元碁、誠邁科技在2025第二屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽共同發(fā)布信息技術(shù)應(yīng)用創(chuàng)新人工
    的頭像 發(fā)表于 05-13 16:21 ?1437次閱讀