色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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ù)ESM335x擴(kuò)展總線中斷智能塊讀寫(xiě)

英創(chuàng)信息技術(shù) ? 來(lái)源:英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2020-02-04 10:38 ? 次閱讀

1、綜述

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

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

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

structisa_transfer

{

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

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

unsigned len; /* 讀取長(zhǎng)度 */

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

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

};

●tx_buf: 不為NULL時(shí), 表示寫(xiě)操作

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

●tx_buf和rx_buf不能同時(shí)有效

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

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

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

總線塊數(shù)據(jù)讀寫(xiě)說(shuō)明

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

●設(shè)置rx_buf有效,len=4, offset=0, inc=0時(shí),驅(qū)動(dòng)讀寫(xiě)地址及順序?yàn)椋?/p>

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

●設(shè)置rx_buf有效,len=4, offset=0, inc=1時(shí),驅(qū)動(dòng)讀寫(xiě)地址及順序?yàn)椋?/p>

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

寫(xiě)操作相同。

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

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

intfd;

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

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

if(fd < 0)

{

returnfd;

}

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

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

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

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

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

structisa_transfer tr[4];

//第一個(gè)元素必須設(shè)置為0才會(huì)使能中斷自動(dòng)讀寫(xiě)功能

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

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

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è)置為寫(xiě)

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ù)組地址,使能中斷塊讀寫(xiě)操作:

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

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

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

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

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

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

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

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

//線程函數(shù)中調(diào)用select函數(shù)查詢(xún)總線狀態(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ù)組中了,用戶(hù)可在此進(jìn)行數(shù)據(jù)處理

}

}

//判斷程序運(yùn)行狀態(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)容及配圖由入駐作者撰寫(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

    文章

    11312

    瀏覽量

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

    關(guān)注

    7

    文章

    6085

    瀏覽量

    35396
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

    近日,由中國(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 ?132次閱讀

    有方科技參編的信息技術(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à)》《信息技術(shù)產(chǎn)品供應(yīng)鏈成熟度 共性指標(biāo) 第
    的頭像 發(fā)表于 12-23 10:44 ?151次閱讀

    龍芯中科助力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 ?243次閱讀

    AM335x和AMIC110 Sitara?處理器技術(shù)參考手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《AM335x和AMIC110 Sitara?處理器技術(shù)參考手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 11-14 15:07 ?0次下載
    AM<b class='flag-5'>335x</b>和AMIC110 Sitara?處理器<b class='flag-5'>技術(shù)</b>參考手冊(cè)

    中科創(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 ?497次閱讀

    AM335x功耗估算工具

    電子發(fā)燒友網(wǎng)站提供《AM335x功耗估算工具.pdf》資料免費(fèi)下載
    發(fā)表于 10-12 11:46 ?0次下載
    AM<b class='flag-5'>335x</b>功耗估算工具

    引領(lǐng)智能未來(lái):銳恩科技的國(guó)產(chǎn)低功耗單片機(jī)ENMCU

    在科技飛速發(fā)展的今天,低功耗單片機(jī)的應(yīng)用越來(lái)越廣泛,尤其是在安防監(jiān)控、智能家居和微波雷達(dá)照明等領(lǐng)域。作為國(guó)內(nèi)專(zhuān)精特新國(guó)家高新技術(shù)半導(dǎo)體企業(yè),銳恩科技致力于為客戶(hù)提供高性能、低功耗的單片機(jī)解決方案
    發(fā)表于 09-26 17:16

    AM335x硬件設(shè)計(jì)指南

    電子發(fā)燒友網(wǎng)站提供《AM335x硬件設(shè)計(jì)指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-19 11:05 ?0次下載
    AM<b class='flag-5'>335x</b>硬件設(shè)計(jì)指南

    AM335x原理圖核對(duì)表

    電子發(fā)燒友網(wǎng)站提供《AM335x原理圖核對(duì)表.pdf》資料免費(fèi)下載
    發(fā)表于 09-19 11:03 ?0次下載
    AM<b class='flag-5'>335x</b>原理圖核對(duì)表

    梯度科技入選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 ?435次閱讀

    can總線中斷狀態(tài)什么意思呢?

    CAN總線(Controller Area Network)是一種廣泛使用的現(xiàn)場(chǎng)總線通信協(xié)議,主要用于汽車(chē)、工業(yè)控制等領(lǐng)域。在CAN總線通信中,中斷狀態(tài)是一個(gè)重要的概念,它涉及到CAN
    的頭像 發(fā)表于 06-16 10:21 ?1759次閱讀

    STM32 SDIO讀寫(xiě)SD卡,裸板運(yùn)行單讀寫(xiě)與多讀寫(xiě)沖突怎么解決?

    STM32 SDIO讀寫(xiě)SD卡問(wèn)題裸板運(yùn)行單讀寫(xiě)與多讀寫(xiě)沖突
    發(fā)表于 05-14 06:07

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

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

    北京集特智能成為信創(chuàng)工委會(huì)技術(shù)活動(dòng)單位

    北京集特智能科技有限公司獲得中國(guó)電子工業(yè)標(biāo)準(zhǔn)化技術(shù)協(xié)會(huì)、信息技術(shù)應(yīng)用創(chuàng)新工作委員會(huì)(以下簡(jiǎn)稱(chēng)"信創(chuàng)工委會(huì)")聯(lián)合頒發(fā)的《信息技術(shù)應(yīng)用創(chuàng)新工作
    的頭像 發(fā)表于 03-04 17:34 ?388次閱讀
    北京集特<b class='flag-5'>智能</b>成為信<b class='flag-5'>創(chuàng)</b>工委會(huì)<b class='flag-5'>技術(shù)</b>活動(dòng)單位

    PCB企業(yè)創(chuàng)力三期項(xiàng)目順利投產(chǎn)

    近日,PCB企業(yè)四川創(chuàng)力電子科技股份有限公司三期(載板廠和特種板廠)順利投產(chǎn)。通過(guò)這個(gè)項(xiàng)目,創(chuàng)力公司成功地將業(yè)務(wù)范圍從單一的普通通孔多層板擴(kuò)展
    的頭像 發(fā)表于 01-15 14:20 ?629次閱讀
    主站蜘蛛池模板: 亚洲欧美视频在线| 午夜福利体验免费体验区| 日本激情在线| 在线高清电影理论片4399| 国产精品一久久香蕉国产线看| 奇米狠狠一区二区三区| 99久久久免费精品国产| 美艳人妻在厨房翘着屁股| 在线播放真实国产乱子伦| 黑兽在线观看高清在线播放樱花| 无羞耻肉动漫在线观看| 国产精品视频国产永久视频| 视频专区亚洲欧美日韩| 纯肉巨黄H爆粗口男男分卷阅读| 欧美自拍亚洲综合图区| 99久久免费看少妇高潮A片| 男人桶女人j的视频在线观看 | 国产99久久久国产精品成人| 强奸美女老师| 丰满的寡妇hd高清在线观看| 特级做A爰片毛片免费看108| 国产精品无码中文在线AV| 网友自拍偷拍| 花蝴蝶免费观看影视| 中国bdsmchinesehd| 龙泽罗拉av| SM双性精跪趴灌憋尿调教H| 人人碰79免费视频| 国产露脸A片国语露对白| 亚洲美女视频高清在线看| 久久在精品线影院| www免费看.男人的天堂| 少妇精油按摩| 精品国产原创在线观看视频| 最近日本字幕免费高清| 热热久久超碰精品中文字幕| 国产福利一区二区精品| 亚洲妈妈精品一区二区三区| 蜜柚视频在线观看全集免费观看| 丰满人妻无码AV系列| 野花4在线观看|