lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
阅读:2550回复:38

LikeDDK 请进

楼主#
更多 发布于:2004-08-20 12:09
你在调试中有一步是:连续读控制输出缓冲的N个字节,读出来的就是C0 08 80 06 00 01 00 00 40 00,程序里是怎么写的。
是 D12_ReadEndpoint吗?
不胜感激!!




-----------------------------
给分
wly76
驱动小牛
驱动小牛
  • 注册日期2004-08-12
  • 最后登录2008-04-24
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-08-20 12:32
当初调到这里的时候,也考虑到了这个问题,但没有深究,因为
加上固件程序的时候,这部分就变成了,我下位机发送的数据了。
LikeDDK
驱动牛犊
驱动牛犊
  • 注册日期2001-09-30
  • 最后登录2004-11-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-08-20 12:48
我没有用周立功的固件,我自己重写的,但是流程和他的是一样的。
1、SEND COMMAND 0x00 选择端点0
2、SEND COMMAND 0xF0 选择缓冲区
3、然后就可以续读了。

如果是周立功的程序,没错就是D12_ReadEndpoint。我看了他的汇编,基本就是按这个流程。

[编辑 -  8/20/04 by  LikeDDK]
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-08-20 14:02
还有一个问题要请教,  编程学的很烂。

定义的setup包数据缓冲区里面的变量的值,怎样和实际收到的setup
数据对应起来的呢? 收到不同setup包,变量的值就会改变。

谢谢!
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-08-20 14:08
to  wly76:
   我想知道你是怎么调出来的,写进去就成功了吗? 有什么循序渐进的步骤没有?
wly76
驱动小牛
驱动小牛
  • 注册日期2004-08-12
  • 最后登录2008-04-24
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-08-20 14:35
lhaih女士:
 

怎麽可能写进去就行了呢,不堪回首啊。我建议你在固件程序的
厂商请求部分,向缓冲区中写一些数据试一下,细节一下子想
不起来了,我感觉你的程序快要通啦,因为你今天的问题我通过
之后就一切顺畅了。
wly76
驱动小牛
驱动小牛
  • 注册日期2004-08-12
  • 最后登录2008-04-24
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-08-20 14:39
lhaih女士:不用再给分了,已经用一点超值的感觉了。
 
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-08-20 14:48
我的问题多着呢!我都不知道在哪里 。我的板子是自己做的,插上仿真器,就一直在嘟嘟的叫,不知道怎么回事?可能是什么原因呢
 
我的泡泡账号是;lhhwy_23,求二位聊天指导! qq 55143701
wly76
驱动小牛
驱动小牛
  • 注册日期2004-08-12
  • 最后登录2008-04-24
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-08-20 14:59
泡泡是什麽,qq不会用,上班不聊天,仿真器什么东东嘟嘟叫
wly76
驱动小牛
驱动小牛
  • 注册日期2004-08-12
  • 最后登录2008-04-24
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-08-20 15:09
把你的板子,程序发给我,我们探讨一下
         ceo@soundwle.com.cn
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-08-20 17:30
还有我的第二个问题呢,回答一下呀wly76。
其它的晚上我发给你。
LikeDDK
驱动牛犊
驱动牛犊
  • 注册日期2001-09-30
  • 最后登录2004-11-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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协议吧……
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-08-21 14:32
呵呵,还没好呢.
我建议你设一个缓冲区,将数据(SETUP和参数)放到那里,然后设断点,
就可以看到发送的数据了.
MOV R1, #??  ;缓冲区地址
MOV DPTR, #??  ;ENDPOINT0 BUFF地址
MOVX A, @DPTR
MOV @R1, A
新手上路,请多关照.
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-08-22 11:27
多谢LikeDDK和metalwing ! 问的问题已经明白了!

to metalwing:
  你有D12的汇编固件程序吗,能不能发给我调一调。


metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-08-22 13:41
我用的是ISP1581,不是D12,呵呵.
新手上路,请多关照.
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-08-22 15:36
 :(,好伤心。
    我的邮箱是wylhh555@yahoo.com.cn,希望能帮上忙的大侠,有D12的汇编固件程序的大虾帮忙!
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-08-22 21:22
我给你发了个D12的C语言固件程序,收到了吗?
新手上路,请多关照.
wly76
驱动小牛
驱动小牛
  • 注册日期2004-08-12
  • 最后登录2008-04-24
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-08-22 22:34
”大夫,我痛,告诉我怎么办吧”
“别着急,你先说你哪里怎么痛了“

”噢,哪里痛还不一样治啊,我肚子痛,快告诉我怎么办吧,我很着急的“
”别着急,再说说你昨天都干了些什么啊?“

”怎么跟昨天干什么还有关系?我昨天就干了我每天作的事情嘛,我觉得很正常,你怎么还不告诉我怎么办?不想说就别说“。
”别着急,你再想想,昨天作了什么跟平时不同的事情?“

”不同?好多都不同啊,我昨天上班没搭上公车打的的,上午没人给我打电话,比较古怪...“
”不是这些,我是问你有关吃饭啊,运动啊之类的“

”噢,这个啊,昨天晚上我吃了饺子,很好吃的喔“
”噢,吃了多少个饺子啊“

”嗯,80多个吧,噢,对了,晚上肚子就疼,一直到现在“
”噢,那你是吃撑了“


以上是我记忆中BOB老师写过的文章。如果你觉得这是个笑话的话,那我几乎
每天都会经历这类笑话。一个人会先问“我的Linux怎么xxx了,怎么办”,到
最后一步一步的诱导问题直至答案揭晓。你下来会遇到很多问题,你不知道去
哪里找答案。你觉得网上都是高手,你觉得高手就是你一站到那里他就知道你
有什么问题。他无所不知,会告诉你一个”绝招“一下解决你的问题。所以你
什么都不必多说,一句话的标题加一个”无内容“的内容。就等高手给你”绝
招“了。

可惜这样的事情从来没有发生过。

你的问题,不单纯程序的问题,把你的问题写的仔细点,包括硬件管教的状态,特别是goodlink的状态,邦你分析一下.
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
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脚为低。
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2004-08-23 12:23
你在你接你的设备的那个口先接一个设备(相似设备,如:你的是U盘,
就接一个好的U盘),这时,BUSHOUND出来一个设备,选中他,然后接你的
设备,那么,在那个设备口看到的就是你的设备的信息.
NO RESPOND就是他给你发了信息你没回应,你在你的程序里的中断处
理里设个断点,看进没进中断.如果进了,看是什么中断.然后在SETUP
中断设断点,看进没进SETUP中断,如果进了,看收到什么数据(将端点
0的BUFF里的数据读到一个暂存里,读完后看),第一次应该是GET
DEVICE DESCRIPTOR命令,看是不是,如果是的话,跟踪看他到了哪去,
有没有进入你的GET DEVICE DESCRIPTOR程序,如果进了,看他发了没
有.一步一步的来,找出问题.
新手上路,请多关照.
上一页
游客

返回顶部