打印

请解惑:为何Upgrade没成功

[复制链接]
3761|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
a_bb|  楼主 | 2007-12-27 21:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
正在学习USB的几个实验,其中的DFU遇到了困难。

将DFU程序烧写到开发板,然后使用DFUSe Demonstration将STM32F10xUSBLibUSBLibdemosDevice_Firmware_Upgradeimages 中的
joystickmouse.dfu去upgrade CPU,重启运行,正常。

但问题:

原先运行正常的LCD1620,用DFU File Manager 生成DFU文件,upgrade到
CPU中去却不运行。经查,0x8003000处为fffff,说明程序没写进去。
什么原因呢?
原先的地址设定是0x8000000,是不是要改为0x8003000,我试着改了,但一改
连原先运行正常的程序都不运行了!
怎么设置才对呢?
请高手指点!
沙发
香水城| | 2007-12-28 08:45 | 只看该作者

DFU ≠ ISP

DFU = Device Firmware Upgrade,意思是“设备固件升级”,关键是升级;升级的意思是在现有应用程序的基础上,改进一些部分,增加一些部分,修改一些错误

应用程序要满足DFU的要求,设计时通常分为两个部分。第一个部分包含DFU程序,即接收升级程序并执行对的Flash擦除、编程等操作,第一个部分还包括应用程序中不需要升级的部分,如标准的库函数等;第二个部分包含那些预留以后需要升级的部分。

从上面的概念上看,楼主的要求不属于DFU的范畴,属于ISP的范畴;原本的应用程序是joystickmouse,可你却要用另外一个完全不相关的LCD应用程序去套,后果可想而知了。

请楼主仔细地阅读一下那个joystickmouse的例子,你将更加深入地了解如何书写满足DFU要求的Firmware,谢谢。

使用特权

评论回复
板凳
a_bb|  楼主 | 2007-12-28 09:50 | 只看该作者

问题已解决

晚上好好睡了一觉,早晨恍然大悟。

现在只需要用JTAG将DFU程序固化到CPU中,就可以将任一应用程序通过USB直接DOWNLOAD到CPU中(不再需要JTAG),当然可以是整个程序,或部分程序。

我认为香水城的说法有些教条,升级也可以是全面更新(操作简单),也可以是部分更新(保密性好),甚至只更新某个常数表。

通过JTAG将程序烧写到FLASH中是ISP(如固化DFU),之后通过DFU将应用程序烧写到FLASH中就是IAP了,不论每次烧写的应用程序有多大差别。(其实那已经是一个编译好的HEX文件了)。

多谢香水城的答复

使用特权

评论回复
地板
ninjia| | 2007-12-28 11:05 | 只看该作者

楼上能分享一下成功经验吗?

楼上能分享一下成功经验吗?

使用特权

评论回复
5
香水城| | 2007-12-28 11:09 | 只看该作者

哈哈,我说的是基本原则,确实比较教条

老实说,那个DFUSe Demonstration我还没来得及看,没想到他们已经写成了类似USB ISP的东西,变成一个通用的DFU,这样真是方便很多。

谢谢楼主的尝试和分享,下次等我有时间再来向您请教。

使用特权

评论回复
6
computer00| | 2007-12-28 11:14 | 只看该作者

这个好玩,改天我也来自己做一个USB接口的BOOT~~~

使用特权

评论回复
7
luckiest| | 2007-12-28 19:44 | 只看该作者

关于DFU的文档

再DFU的用户手册UM0424中有这样一句话
“请参阅文档“DfuSe File Format Specification”(UM0391). 以获得更详细的信息。”
但是这个
UM0391我怎么都没找到。。。楼主你有吗?

使用特权

评论回复
8
香水城| | 2007-12-28 21:48 | 只看该作者

回7楼,你好像看的是旧版本吧

我刚下载了UM0424,没有看到你说的那句话,在哪一页?第几行?

请下载最新版本看看。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

35

主题

98

帖子

0

粉丝