你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

APP程序与Bootload程序调用同一段代码的实现

[复制链接]
Mr.梁 提问时间:2017-2-5 18:01 /
阅读主题, 点击返回1楼
收藏 2 评论20 发布时间:2017-2-5 18:01
20个回答
zoomdy 回答时间:2017-2-6 21:38:18
wofei1314 发表于 2017-2-6 13:23
请教一下,执行完函数(共享的那部分)以后如何返回Bootloader或者APP....

函数执行完就回到调用它的位置的下一条指令呀,如果是bootloader调用就回到bootloader,如果是app调用就回到app,调用函数前会把返回地址保存到LR寄存器的,具体可以参考BLX指令。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

wofei1314 回答时间:2017-2-9 09:23:54
zoomdy 发表于 2017-2-6 21:38
函数执行完就回到调用它的位置的下一条指令呀,如果是bootloader调用就回到bootloader,如果是app调用就 ...

是跳转指令,不是函数调用指令,

跳转指令也支持调用完后回来吗?

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

zbber 回答时间:2017-2-9 10:32:59
求助求助,强烈支持楼主ing……
zoomdy 回答时间:2017-2-9 12:29:37
wofei1314 发表于 2017-2-9 09:23
是跳转指令,不是函数调用指令,

跳转指令也支持调用完后回来吗?

调用函数的指令不会是B或BX,一定是BL或BLX。
wofei1314 回答时间:2017-2-9 13:15:06
zoomdy 发表于 2017-2-9 12:29
调用函数的指令不会是B或BX,一定是BL或BLX。

哪里有汇编资料,方便的话给指点一下。。。。


我是参照的IAP程序里的跳转,使用C,赋值一个地址给PC指针,然后跳过去,那我的这种方式是B、BX还是BL或者是BLX  ?
zoomdy 回答时间:2017-2-9 15:57:22
wofei1314 发表于 2017-2-9 13:15
哪里有汇编资料,方便的话给指点一下。。。。

赋值一个地址给PC指针?是赋值给函数指针吧,你说的这个PC是程序计数器寄存器吗?
zoomdy 回答时间:2017-2-9 15:58:02
wofei1314 发表于 2017-2-9 13:15
哪里有汇编资料,方便的话给指点一下。。。。

《ARM Cortex-M3与Cortex-M4权威指南》有讲汇编
zoomdy 回答时间:2017-2-9 15:59:16
wofei1314 发表于 2017-2-9 13:15
哪里有汇编资料,方便的话给指点一下。。。。

通过函数指针调用函数,一定是BLX指令,函数执行完成后一定会返回到调用该函数的下一条指令,也就是BLX的下一条指令。
moyanming2013 回答时间:2017-2-9 16:30:56

此方式中,如果在Bootloader.c中执行函数期间出现了异常,理论上还是否正确呢?
这是权威指南第3版的示例?

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

zoomdy 回答时间:2017-2-9 18:15:38
moyanming2013 发表于 2017-2-9 16:30
此方式中,如果在Bootloader.c中执行函数期间出现了异常,理论上还是否正确呢?
这是权威指南第3版的示例 ...

我随手编的,最简单的方式,不考虑权限,不考虑异常,如果都要考虑的话,最好是使用SVC系统调用。如果还有更高的要求,大概只能用Cortex-M23或Cortex-M33了,但我还没见到这两款核心的产品问世。

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版