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

d12固件调试:收到reset中断后。。 (老朋友们来帮忙呀)

楼主#
更多 发布于:2004-09-06 13:56
设备上电后,先产生reset 中断,这个中断能收到,但是为什么进入不到,主循环的程序中呢?
  if(i_st & 0x40)
           LED=0;
bEPPflags.bits.bus_reset = 1;
  中断里加了一个指示灯,灯亮,说明收到了中断,也置为高了。
下一步应该到了下面的主循环才对呀!这样 suspend 才会置高,产生挂起,对不?
  
    while( TRUE )
{
  if (bEPPflags.bits.bus_reset)
  {
DISABLE;
bEPPflags.bits.bus_reset = 0;
ENABLE;
D12SUSPD = 1;
   } // if bus reset
  
    为什么进不去呢。  
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-09-09 15:39
1 是的,重起机子时,不管设备是否运行,都出现那个提示。
2 USBVIEW 左边没有提示错误,右边是我上边贴的描述符。
3 是的,插上 ,设备管理器里出现,拔下,没有了。
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-09-09 15:05
厂商请求处理不会影响到枚举过程.
在设备管理器中你的设备属性里是否是正常工作?在USB VIEW里左边
设备框中你的设备是否正常(没有出现枚举错误提示)?一般来说,问你
要驱动就说明枚举是正确的.
"计算机开机时,出现 “至少有一个驱动或**出现错误”"是什么意
思?是说在你重起机子时,不管设备是否正常运行,都报错还是怎么的?
一般来说,当你接上设备时,PC发现新硬件,并安装驱动(或已经装上);
拔下设备就是删除设备(在设备管理器中).再插上,又重来.

[编辑 -  9/9/04 by  metalwing]
新手上路,请多关照.
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-09-09 14:43
然后提示要装驱动, 安装正确, 设备管理器可以看到PHILIPS PDIUSBD12 SMART  EVALUATION BROARD ,没有出现没举错误,但是计算机开机时,出现 “至少有一个驱动或**出现错误”。

用USB VIEW看设备得到下面的:
Device Descriptor:
bcdUSB:             0x0110
bDeviceClass:         0xDC
bDeviceSubClass:      0x00
bDeviceProtocol:      0x00
bMaxPacketSize0:      0x10 (16)
idVendor:           0x0471 (Philips)
idProduct:          0x0666
bcdDevice:          0x0100
iManufacturer:        0x00
iProduct:             0x00
iSerialNumber:        0x00
bNumConfigurations:   0x01

ConnectionStatus: DeviceConnected
Current Config Value: 0x01
Device Bus Speed:     Full
Device Address:       0x02
Open Pipes:              4

Endpoint Descriptor:
bEndpointAddress:     0x81
Transfer Type:   Interrupt
wMaxPacketSize:     0x0010 (16)
bInterval:            0x01

Endpoint Descriptor:
bEndpointAddress:     0x00
Transfer Type:     Control
wMaxPacketSize:     0x0507 (1287)
wInterval:          0x0301
bSyncAddress:         0x10

Endpoint Descriptor:
bEndpointAddress:     0x00
Transfer Type: Isochronous
wMaxPacketSize:     0x0000 (0)
wInterval:          0x0000
bSyncAddress:         0x07

Endpoint Descriptor:
bEndpointAddress:     0x05
Transfer Type:        Bulk
wMaxPacketSize:     0x4002 (16386)
wInterval:          0x0A00
bSyncAddress:         0x00

没有看到设备描述符。

我在固件中没有加 厂商请求处理,不知道他们有什么作用,对固件有影响吗?

也没有加下面的这些,程序中没有用到呀
code char * _NAME_USB_REQUEST_DIRECTION[] =
{
"Host_to_device",
"Device_to_host"
}

code char * _NAME_USB_REQUEST_RECIPIENT[] =
{
"Device",
"Interface",
"Endpoint(0)",
"Other"
};

code char * _NAME_USB_REQUEST_TYPE[] =
{
"Standard",
"Class",
"Vendor",
"Reserved" }
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-09-09 14:09
奇怪.
然后他干了什么事?问你要驱动?安装了?正确了?设备正常?用USB VIEW看你的设备是否正常(是否提示枚举错误).如果都正常,那就不用
管他了.
新手上路,请多关照.
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-09-09 13:12
我删掉了一些总线上的没用的,有用的就是下面了
附件名称/大小 下载次数 最后更新
2004-09-09_intest3suc.txt (3KB)  0
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-09-09 12:27
没收到?为什么?不明白.不清楚,不理解,不...
能否把你用BUSHOUND采集到的数据(HUB和DEVICE端的都要)传上来?
新手上路,请多关照.
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-09-09 12:04
奇怪的现象和烧到片子里程序执行不对的问题都已经解决。原因是USB接口的地线接错了,真是太粗心了。真想 打自己一顿。

TO metalwing: 没有收到,最后收到的就是,80,06,00,02,00,00,09,00返回09 02 2e 00 01 01 00 e0 。啥原因呢??

metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-09-09 10:38
从你的现象上看,好象是已经枚举了,但可能枚举不完全.
HOST给你发了80,06,00,02,00,00,FF(或大于2E),00了吗?你
回复了吗?
新手上路,请多关照.
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-09-09 10:09
注: 仿真器调试时,已经装上了驱动。
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-09-09 10:03
1 goodlink一直亮着。从bushound抓到的数据来看,有Get
Configuration Descriptor (80,06,00,02,00,00,09,00),返回09 02 2e 00  01 01 00
e0  ....。然后就没有了,没有看到读取全部的描述符。用busview可以看到设备描述符和端点描述,没有看到配置描述符。  但是驱动装上了,这样有问题吗?

2 以上是仿真器的结果,写在片子里,就好像没有回应GET_DESCRIPTION。我在程序开始加了延时好像没有改善。应该怎么办呢,急死了!

3 奇怪的现象,我不上电插上电缆开始是不会发现设备的,这也是正确的,但是过了大概30秒后就会发现设备,但仅仅能维持几十秒钟,就不见了。过一会出现了,一直这样。直到送电。
          
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-09-08 10:03
结果正确.那你对中断进行处理了吗?
新手上路,请多关照.
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-09-08 09:48
清中断后(ep_last), MCU中断脚 p3.2为高了,中断被清了。这个结果对还是不对呀。
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-09-08 08:22
你也应该可以看到MCU的中断(P3口).看看在你清中断后,USB控制芯片
和MCU中断是否被清了.
新手上路,请多关照.
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-09-07 21:38
看到了  中断寄存器为 1100 0001 ,收到了reset 和 suspend和ep0 out  中断.
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-09-07 21:24
我也用的伟福的仿真器,
可我不知道d12的中断寄存器和mcu的寄存器有什么对应关系,怎么看呀,请求指点。
 
虽然没看到寄存器的状态,但可以知道收到了 reset 和 suspend 中断,也可以进入ep0 rx()中断,设置端点可以走到bEPPflags.bits.setup_packet = 1 这一步,但是进不了主循环中,
跟踪发现,走到中断程序的最后就不走了。郁闷死了!

metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-09-07 18:03
我不知道你的程序,所以也就不知道该怎么走.你用的是什么仿真器?
我用的是伟福仿真器,可以观察到MCU内各寄存器的状态,我想你的也
应该可以.你单步跟踪程序,并观察中断端口的状态,看看在你收到中
断时是什么中断,清中断寄存器后,中断端口又是什么状态.
新手上路,请多关照.
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-09-07 17:44
我正在用仿真器,感觉程序怎么在ep0 out()里瞎跑,跟着跟着又进了中断程序。不明白怎么回事。

   我想知道 如果主机发送了setup包,程序在ep0_rxdone()里应该是按怎样的顺序走的
wly76
驱动小牛
驱动小牛
  • 注册日期2004-08-12
  • 最后登录2008-04-24
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-09-07 17:26
老朋友快挂了,自己顶下,先。
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2004-09-07 16:59
你没用仿真器吗?用仿真器跟一下就可以了嘛.
新手上路,请多关照.
上一页
游客

返回顶部