OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6834|回复: 15

使用DFU升级只有烧完bootloader之后的第一次升级能成功,第二次就不行了

[复制链接]

6

主题

201

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1149
金钱
1149
注册时间
2015-11-13
在线时间
267 小时
发表于 2016-6-5 17:05:10 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 特朗姆斯 于 2016-6-5 17:34 编辑

用的是原子的stm32f407探索板,bootloader程序参考的官方例程,把里面把按键和闪烁的灯改成原子探索板上的KEY1和DS0。

APP程序的入口地址是0x0800C000,偏移量已经在main函数的起始位置设置好,MDK里面IROM1的起始地址也改成了APP程序的入口地址。

目前出现的问题如下图所示,校验无法通过,如果不勾选校验的话虽然提示Upgrade成功,但是APP程序也是无法运行。

1111.jpg


我在烧写bootloader的时候是擦除full chip的,所以首次使用Dfuse Demo升级的时候能成功,但是第二次升级就会提示校验虽然成功,但是data matching failed。这时候点Leave DFU Mode是可以成功的,但是APP程序无法运行,复位之后也不行。



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2016-6-5 18:12:52 来自手机 | 显示全部楼层
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2016-6-5 22:09:29 | 显示全部楼层
每次都成功的路过,不过最近没搞了
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

6

主题

201

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1149
金钱
1149
注册时间
2015-11-13
在线时间
267 小时
 楼主| 发表于 2016-6-6 09:27:30 | 显示全部楼层
八度空间 发表于 2016-6-5 22:09
每次都成功的路过,不过最近没搞了

仔细看过八度版主分享的stm32f1的DFU例子

我的整个操作流程应该没有错啊。。
回复

使用道具 举报

6

主题

201

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1149
金钱
1149
注册时间
2015-11-13
在线时间
267 小时
 楼主| 发表于 2016-6-6 09:28:09 | 显示全部楼层
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2016-6-6 12:53:00 | 显示全部楼层
特朗姆斯 发表于 2016-6-6 09:27
仔细看过八度版主分享的stm32f1的DFU例子

我的整个操作流程应该没有错啊。。

流程没错的话,看看是不是代码哪里忽略什么了,按道理不应该这样的
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

6

主题

201

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1149
金钱
1149
注册时间
2015-11-13
在线时间
267 小时
 楼主| 发表于 2016-6-6 13:10:24 | 显示全部楼层
本帖最后由 特朗姆斯 于 2016-6-6 13:12 编辑
八度空间 发表于 2016-6-6 12:53
流程没错的话,看看是不是代码哪里忽略什么了,按道理不应该这样的

如果app程序用keil烧的话就可以正常运行。。说明我设置的偏移地址没有问题

我试过V3.0.4的Dfuse demo版本,在win7和win10系统下都试过,但是都是同样的问题
回复

使用道具 举报

2

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2016-9-21
在线时间
24 小时
发表于 2016-10-28 22:28:46 | 显示全部楼层
楼主后来是如何解决的呢  我现在也遇到了同样的问题
回复

使用道具 举报

6

主题

201

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1149
金钱
1149
注册时间
2015-11-13
在线时间
267 小时
 楼主| 发表于 2016-10-31 11:44:46 | 显示全部楼层
shanwu 发表于 2016-10-28 22:28
楼主后来是如何解决的呢  我现在也遇到了同样的问题

后来就没有采用这个方案,如果你找到解决方法的话希望能在这里分享一下。
回复

使用道具 举报

2

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2016-9-21
在线时间
24 小时
发表于 2016-10-31 11:49:56 | 显示全部楼层
特朗姆斯 发表于 2016-10-31 11:44
后来就没有采用这个方案,如果你找到解决方法的话希望能在这里分享一下。

那你们后来用什么方案了呢?我现在改用串口烧录了  参考原子的串口IAP但是程序不能超过120K 我的硬件是stm32F405vgt6  还要改发送协议 把bin文件分段发送  目前还没有成功  等调好了再分享
回复

使用道具 举报

6

主题

201

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1149
金钱
1149
注册时间
2015-11-13
在线时间
267 小时
 楼主| 发表于 2016-10-31 13:19:13 | 显示全部楼层
shanwu 发表于 2016-10-31 11:49
那你们后来用什么方案了呢?我现在改用串口烧录了  参考原子的串口IAP但是程序不能超过120K 我的硬件是st ...

本来想用DFU做升级可以速度快一点,现在还是用回串口了,为什么程序不能超过120K?
回复

使用道具 举报

2

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2016-9-21
在线时间
24 小时
发表于 2016-10-31 13:31:43 | 显示全部楼层
特朗姆斯 发表于 2016-10-31 13:19
本来想用DFU做升级可以速度快一点,现在还是用回串口了,为什么程序不能超过120K?

参考的代码 是一次串口读取程序 存下来再写入flash的,存的那部分在ram中 空间不够。你串口升级的程序大吗?
回复

使用道具 举报

6

主题

201

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1149
金钱
1149
注册时间
2015-11-13
在线时间
267 小时
 楼主| 发表于 2016-10-31 14:30:25 | 显示全部楼层
你可以修改一下程序,分多次写入Flash就可以了。
回复

使用道具 举报

53

主题

567

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2099
金钱
2099
注册时间
2017-2-11
在线时间
306 小时
发表于 2020-1-17 09:19:34 | 显示全部楼层

楼主能分享一下F407的  DFU代码吗?我也想了解一下
回复

使用道具 举报

3

主题

16

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2019-7-22
在线时间
2 小时
发表于 2020-1-18 19:38:43 | 显示全部楼层
楼主你问题解决了吗
回复

使用道具 举报

8

主题

72

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
292
金钱
292
注册时间
2018-8-14
在线时间
37 小时
发表于 2020-1-19 10:18:52 | 显示全部楼层
这个我感觉和程序代码没有关系,像是编程软件没设置好,boot和app都要设置:起始地址和对应的FLASH占用大小,根据实际情况填写,还要匹配实际单片机的空间,不要出现起始地址+大小 > flash末地址的情况
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-11 08:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表