主题 : u-boot,Windows下使用DNW下载文件时容易蓝屏原因及解决方法 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 27461
精华: 0
发帖: 10
金钱: 50 两
威望: 10 点
贡献值: 0 点
综合积分: 20 分
注册时间: 2010-08-26
最后登录: 2018-07-15
楼主  发表于: 2010-12-11 19:54

 u-boot,Windows下使用DNW下载文件时容易蓝屏原因及解决方法

通过u-boot下载文件时,使用Windows下DNW软件,一不小心电脑就会蓝屏。一般认为是Windows USB驱动的问题,其实最主要的原因还是u-boot程序的问题。

电脑蓝屏的原因就是Windows USB驱动碰到了无法处理的异常情况,比如u-boot在写nand flash时是无法接收从USB传送过来的数据的,这时如果用户使用DNW通过USB往开发板烧写镜像时,DNW就会卡在那里,一般这种情况下复位开发板电脑就可能出现蓝屏,因为Windows USB驱动不知道该如何处理这种异常情况。

下面谈谈解决方法:

Windows USB驱动碰到了无法处理的异常情况导致电脑蓝屏是Windows内核的一种自我保护方式,在linux操作系统上就不会出现这种情况。当然放弃Windows而转向linux肯定不是最好的解决方法。

所以最好的解决方法之一就是修改u-boot,根据USB2.0协议,当USB Device无法处理USB Host发送过来的数据包时就应该发送一个stall数据包以作为回应,而u-boot显然没有这么做,结果Windows就不知道该怎么办了,然后一急之下就蓝屏了。

当然我并不是仅仅只经过理论分析就马上作出上面的结论,而是通过实验验证的。我将u-boot移植到ADS1.2下,并修改了USB驱动部分,当设备忙或其它原因而无法处理USB Host发送过来的数据包时就发送一个stall数据包以作为回应。结果之前经常出现的蓝屏问题就再也没有出现了。

我是在S3C2440开发板下进行测试的,读者可以点击下面的链接下载测试源代码来进行验证:

http://www.multisilicon.com/ml/bootloader/

级别: 新手上路
UID: 27461
精华: 0
发帖: 10
金钱: 50 两
威望: 10 点
贡献值: 0 点
综合积分: 20 分
注册时间: 2010-08-26
最后登录: 2018-07-15
1楼  发表于: 2010-12-17 09:23
用友善之臂提供的USB驱动,也不会出现电脑蓝屏。