wofei1314 发表于 2017-2-6 13:23
请教一下,执行完函数(共享的那部分)以后如何返回Bootloader或者APP....
函数执行完就回到调用它的位置的下一条指令呀,如果是bootloader调用就回到bootloader,如果是app调用就回到app,调用函数前会把返回地址保存到LR寄存器的,具体可以参考BLX指令。
zoomdy 发表于 2017-2-6 21:38
函数执行完就回到调用它的位置的下一条指令呀,如果是bootloader调用就回到bootloader,如果是app调用就 ...
是跳转指令,不是函数调用指令,
跳转指令也支持调用完后回来吗?
求助求助,强烈支持楼主ing……
wofei1314 发表于 2017-2-9 09:23
是跳转指令,不是函数调用指令,
跳转指令也支持调用完后回来吗?
调用函数的指令不会是B或BX,一定是BL或BLX。
zoomdy 发表于 2017-2-9 12:29
调用函数的指令不会是B或BX,一定是BL或BLX。
哪里有汇编资料,方便的话给指点一下。。。。
我是参照的IAP程序里的跳转,使用C,赋值一个地址给PC指针,然后跳过去,那我的这种方式是B、BX还是BL或者是BLX?
wofei1314 发表于 2017-2-9 13:15
哪里有汇编资料,方便的话给指点一下。。。。
赋值一个地址给PC指针?是赋值给函数指针吧,你说的这个PC是程序计数器寄存器吗?
wofei1314 发表于 2017-2-9 13:15
哪里有汇编资料,方便的话给指点一下。。。。
《ARM Cortex-M3与Cortex-M4权威指南》有讲汇编
wofei1314 发表于 2017-2-9 13:15
哪里有汇编资料,方便的话给指点一下。。。。
通过函数指针调用函数,一定是BLX指令,函数执行完成后一定会返回到调用该函数的下一条指令,也就是BLX的下一条指令。
zoomdy 发表于 2017-2-6 12:35
此方式中,如果在Bootloader.c中执行函数期间出现了异常,理论上还是否正确呢?
这是权威指南第3版的示例?
moyanming2013 发表于 2017-2-9 16:30
此方式中,如果在Bootloader.c中执行函数期间出现了异常,理论上还是否正确呢?
这是权威指南第3版的示例 ...
我随手编的,最简单的方式,不考虑权限,不考虑异常,如果都要考虑的话,最好是使用SVC系统调用。如果还有更高的要求,大概只能用Cortex-M23或Cortex-M33了,但我还没见到这两款核心的产品问世。