[AT32F407] AT32F407VGT7指定地址烧写代码不运行

[复制链接]
 楼主| fuquan19801117 发表于 2022-9-28 20:23 来自手机 | 显示全部楼层 |阅读模式
本帖最后由 fuquan19801117 于 2022-9-28 20:24 编辑

大家好,有个问题请教一下,我写了一个程序然后用ISP软件的DFU烧写到芯片运行正常,程序里面做了一个跳转,当条件成立后就跳转到0x08060000的地址去执行子程序函数,这个子程序是我用keil重新建立的工程编译的一个函数生成的hex,用isp软件的DFU方式烧写到芯片指定地址的,烧写后程序却不运行了,感觉好像存储器都被擦除了。请问是什么原因?我下载时选择的对应范围的存储器擦除,并不是全部擦除
muyichuan2012 发表于 2022-9-28 20:28 | 显示全部楼层
"这个子程序是我用keil重新建立的工程编译的一个函数生成的hex"
子程序有经过编译器指定编译到0x08060000吗?
linjinming2000 发表于 2022-9-28 21:46 | 显示全部楼层
keil的代码跳转用的是绝对地址,你跳过去函数是执行了的,但是执行完后不能返回来
 楼主| fuquan19801117 发表于 2022-9-28 22:08 来自手机 | 显示全部楼层
muyichuan2012 发表于 2022-9-28 20:28
"这个子程序是我用keil重新建立的工程编译的一个函数生成的hex"
子程序有经过编译器指定编译到0x08060000吗 ...

有指定地址
 楼主| fuquan19801117 发表于 2022-9-28 22:09 来自手机 | 显示全部楼层
linjinming2000 发表于 2022-9-28 21:46
keil的代码跳转用的是绝对地址,你跳过去函数是执行了的,但是执行完后不能返回来 ...

可能是你说的原因不能跳回,有什么方法实现我的功能吗?
muyichuan2012 发表于 2022-9-28 22:20 来自手机 | 显示全部楼层
可参考雅特力AN0001 ,iap里app编译方法。
 楼主| fuquan19801117 发表于 2022-9-29 09:30 | 显示全部楼层
我的方式是可以的,但是需要KEIL软件DEBUG下载才行,如果用ICP软件或者ISP软件烧写就不能运行。奇怪啊
 楼主| fuquan19801117 发表于 2022-9-30 17:13 | 显示全部楼层
muyichuan2012 发表于 2022-9-28 22:20
可参考雅特力AN0001 ,iap里app编译方法。

应该是您说的现象,虽然能跳转到指定地址去执行代码,但是不能返回,造成后面的代码空间也在跑,耗费了大量时间,拖慢了整个工程的执行速度。只要不跳转MCU执行速度很快,一跳转后速度马上就掉下来。
Jacquetry 发表于 2022-10-4 21:14 | 显示全部楼层
不能回跳?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

72

帖子

1

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