wetty
驱动牛犊
驱动牛犊
  • 注册日期2001-06-14
  • 最后登录2004-05-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2559回复:7

请教:USB的控制问题?

楼主#
更多 发布于:2001-06-17 11:20
在USB系统中,设备永远不能主动给主机发送信息,那么当设备执行动作时,主机如何知道设备状态的改变呢?
是不是主机周期性的不停的向端点发送命令呢?比如同步传输时,是不是一直发送IN 指令给同步端点,然后每一帧产生一个SOF中断,来收取同步数据。
很弱的问题,只是看资料总看不明白,向大家请教!!
lvgx
驱动牛犊
驱动牛犊
  • 注册日期2001-05-27
  • 最后登录2018-05-30
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望100点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-06-17 17:13
  我也问一个类似的问题。
  现在用的是EZ-USB芯片,现在打算通过程序,往芯片上的RAM中写,遇到一些问题,请指教:
  1,如何知道已经写到该芯片上的RAM中,比如能够检测到,芯片的RAM已经写入代码。  
  2,具体写进去的过程是怎么样的,介绍中,是通过Endpoint 0
的pipe 0,具体到把代码写到那一个地址。不知能够解释更加详细一点?
 
lvgx
wetty
驱动牛犊
驱动牛犊
  • 注册日期2001-06-14
  • 最后登录2004-05-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-06-18 09:37
你这个应该是EZ-Enumeratio and Renumeration的问题吧。在写之前,an ez-usb controll bit called "renum"=0,由ez-usb core来响应端点0,并控制向ram里面写入代码。写完以后,"renum"=1,控制权交给8051,由8051执行代码,并相应端点0。
关于写入地址,在“firmware download”request中,第二三两个字节是代码写入的starting address.
不知道我的回答对不对,我也是刚刚开始做usb,用ez-usb 2131q芯片,看了二十天资料,板子还没下来,firmware也没开始写,希望能和你多切磋。

希望众高手多多指点我们这些菜鸟,快回答我的问题,我急呀。
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-06-18 09:54
[QUOTE]原本由 wetty 发表
[B]在USB系统中,设备永远不能主动给主机发送信息,那么当设备执行动作时,主机如何知道设备状态的改变呢?
是不是主机周期性的不停的向端点发送命令呢?比如同步传输时,是不是一直发送IN 指令给同步端点,然后每一帧产生一个SOF中断,来收取同步数据。
很弱的问题,只是看资料总看不明白,向大家请教!! [/B][/QUOTE]
其他几种传输方式我没有用过,但Control Transfer是这样的。看USB Spec上的讲解,其他3中transfer好像也是这样。
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
wetty
驱动牛犊
驱动牛犊
  • 注册日期2001-06-14
  • 最后登录2004-05-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-06-18 14:48
希望有人继续讨论一下这个问题。
lvgx
驱动牛犊
驱动牛犊
  • 注册日期2001-05-27
  • 最后登录2018-05-30
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望100点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-06-19 21:56
  恩,可能你也是从没有开发版开始做的吧,那样很累的,许多东西,需要自己去摸索。
  昨天我再仔细看了原文,顺序不是这样的。首先应该是通过下栽程序(具体可以见EZ-USB的例程),先把CPUCS这个置1,相当于在给device发一个URB,有内带参数的函数控制。然后是下载一个固定数据结构的数组。然后是再发一个URB,把CPUCS置0,让8051来控制device.
  现在关键是不知道如何知道已经把内容给写进RAM了,我设想了几个方案,抛砖引玉:
   首先可以烧一个ROM固定程序,然后在自己的程序中,写一个与之一致的程序代码,看看它们的反应是否一样。这是一个笨办法了,最初的想法。
   其次可以根据对写进RAM的内容,如果有可能,可以再读出来,或者写进某个地址的字节后,看片子有什么反应。等我做到那一步,我
再写清楚一点。
  再次,可以在EZ-USB的管脚上接个发光的管子什么的,然后写进去的firmware能够弄出点反映。
  希望还有高手提出更简便的测试。
  关于顺序问题,是应该由下载程序控制CPUCS这个字节,然后是让
8051工作,8051对某些位置位,实现了disconnect和reconnect.
然后是ReNum置位==1。
  至于如何写进去,在软件上,已经有现成的参数函数,当然对于理解低层,还是很有必要考虑到字节层次的。
   希望多多联系,大家互相帮助。
  
 
  
  

  
lvgx
wetty
驱动牛犊
驱动牛犊
  • 注册日期2001-06-14
  • 最后登录2004-05-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2001-06-20 19:10
资料里讲用开发工具里的EZ-USB Control Panel 就可以调试firmware.还可以通过I2C 端口连接LED indicator测试输出。
没有板子要写firmware是不是很困难,我都看了20天资料了,还是很模糊,真是郁闷。


下载的时候,程序和描述表是一起下载的吗?它们下到EZ-USB RAM以后,地址是如何区分的,描述表是不是自己定义的,用什么格式定义?希望各位高手指点


(Lvgx能不能留下QQ号,有空和你交流一下。
我的QQ号是35404402。)
lvgx
驱动牛犊
驱动牛犊
  • 注册日期2001-05-27
  • 最后登录2018-05-30
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望100点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2001-06-21 11:41
  
   我已经给你信箱写信,查收。
   看了几天资料,还是有几个问题,已经是相联系起来,看来
当时看得还不仔细。而且这EZ-USB和8051有不同的地方,还有本人对8051不熟悉,因此增加了不少难度。;(
   顺便我问问有关,EZ-USB的memory分配问题,如何来指示三个区域的RAM和两个ROM的读写以及分配问题。
   我们现在是不在EZ-USB的开发板上研究,只是有一个芯片2131Q。
因此需要仔细看资料,根据我的理解,对于下载firmware,过程好象是这样的:首先是core接管Endpoint0,那么host应该得到的是default device descriptor,然后host configure,然后是通过pipe0,以及指令(包含了firmware),下载到RAM(内外之分,不知这个开发板是什么样的,有机会看看。)然后是重新连接,这回是8051接管,然后是再得到描述表,然后进行正常的configure.
  那么看来,应该是在firmware中,就写入了设备的descriptor,因为没有开发板,对于那些firmware暂时还没有仔细看,好象是需要下载到内外的RAM,那么就牵扯到以上的memory分配问题。
  


  
    
  
lvgx
游客

返回顶部