打印
[AT32F407]

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

[复制链接]
715|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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吗 ...

有指定地址

使用特权

评论回复
5
fuquan19801117|  楼主 | 2022-9-28 22:09 | 只看该作者
linjinming2000 发表于 2022-9-28 21:46
keil的代码跳转用的是绝对地址,你跳过去函数是执行了的,但是执行完后不能返回来 ...

可能是你说的原因不能跳回,有什么方法实现我的功能吗?

使用特权

评论回复
6
muyichuan2012| | 2022-9-28 22:20 | 只看该作者
可参考雅特力AN0001 ,iap里app编译方法。

使用特权

评论回复
7
fuquan19801117|  楼主 | 2022-9-29 09:30 | 只看该作者
我的方式是可以的,但是需要KEIL软件DEBUG下载才行,如果用ICP软件或者ISP软件烧写就不能运行。奇怪啊

使用特权

评论回复
8
fuquan19801117|  楼主 | 2022-9-30 17:13 | 只看该作者
muyichuan2012 发表于 2022-9-28 22:20
可参考雅特力AN0001 ,iap里app编译方法。

应该是您说的现象,虽然能跳转到指定地址去执行代码,但是不能返回,造成后面的代码空间也在跑,耗费了大量时间,拖慢了整个工程的执行速度。只要不跳转MCU执行速度很快,一跳转后速度马上就掉下来。

使用特权

评论回复
9
Jacquetry| | 2022-10-4 21:14 | 只看该作者
不能回跳?

使用特权

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

本版积分规则

14

主题

70

帖子

1

粉丝