英创信息技术ESM335x工控主板ISA总线DMA数据传输简介

网友投稿 237 2022-11-20

英创信息技术ESM335x工控主板ISA总线DMA数据传输简介

数据块读写功能是通过设备驱动的DeviceIoControl来完成的,需要用到以下数据结构:

typedef struct

{

PBYTE pWriteBuf; //ISA写数据buffer, 只能一个buffer有效

DWORD dwDataLength; //length of data in byte

DWORD dwDataPortOfs; //读写的起始地址 = 0x00 – 0xFF

DWORD dwInc; //= 0: 固定地址, > 0: 读写后地址自动增加

} ISA_BLOCK_INFO, *PISA_BLOCK_INFO;

在上述数据结构中:

pReadBuf为进行读操作时的数据buffer,读操作具体为8-bit数据读。注意:数据结构中,pReadBuf和pWrietBuf只能有一个有效。

pWriteBuf为进行写操作时的数据buffer,写操作具体为8-bit数据读。注意:数据结构中,pReadBuf和pWrietBuf只能有一个有效。

dwDataPortOfs为读写的端口地址,范围为0x00 – 0xFF。

dwDataLength为本数据块读或写的字节数。

dwInc为每次读写后,地址的自动增量,dwInc = 0:表示固定地址读写,dwInc > 0: 表示每次读写后,地址会自动增加dwInc,作为下一次的读写地址。当地址超过0xFF时,会折回到地址0x00。

采用DMA进行数据传输可以进一步提高ISA总线的数据传输速度,同时大大降低总线数据传输对CPU负载率的影响。当不使用DMA进行数据传输,ESM335x CPU全速运行时(CPU负载100%),ISA总线的读写速度在3MB/s左右,使用DMA方式后,ESM335x ISA总线速度可达到5MB/s左右,扣除驱动程序必要处理开销,在应用层实测的数据块读速度为4.17MB/s、数据块写速度为4.5MB/s,而此时CPU的负载率在15%左右。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Hadoop之—— WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform...
下一篇:Hadoop之——hadoop2.2.0集群搭建
相关文章

 发表评论

暂时没有评论,来抢沙发吧~