阅读:2550回复:38
LikeDDK 请进
你在调试中有一步是:连续读控制输出缓冲的N个字节,读出来的就是C0 08 80 06 00 01 00 00 40 00,程序里是怎么写的。
是 D12_ReadEndpoint吗? 不胜感激!! ----------------------------- 给分 |
|
沙发#
发布于:2004-08-20 12:32
当初调到这里的时候,也考虑到了这个问题,但没有深究,因为
加上固件程序的时候,这部分就变成了,我下位机发送的数据了。 |
|
板凳#
发布于:2004-08-20 12:48
我没有用周立功的固件,我自己重写的,但是流程和他的是一样的。
1、SEND COMMAND 0x00 选择端点0 2、SEND COMMAND 0xF0 选择缓冲区 3、然后就可以续读了。 如果是周立功的程序,没错就是D12_ReadEndpoint。我看了他的汇编,基本就是按这个流程。 [编辑 - 8/20/04 by LikeDDK] |
|
地板#
发布于:2004-08-20 14:02
还有一个问题要请教, 编程学的很烂。
定义的setup包数据缓冲区里面的变量的值,怎样和实际收到的setup 数据对应起来的呢? 收到不同setup包,变量的值就会改变。 谢谢! |
|
地下室#
发布于:2004-08-20 14:08
to wly76:
我想知道你是怎么调出来的,写进去就成功了吗? 有什么循序渐进的步骤没有? |
|
5楼#
发布于:2004-08-20 14:35
lhaih女士:
怎麽可能写进去就行了呢,不堪回首啊。我建议你在固件程序的 厂商请求部分,向缓冲区中写一些数据试一下,细节一下子想 不起来了,我感觉你的程序快要通啦,因为你今天的问题我通过 之后就一切顺畅了。 |
|
6楼#
发布于:2004-08-20 14:39
lhaih女士:不用再给分了,已经用一点超值的感觉了。
|
|
7楼#
发布于:2004-08-20 14:48
我的问题多着呢!我都不知道在哪里 。我的板子是自己做的,插上仿真器,就一直在嘟嘟的叫,不知道怎么回事?可能是什么原因呢
我的泡泡账号是;lhhwy_23,求二位聊天指导! qq 55143701 |
|
8楼#
发布于:2004-08-20 14:59
泡泡是什麽,qq不会用,上班不聊天,仿真器什么东东嘟嘟叫
|
|
9楼#
发布于:2004-08-20 15:09
把你的板子,程序发给我,我们探讨一下
ceo@soundwle.com.cn |
|
10楼#
发布于:2004-08-20 17:30
还有我的第二个问题呢,回答一下呀wly76。
其它的晚上我发给你。 |
|
11楼#
发布于:2004-08-21 00:16
to lhaih
"定义的setup包数据缓冲区里面的变量的值,怎样和实际收到的setup 数据对应起来的呢? 收到不同setup包,变量的值就会改变。" 如果你有ZLG的程序的话,你会看到: typedef struct _device_request { unsigned char bmRequestType; unsigned char bRequest; unsigned short wValue; unsigned short wIndex; unsigned short wLength; } DEVICE_REQUEST; 这个长8bytes的结构就是USB的标准请求的setup包。其中每个变量的具体含义可以在USB1.1协议里面找到,我就不抄书了。如果你用的是D12这芯片的话,注意缓冲区数据的结构: 字节1 保留可为任意值 字节2 数据字节的数目/长度 字节3 数据字节1 字节4 数据字节2 即是从字节3开始才是你的setup包的头一个字节。 比如:D12收到Get Descriptor后,读控制输出端点缓冲区,数据是C0 08 80 06 00 01 00 00 40 00…… 那80开始就是你的setup包(get descriptor). 即: bmRequestType =0x80 bRequest = 0x06 wValue = 0x0100 (注意接收回来的是先低位后高位,所以wValue不是0x0001) wIndex = 0x0000 wLength = 0x0040 他们的具体含义,参考USB协议吧…… |
|
12楼#
发布于:2004-08-21 14:32
呵呵,还没好呢.
我建议你设一个缓冲区,将数据(SETUP和参数)放到那里,然后设断点, 就可以看到发送的数据了. MOV R1, #?? ;缓冲区地址 MOV DPTR, #?? ;ENDPOINT0 BUFF地址 MOVX A, @DPTR MOV @R1, A |
|
|
13楼#
发布于:2004-08-22 11:27
多谢LikeDDK和metalwing ! 问的问题已经明白了!
to metalwing: 你有D12的汇编固件程序吗,能不能发给我调一调。 |
|
14楼#
发布于:2004-08-22 13:41
我用的是ISP1581,不是D12,呵呵.
|
|
|
15楼#
发布于:2004-08-22 15:36
:(,好伤心。
我的邮箱是wylhh555@yahoo.com.cn,希望能帮上忙的大侠,有D12的汇编固件程序的大虾帮忙! |
|
16楼#
发布于:2004-08-22 21:22
我给你发了个D12的C语言固件程序,收到了吗?
|
|
|
17楼#
发布于:2004-08-22 22:34
”大夫,我痛,告诉我怎么办吧”
“别着急,你先说你哪里怎么痛了“ ”噢,哪里痛还不一样治啊,我肚子痛,快告诉我怎么办吧,我很着急的“ ”别着急,再说说你昨天都干了些什么啊?“ ”怎么跟昨天干什么还有关系?我昨天就干了我每天作的事情嘛,我觉得很正常,你怎么还不告诉我怎么办?不想说就别说“。 ”别着急,你再想想,昨天作了什么跟平时不同的事情?“ ”不同?好多都不同啊,我昨天上班没搭上公车打的的,上午没人给我打电话,比较古怪...“ ”不是这些,我是问你有关吃饭啊,运动啊之类的“ ”噢,这个啊,昨天晚上我吃了饺子,很好吃的喔“ ”噢,吃了多少个饺子啊“ ”嗯,80多个吧,噢,对了,晚上肚子就疼,一直到现在“ ”噢,那你是吃撑了“ 以上是我记忆中BOB老师写过的文章。如果你觉得这是个笑话的话,那我几乎 每天都会经历这类笑话。一个人会先问“我的Linux怎么xxx了,怎么办”,到 最后一步一步的诱导问题直至答案揭晓。你下来会遇到很多问题,你不知道去 哪里找答案。你觉得网上都是高手,你觉得高手就是你一站到那里他就知道你 有什么问题。他无所不知,会告诉你一个”绝招“一下解决你的问题。所以你 什么都不必多说,一句话的标题加一个”无内容“的内容。就等高手给你”绝 招“了。 可惜这样的事情从来没有发生过。 你的问题,不单纯程序的问题,把你的问题写的仔细点,包括硬件管教的状态,特别是goodlink的状态,邦你分析一下. |
|
18楼#
发布于:2004-08-23 12:02
to metalwing : 信箱是dieundersword吗,是的话,就已经收到了。谢谢!
也谢谢likeddk,邮件也收到了。 我的硬件和目前的情况详细如下:我做的是d12+51 D12采用5V电源供电,usb接口上的VCC管脚接10k电阻到地。d12的cs接地,RST接高电平,A0接高电平,ETO 和DMACK接高电平。WR RD ALE接51对应的管脚。suspend接P1.2,INT接P3.2同时加10k上拉电阻。 D12能正常工作,用F3命令可以实现改变时钟频率。 问题1:写入固件后,插上电缆,用bushound以前看到的是get_descriptor,然后no respond。现在看到的是class ,no respond。看到的不是设备的活动。clementzhao 说; 原因可能是两个1、没选对设备 2、设备没有接收到数据。在bushound里设备只有bus root 可以选。至于没收到数据,不知道是什么原因。硬件就是上面说的了。指示灯一直没有反应,INT脚为低。 |
|
19楼#
发布于:2004-08-23 12:23
你在你接你的设备的那个口先接一个设备(相似设备,如:你的是U盘,
就接一个好的U盘),这时,BUSHOUND出来一个设备,选中他,然后接你的 设备,那么,在那个设备口看到的就是你的设备的信息. NO RESPOND就是他给你发了信息你没回应,你在你的程序里的中断处 理里设个断点,看进没进中断.如果进了,看是什么中断.然后在SETUP 中断设断点,看进没进SETUP中断,如果进了,看收到什么数据(将端点 0的BUFF里的数据读到一个暂存里,读完后看),第一次应该是GET DEVICE DESCRIPTOR命令,看是不是,如果是的话,跟踪看他到了哪去, 有没有进入你的GET DEVICE DESCRIPTOR程序,如果进了,看他发了没 有.一步一步的来,找出问题. |
|
|
上一页
下一页