三星提供的DNW太不稳定了,能不能自己写一个下载工具,那里有完整的DNW源码?我看下载要用USB PORT/UBOOT功能,请问这一项用的USB协议是
三星提供的DNW太不稳定了,能不能自己写一个下载工具,那里有完整的DNW源码?《通过网络下到的都不是很全,都没有UBOOT选项功能的实现》我看下载要用USB PORT/UBOOT功能,请问这一项用的USB协议是?如果不按这个UBOOT的USB协议来发送NK,那EBOOT里面要怎么修改呢?
还有我对BIN/NB0文件不是很清楚,他们要传输的话,怎么传?一个个记录的方式传,还是什么其它?看EBOOT里面对BIN/NB0文件的接收,看的不是很明白。有没明白一点的人啊,指点一下啊!!!
我有DNW的源代码,是VC6.0的,过段时间我自己也要修改
引用: 引用 1 楼 gooogleman 的回复:
我有DNW的源代码,是VC6.0的,过段时间我自己也要修改
能共享不?
91program@163.com
91program ---------------我都加你QQ了,哈哈
http://blog.vckbase.com/liu090/archive/2007/07/05/27230.html
总算找到了BIN文件的格式定义了,看来EBOOT的代码读懂也没太大问题了.
EBOOT的代码我看过,不过通过以太网来下载内核,太不方便了。
2440的BSP早就实现了通过USB来下NK的,只是你拿到的那个版本的BSP太老了,换个新的就基本实现了通过USB来实现所有的下载功能
把那个DNW源代码整理了一天,基本可以实现USB的传输,也就是通过USB把NK。NB0下载到RAM里面,NK。NB0可以跑起来,应该基本的USB TRANSMIT功能已经实现了。但现在想参考EBOOT的功能,给DNW加一个UBOOT的功能,老是不行,老是下到第3条记录的时候报CHECKSUM出错,我看了一下NK。BIN发现第3条记录很大,有52。97KB大小的样子,是不是USB的BULK传大的记录就会出错?XP系统下的USB的BULK最大每次可以传多少?DNW源代码里面给了一个这样的定义#define TX_SIZE (4096*4) -----这个表示最大每次可以传16KB的数据?有没人知道为什么USB下载会出错啊???下面是我操作USB的UBOOT功能的报错过程
Enter your selection : U
System ready!
Preparing for download...
INFO: *** Device Name 'SMDK64000' ***
Please send the Image through USB.
BL_IMAGE_TYPE_BIN
Download BIN file information:
-----------------------------------------------------
[0]: Base Address=0x80100000 Length=0x141328c
-----------------------------------------------------
[EBOOT] RAM Image
ERROR: Checksum failure (expected=0x44EEC3 computed=0x45B465)
****** Checksum failure on record 3, ABORT!!! ******
//----------------------------------------------------------------
开始的几条记录都是成功下载了,也通过校验了,但在第3条记录就报这个错误,为什么?想不明白了,我对于于大于16KB的数据已经分多次来传了,第3条记录我看了一下有52。97KB大小,我分成4次传,为什么还是通不过校验呢?
前几条记录都传成功了,包括什么魔术数字,镜像的开始地址,镜像的长度,第0条记录,第1条记录,第2条记录都成功了,成功的都是数据量不大的记录,第3条进来数据量很大(52。97KB)就不能成功了,为什么?有没人整过DNW的源代码?
成功了,好爽的感觉,原来是一个发的起始位置计算有误引起的!
帅哥,能不能告诉我怎么通过USB实现NK的下载?USB通讯那块我几乎一无所知.我需要也一个用户定制的updater界面,实现DNW的Uboot功能.
我的邮箱和msn是wangyong19790058.student@sina.com.cn,希望点拨一下.
我只下载到一个DNW0.50a的源码,里面只有通过串口下载的.
经人指点,今天发现DNW0.50a里就有USB部分
可是SetupDiEnumDeviceInterfaces怎么找不到设备啊?我用的GUID是DEFINE_GUID(GUID_CLASS_I82930_BULK, //dnw
0x36FC9E60, 0xC465, 0x11CF, 0x80, 0x56, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00);
不知道各位高手有没有遇到类似的问题?
还是没搞定啊,我见网上很多人也是用SetupDiEnumDeviceInterfaces找不到设备.但是我用SetupDiEnumDeviceInfo却可以找到设备,但是我如果想打开这个设备并往里写该怎么写呢?我通过SetupDiGetDeviceRegistryProperty获得SPDRP_LOCATION_PATHS,得不到值.
正确的GUID
//a5dcbf10-6530-11d2-901f-00 c0 4f b9 51 ed //for dnw ok!!!----2010--5--13 xqh
DEFINE_GUID(GUID_CLASS_I82930_BULK,
0xa5dcbf10, 0x6530, 0x11d2, 0x90, 0x1f, 0x00, 0xc0, 0x4f, 0xb9, 0x51,0xed);
还不清楚可以参考下面的网页!!!
[url=http://www.codeguru.com/forum/archive/index.php/t-331907.html][/url]
引用: 引用 17 楼 xqhrs232 的回复:
正确的GUID
//a5dcbf10-6530-11d2-901f-00 c0 4f b9 51 ed //for dnw ok!!!----2010--5--13 xqh
DEFINE_GUID(GUID_CLASS_I82930_BULK,
0xa5dcbf10, 0x6530, 0x11d2, 0x90, 0x1f, 0x00, 0xc0, 0x4f, 0xb9, 0x51,0x……
不过这个GUID在我的IMX51板子上还是枚举不到USB设备啊!这个不知道为什么,IMX51板用的是ACTIVESYNC USB的串口功能,估计跟一般三星的SEC SOC SMDK Board是不一样的!所以不能成功枚举出来,USB也就永远不显示连接OK.