(好)我的引导加载程序在我的应用程序中正确跳转到resetISR。
(好)我可以在反汇编此位置的指令中看到到应用程序_c_int00地址的分支,这正是我想要的。
(坏)此时,它不分支到c_int00,而是转到0x1.0046万d8 (引导Rom?) 然后再次运行bootloader代码。 (不分次)
似乎一切都应该正常工作。 我们非常感谢您就检查内容提出任何建议。
再次感谢!
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
(好)我的引导加载程序在我的应用程序中正确跳转到resetISR。
(好)我可以在反汇编此位置的指令中看到到应用程序_c_int00地址的分支,这正是我想要的。
(坏)此时,它不分支到c_int00,而是转到0x1.0046万d8 (引导Rom?) 然后再次运行bootloader代码。 (不分次)
似乎一切都应该正常工作。 我们非常感谢您就检查内容提出任何建议。
再次感谢!
Regis,
在逐步 执行代码时,当您确实收到此错误时。 对于M3,需要遵循以下约束,否则会生成故障。
"每个矢量的最低有效位必须为1,表示异常处理程序是Thumb代码,请参见 Thumb state。"
此致,
Vivek Singh
Regis,
DO, address|=0x1;,然后调用下面的函数。 您确定R0有地址参数还是收集器有地址?
为什么您甚至在装配体中对其进行编码? 您可以在C中执行以下操作
地址|= 0x1;
((void (*)(void))address)();
静态void JumpToAddress(UINT32_t地址)
{
__ASM(" mov sp, r0\n"// sp现在是*address
" bx r0\n");//跳转到*address
}
这与Vivek所说的相同。
此致
Santosh Athuru