首先是安装USB下载驱动,这个驱动事先我已经确定是没有问题的,因为之前的台式机同样是win7系统且运行良好。并且还成功烧写过一次内核镜像。Win7下USB下载驱动下载(理论上这个驱动可能不是开发板间通用的,这里是TQ2440)
虽然前边的USB转串口驱动弄好以后,还是使我搁置了两天,因为我用USB通过DNW往开发板上下载东西时会报如下错误:
Now, Downloading [ADDRESS:30000000h,TOTAL:6904138]
RECEIVED FILE SIZE: 0
也不是报错了,就是USB端收不到数据。也是自己的愚昧无知造成了如此低级的错误,因为我用的USB hub ,通俗点就是USB集线器,比较搞linux 驱动的,hub还是比集线器听起来亲切一些。毕竟笔记本上的usb口少,本人的更是少之又少。3个,一个鼠标;一个键盘(做程序的怎么可以忍受委屈在notebook的keyboard下);剩一个肯定是不够用来叉USB转串口和USB下载线的。所以为了移动方便,我当然是把开发相关的连线都连在hub上了。这正好就是罪恶的根源,耶稣惩罚我了。使下载时一直会爆出上述的错误:
RECEIVED FILE SIZE: 0
问题分析:(个人猜测的原因,还没了解过hub的驱动,了解后再回来做肯定回答)
USB hub是让多个分出的usb端口共用一个端口,而这里其中一个端口是用于usb转串口的,而此时的Usb-to-serial 在做什么呢,它已经和uboot建立了连接,正在交互(试想你现在正在串口输出上看着Uboot的menu在操作着下载选项)。而用USB download的时候,是不是要完全占用我们的Universal Serial BUS(USB)呢(我猜是的,USB总线就是在分时复用么),hub正好又在usb-to-serial的对话中,既然是对话是不是要保持连接呢?。。。。可能就是这样,USB download的优先级没有Usb-to-serial和uboot的交互优先级高(或是该会话不可打破),从而使得USB download没有获取到USB的占用权,也就没把数据发出去……这坑爹的Uboot还在那头等着、还骂着“怎么还不来数据……”;有时候乡愁就是一枚小小的船票,你在那头儿,我却在这头儿。。。。。
(不可否认也有可能是我买的USB Hub太山寨,没办法处理这么复杂的请求,对于hub基础如此成熟的当代,应该是不应该的。)
so 我换用其它的的机器自带USB口,下载毫无问题。我哭了……
小结:
分析问题时先走最小系统法则,在不附近任何不必要的东西(如hub)的情况下再进行下一步的排查。
遇到问题要全面考虑,不要因为上次的原因而抱怨同一个人或物,其实很多可能不是他们的错,遇事先从自身找原因,大多是自己考虑问题不周全,盲目的把原因推给别人,到最后哭的最惨的还是自己。