donkeyyun
驱动牛犊
驱动牛犊
  • 注册日期2003-12-07
  • 最后登录2006-08-07
  • 粉丝0
  • 关注0
  • 积分12分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2027回复:10

usb网卡驱动中实现固件自动下载的问题

楼主#
更多 发布于:2004-07-15 21:15
大家好,帮忙看看有没有遇到这样的问题:

    我们选择芯片cy7c68013,目的是做成usb无线网卡,现在usb接口已调通了,可以自动的加载固件,然后实现和应用程序的通信。

    现在,我用drivernetworks来做微端口驱动,这时的芯片也要实现固件的自动下载,就是说固件没有固化到片子里。

    在drivernetworks中有一个DownLoadFirmware()例程,如果需要用这个历程加载,请问各位buffer中的内容是什么? :(
 
    谢谢!
花落满怀,暗香盈袖,淡淡欢喜淡淡愁。
donkeyyun
驱动牛犊
驱动牛犊
  • 注册日期2003-12-07
  • 最后登录2006-08-07
  • 粉丝0
  • 关注0
  • 积分12分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-07-19 14:24
bingjie:

我用ControlPannel下载Firmware,加载可以成功的,可以正常工作。

你说的“
2。下载Firmware后驱动是否被卸载了,如没有卸载说明Firmware的机构可能不完整,无法被SIE运行”是什么意思?就是说我下载firmware后,usbnic.sys会被卸载掉? :(


还有就是我用bushound观察的数据如下:
18.0 CTL 40 a0 92 7f 00 00 01 00 VENDOR 1.1.0
18.0 DO 01 . 1.2.0
18.0 CTL 40 a0 00 e6 00 00 01 00 VENDOR 2.1.0
18.0 DO 01 . 2.2.0
18.0 CTL 40 a0 92 7f 00 00 01 00 VENDOR 3.1.0
18.0 DO 01 . 3.2.0
18.0 CTL 40 a0 00 e6 00 00 01 00 VENDOR 4.1.0
18.0 DO 01 . 4.2.0
18.0 CTL 40 a0 92 7f 00 00 01 00 VENDOR 5.1.0
18.0 DO 00 . 5.2.0
18.0 CTL 40 a0 00 e6 00 00 01 00 VENDOR 6.1.0
18.0 DO 00 . 6.2.0
18.0 CTL 40 a0 92 7f 00 00 01 00 VENDOR 7.1.0
18.0 DO 01 . 7.2.0
18.0 CTL 40 a0 00 e6 00 00 01 00 VENDOR 8.1.0
18.0 DO 01 . 8.2.0
18.0 CTL 40 a0 92 7f 00 00 01 00 VENDOR 9.1.0
18.0 DO 01 . 9.2.0
18.0 CTL 40 a0 00 e6 00 00 01 00 VENDOR 10.1.0
18.0 DO 01 . 10.2.0
18.0 CTL 40 a0 92 7f 00 00 01 00 VENDOR 11.1.0
18.0 DO 00 . 11.2.0
18.0 CTL 40 a0 00 e6 00 00 01 00 VENDOR 12.1.0
18.0 DO 00 . 12.2.0
18.0 CTL 40 03 00 10 00 00 00 00 VENDOR 13.1.0


然后就停在这了,可能是哪返回的状态不对?一直在等待,这是什么意思?
花落满怀,暗香盈袖,淡淡欢喜淡淡愁。
bingjie
驱动小牛
驱动小牛
  • 注册日期2001-08-15
  • 最后登录2007-11-29
  • 粉丝0
  • 关注0
  • 积分36分
  • 威望5点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-07-19 12:24
下载Firmware不成功可分几步从以下几个方面找原因
1。下载Firmware的过程是否都执行成功了,若不成功则Firmware本身可能有问题,可能包含不存在的地址或是驱动有误
2。下载Firmware后驱动是否被卸载了,如没有卸载说明Firmware的机构可能不完整,无法被SIE运行
3。设备管理器是否又发现设备重新加载设备驱动,如果没有发现,或是发现一个未知的设备,则很有可能是Firmware的初始化部分存在问题,重点查看TD_Init函数
或者可以拔掉板子上的EEprom加载Cypress的驱动用ControlPannel下载你的Firmware看看能否加载成功。
DDK中有一个UsbView小工具(有源码)可以查看USB设备描述符
donkeyyun
驱动牛犊
驱动牛犊
  • 注册日期2003-12-07
  • 最后登录2006-08-07
  • 粉丝0
  • 关注0
  • 积分12分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-07-18 23:17
bingjie,你好,我给你发信了,冒昧打搅了不好意思,我太着急了

我虽然用的两个函数,但写得基本一样,就是两次传送的地址不一样哦!

我的qq是17559564
能联系我吗?
花落满怀,暗香盈袖,淡淡欢喜淡淡愁。
bingjie
驱动小牛
驱动小牛
  • 注册日期2001-08-15
  • 最后登录2007-11-29
  • 粉丝0
  • 关注0
  • 积分36分
  • 威望5点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-07-18 22:57
   不知道你为什么会有两个函数TriggerFirmware和DownLoadFirmware,其实你只要把你这两个函数都换成EzLoader里的
DownloadIntelHex函数应该就可以了。
donkeyyun
驱动牛犊
驱动牛犊
  • 注册日期2003-12-07
  • 最后登录2006-08-07
  • 粉丝0
  • 关注0
  • 积分12分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-07-17 23:42
bingjie:
      你好,我在drivernetworks中都照这么做了,用hex2c生成firmware.c文件,trigger_code用的是ezloader中的loader。c
     然后

Ezusb_8051Reset(1);
status = TriggerFirmware(trigger_code);
if (status!=NDIS_STATUS_SUCCESS)
return status;
Ezusb_8051Reset(0);

DownLoadFirmware(firmware);
if (status!=NDIS_STATUS_SUCCESS)
return status;
Ezusb_8051Reset(1);
Ezusb_8051Reset(0);

但是板子加载了usbnic.SYS文件后,一直都没法进入设备管理器,也就根本没有正常工作 :(

查了好久,不知道问题会出在哪?
花落满怀,暗香盈袖,淡淡欢喜淡淡愁。
bingjie
驱动小牛
驱动小牛
  • 注册日期2001-08-15
  • 最后登录2007-11-29
  • 粉丝0
  • 关注0
  • 积分36分
  • 威望5点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-07-17 22:41
    为什么不自己写一个下载Firmware的函数呢,只要参照ezLoader做就可以了。Hex文件可以利用Cypress提供的小程序Hex2C转换成C源码INTEL_HEX_RECORD结构
NTSTATUS
DownloadFirmware(
IN PNC2KU_ADAPTER Adapter,
IN PINTEL_HEX_RECORD Firmware
)
{

NTSTATUS Status;

TRACE_IN( "DownloadFirmware" );
do
{
//
// First download loader firmware.  The loader firmware implements a vendor
// specific command that will allow us to anchor load to external ram
//
Status = Usb8051Reset( Adapter, 1 );
if( !NT_SUCCESS( Status ) )
break;

TRACE0( "Download loader" );
Status = DownloadIntelHex( Adapter, FirmwareLoader );
if( !NT_SUCCESS( Status ) )
break;

Status = Usb8051Reset( Adapter, 0);
if( !NT_SUCCESS( Status ) )
break;

//
// Now download the device firmware
//
TRACE0( "Download Firmware" );
Status = DownloadIntelHex( Adapter, Firmware );
if( !NT_SUCCESS( Status ) )
break;

Status = Usb8051Reset( Adapter , 1 );
if( !NT_SUCCESS( Status ) )
break;

Status = Usb8051Reset( Adapter, 0 );

}while( FALSE );

TRACE_OUT( "", Status );
return Status;
}
donkeyyun
驱动牛犊
驱动牛犊
  • 注册日期2003-12-07
  • 最后登录2006-08-07
  • 粉丝0
  • 关注0
  • 积分12分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-07-17 15:12
 看了ezloader的例子,感觉应该照这个改,但在drivernetwork中有什么不同?
有没有用过drivernetwork的高手指点一下
花落满怀,暗香盈袖,淡淡欢喜淡淡愁。
start
驱动小牛
驱动小牛
  • 注册日期2001-11-05
  • 最后登录2010-09-03
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望27点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-07-16 10:59
我记得ez-usb好像有例子介绍
second
spade7cn
驱动牛犊
驱动牛犊
  • 注册日期2004-07-13
  • 最后登录2010-08-12
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-07-15 23:55
是啊,我们也正在做同样的咚咚,遇到了类似的问题,希望高人指点!
donkeyyun
驱动牛犊
驱动牛犊
  • 注册日期2003-12-07
  • 最后登录2006-08-07
  • 粉丝0
  • 关注0
  • 积分12分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-07-15 21:22
还有种方法是不是可以修改inf文件,然后像usb驱动中做的一样用ezloader.sys来做,但这样网卡驱动中的inf文件怎么改 :(

哪位大哥能给些提示?

急哦 :P
花落满怀,暗香盈袖,淡淡欢喜淡淡愁。
游客

返回顶部