OpenEdv-开源电子网

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

基于F103+W5500的TFTP方案的bootloader和APP之间的跳转问题

[复制链接]

1

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2019-6-15
在线时间
9 小时
发表于 2020-9-5 11:24:18 | 显示全部楼层 |阅读模式
5金钱
STM32F103CBT6 + W5500


问题描述:
1、新的板子,或者先将单片机格式化(erase),然后将bootloader烧写进去,启动之后,自动加载APP程序,一切正常,跳转正常,APP运行正常。


2、程序改动之后编译,然后通过指令复位至bootloader,加载新的APP程序bin文件至单片机,加载正常,但程序无法跳转至APP程序。


3、还是第2条中的bin文件,程序也不做任何修改,直接点MDK中的Download(F8),此时程序一切正常,跳转正常,APP运行正常。


4、还是第2条中的bin文件,程序也不做任何修改,此时通过指令复位至bootloader,加载新的APP程序bin文件至单片机,加载正常,程序正常,跳转正常,APP运行正常。


基于以上,我基本上也排除了跳转程序和向量偏移的问题,因为同样的bin文件,通过不同的方式加载居然引起了不同的运行效果。


这个问题,首先在IAR上发现了,怀疑是软件和设置的问题,然后通过MDK也做了一个测试的版本程序,bootloader程序大同小异,APP程序就只有点灯灭灯的循环。

不管是IAR还是后面重新再MDK上做的简单测试程序,现象都是如上面4条所述。

特来请教,请朋友们帮忙看看,分析一下可能是什么问题。


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

使用道具 举报

31

主题

2183

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14407
金钱
14407
注册时间
2018-8-3
在线时间
1156 小时
发表于 2020-9-5 18:08:23 | 显示全部楼层
中断向量都有偏移吧嘛 还有可以在跳转部分加个延时看看效果
回复

使用道具 举报

1

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2019-6-15
在线时间
9 小时
 楼主| 发表于 2020-9-7 15:19:58 | 显示全部楼层
翼行园子 发表于 2020-9-5 18:08
中断向量都有偏移吧嘛 还有可以在跳转部分加个延时看看效果

谢谢,回复。

实际上,现在主要的现象是同一个程序,同样的bin文件,通过MDK的Download按键下载的,与通过TFTP加载的,一个可以跳转一个不能跳转,通过stlink读出来的内容里的内容是一致的,先用MDK下载,后用TFTP加载,则两个都可以运行并跳转,先用TFTP加载,在用MDK下载,在前者不能跳转运行,后者可以。这个是我比较想了解的问题。
回复

使用道具 举报

5

主题

269

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1053
金钱
1053
注册时间
2020-5-11
在线时间
253 小时
发表于 2020-9-7 17:13:08 | 显示全部楼层
根据描述还是怀疑你的加载是不是有问题。1:你是如何确认加载无问题的。2:你是如何加载的。3:可以考虑对flash app区域做校验。看看到底是不是一致的程序(有没有可能加载过程中出问题了呢)。  
回复

使用道具 举报

1

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2019-6-15
在线时间
9 小时
 楼主| 发表于 2020-9-7 18:40:02 | 显示全部楼层
thisisdemo 发表于 2020-9-7 17:13
根据描述还是怀疑你的加载是不是有问题。1:你是如何确认加载无问题的。2:你是如何加载的。3:可以考虑对f ...

加载是一个通用的基于W5500的TFTP程序,之前在多个STM32单片机项目上用过,没有出现过问题。
而且,通过将加载进去的bin文件读出,和原bin文件对比,没有发现有什么不同。
回复

使用道具 举报

1

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2018-7-31
在线时间
38 小时
发表于 2020-9-30 14:33:21 | 显示全部楼层
最近也在设计固件互换升级功能,发现需要注意的一些问题,可能你也要排除一下:
1、升级是在断电加载或软系统复位后?mdk写入会有重启设置,根据需要设置确认重启了
2、总中断应该在切换前处理好
3、flash有个标志位,我觉得应该写完清除,不然升级后初始化有擦除写入也有异常情况,可能没有断电重启的原因
4、中断偏移必须搞明白,编译前弄好,不然进错地方搭接不上mian了
5、需要多跑调试,查找问题,马虎不得
6、编程本来就是不断修改优化代码的,多想多调试吧
回复

使用道具 举报

5

主题

152

帖子

0

精华

高级会员

Rank: 4

积分
777
金钱
777
注册时间
2016-7-15
在线时间
119 小时
发表于 2020-9-30 16:30:46 | 显示全部楼层
涉及到这么深的问题,光凭描述指不出问题
好好学习,天天向上。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-17 05:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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