zj0127
驱动牛犊
驱动牛犊
  • 注册日期2004-02-19
  • 最后登录2007-10-17
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1321回复:11

紧急!!!usb在主板的问题

楼主#
更多 发布于:2004-02-26 15:57
usb数据传输接入主板时,运用什么技术尽量不占用cpu时间???它和内存的数据交换是采用DMA吗???我看到说主板的主控制器是接入PCI总线和PC总线相连,请大虾赐教详解,欢迎大家讨论!谢谢!!!



zj0127
驱动牛犊
驱动牛犊
  • 注册日期2004-02-19
  • 最后登录2007-10-17
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-02-27 14:47
主板usb主控制器和usb设备是主从式结构,数据传输时必然耗费cpu资源,它不是DMA方式。数据量越大,占用主板cpu时间越多。我们在上位机采用windows多线程编程,以免同时运行其他大程序时速度变慢。以上是一点愚见。
请大虾们赐教!!!


  :D :D
zj0127
驱动牛犊
驱动牛犊
  • 注册日期2004-02-19
  • 最后登录2007-10-17
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-02-27 15:33
我看到有些usb芯片介绍有 高速的DMA接口,不太明白。通常是在主板上外部和内存数据交换实施DMA,我想请教:是不是主板usb主控制器选用高速的DMA接口的芯片,就可以和usb外设实现DMA?????
zj0127
驱动牛犊
驱动牛犊
  • 注册日期2004-02-19
  • 最后登录2007-10-17
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-02-27 16:45
大虾们快进来呀,
 :( :( :(,
请问usb芯片的 高速DMA接口的应用情况???
它的FIFO可以和MCU/DSP直接相连,DMA用在那些接口呀???
请大家帮忙呀!!!谢谢!!!
zj0127
驱动牛犊
驱动牛犊
  • 注册日期2004-02-19
  • 最后登录2007-10-17
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-02-27 17:13
强烈恳求大师们前来灌水!!!
 :( :( :( :( :(
zj0127
驱动牛犊
驱动牛犊
  • 注册日期2004-02-19
  • 最后登录2007-10-17
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-03-04 09:31
 :(很遗憾呀,由于USB2.0数据采集卡比较占用CPU时间,我的赛羊2G被耗掉接近40%的资源,加上显示就快60%了,而我还要同时在后台实时处理其它任务,这样势必导致整个系统的实时性不好,老板决定暂缓USB,采用PCI采集卡,请大家帮我想想办法,运用USB有啥法子解决实时性的难题???谢谢了!!!


我对USB技术一片痴情呀。
zmwk
驱动中牛
驱动中牛
  • 注册日期2001-05-15
  • 最后登录2009-04-05
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望51点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-03-05 23:42
DMA接口是为了能够让外设不经CPU干预(实际上是少量干预),就能将数据转到内存中去,并通知CPU操作结果(是否成功等)。CPU不干这个事,那得有别人干。谁呀?DMA控制器。虽然CPU闲着了,可以做一些运算或与被释放总线无关的事情,但在很多时候它也无事可做。所以如果CPU的CACHE越大越好,因为这时它可以关起门来在CACHE上忙活。
上面说的是PC上面的。可见与主板(一方面硬件,一方面BIOS)和CPU的关联很大。建议搞一个双CPU的主板试试,如果银子足的话:)

在设备方面,如果有条件也可以采用DMA控制器。但最好MCU或DSP片内有足够大的内存做缓存。这样数据可以预先备好。IN流程会是这样:
1。MCU忙着准备数据在片内RAM,同时DMA控制器忙着给USB芯片灌数据(从片外RAM),此时USB芯片也在发数据。
2。MCU忙着把片内数据倒到片外,同时USB芯片忙着往外发。
3。又回到1。
要想充分发挥USB的带宽,必须保证MCU和DMA控制器足够快,以使得在1。的阶段USB还在发数据。
这就是INTEL它们那些做CPU的所谓LINE(流水线处理)。完全资本主义呀,不让人休息啊!
A strong man can save himself. A great man can save another.
highbar
驱动牛犊
驱动牛犊
  • 注册日期2004-02-10
  • 最后登录2004-03-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-03-06 12:39
laoda,usb芯片在这里是指host上的呢,还是设备上的呢?
ths!
zj0127
驱动牛犊
驱动牛犊
  • 注册日期2004-02-19
  • 最后登录2007-10-17
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-03-06 13:55
zmwk说得有道理,
我现在遇到的是pc机处理usb外设传来的数据,因为比较耗费CPU的问题,我用usb2.0采集卡传输速度能达到30M左右,主要是进入PC机后,由于不是采用DMA,比较耗CPU资源而导致失时性的难题。
我在想,如果主板上的USB主控制器能利用上DMA,是不是就可以和内存实施DMA,如果不是,那么有些USB微处理器带的DMA接口是不是只能在外设电路中运用?还是其他呢?请指点迷津,谢谢!!!
 :(
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-03-06 14:07
usb中的dma主要是指设备芯片,如果要想在上位机上用dma,其实就是用dma的方式来转存数据!
设备方的数据必须经过host controller,你获得数据后可以有多种方法处理,最常用的方法就是从驱动返回到应用程序再写到文件里,这样速度越高占用cpu时间越多,而且像你那样达到30M的(是B还是b?),硬盘已经吃不消了,因此不光是usb的问题。

我想你可以开一个很大的虚拟内存(我知道pci上经常这么做),从驱动来的数据直接放到内存里去,这样i/o管理器会把数据直接写到里面,省掉了一次拷贝和写硬盘这两个过程,效率很提高不少。
zj0127
驱动牛犊
驱动牛犊
  • 注册日期2004-02-19
  • 最后登录2007-10-17
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-03-06 17:28
jinghuiren分析得不错,我的问题不出在传输速度上,而在于PC进行数据处理时,耗费CPU的资源比较多,使我的整个系统(不光是处理USB数据)的实时性不好,
jinghuiren说的PCI可以开虚拟内存,我想是因为PCI本身的硬件机制的原因吧,它可以通过编写驱动程序来实现吗?还是其他呢??   谢谢!

zj0127
驱动牛犊
驱动牛犊
  • 注册日期2004-02-19
  • 最后登录2007-10-17
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-03-08 19:58
关于usb主从式的协议架构,占用PC机CPU资源问题,我想是不是协议本身有改进的余地(不能光是传输速度的提高),或者USB主控制器硬件机制有完善的地方,因为和上位机采用DMA方式,就可以更好地节省CPU资源,在某些应用场合,是很有现实意义吧,请大家来讨论。
 :)
游客

返回顶部