阅读:2633回复:7
请教:USB的控制问题?
在USB系统中,设备永远不能主动给主机发送信息,那么当设备执行动作时,主机如何知道设备状态的改变呢?
是不是主机周期性的不停的向端点发送命令呢?比如同步传输时,是不是一直发送IN 指令给同步端点,然后每一帧产生一个SOF中断,来收取同步数据。 很弱的问题,只是看资料总看不明白,向大家请教!! |
|
沙发#
发布于:2001-06-17 17:13
我也问一个类似的问题。
现在用的是EZ-USB芯片,现在打算通过程序,往芯片上的RAM中写,遇到一些问题,请指教: 1,如何知道已经写到该芯片上的RAM中,比如能够检测到,芯片的RAM已经写入代码。 2,具体写进去的过程是怎么样的,介绍中,是通过Endpoint 0 的pipe 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也没开始写,希望能和你多切磋。 希望众高手多多指点我们这些菜鸟,快回答我的问题,我急呀。 |
|
地板#
发布于:2001-06-18 09:54
[QUOTE]原本由 wetty 发表
[B]在USB系统中,设备永远不能主动给主机发送信息,那么当设备执行动作时,主机如何知道设备状态的改变呢? 是不是主机周期性的不停的向端点发送命令呢?比如同步传输时,是不是一直发送IN 指令给同步端点,然后每一帧产生一个SOF中断,来收取同步数据。 很弱的问题,只是看资料总看不明白,向大家请教!! [/B][/QUOTE] 其他几种传输方式我没有用过,但Control Transfer是这样的。看USB Spec上的讲解,其他3中transfer好像也是这样。 |
|
|
地下室#
发布于:2001-06-18 14:48
希望有人继续讨论一下这个问题。
|
|
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。 至于如何写进去,在软件上,已经有现成的参数函数,当然对于理解低层,还是很有必要考虑到字节层次的。 希望多多联系,大家互相帮助。 |
|
|
6楼#
发布于:2001-06-20 19:10
资料里讲用开发工具里的EZ-USB Control Panel 就可以调试firmware.还可以通过I2C 端口连接LED indicator测试输出。
没有板子要写firmware是不是很困难,我都看了20天资料了,还是很模糊,真是郁闷。 下载的时候,程序和描述表是一起下载的吗?它们下到EZ-USB RAM以后,地址是如何区分的,描述表是不是自己定义的,用什么格式定义?希望各位高手指点 (Lvgx能不能留下QQ号,有空和你交流一下。 我的QQ号是35404402。) |
|
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分配问题。 |
|
|