主控芯片: STM32F427VI 2MB FLASH
问题描述: 自己写了一个Bootloader,是从SD卡读取bin文件,再写前16k的FLASH。 加载FATFs文件系统,读写什么的都没有问题。跳转app也OK。
一共有两个测试app ,第一个为串口app(用到的资源很少,就只有串口什么的),跳转成功,运行也ok。第二个app是PX4飞控(几乎把班上的资源用了70%以上吧),跳转OK,但是运行OK,总是卡死在一个地方。
跳转前,时钟什么的都关闭的。尝试过Bootloader什么都不做,直接跳转,依然卡死在同一个地方。
谢谢各位了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
do_jump(uint32_t stacktop, uint32_t entrypoint) //201604 汇编代码,应该是给出app 入口地址 ,以及程序运行的堆栈顶端地址
{
asm volatile(
"msr msp, %0 "
"bx %1 "
: : "r"(stacktop), "r"(entrypoint)
// just to keep noreturn happy
for (;;) ;
}[/mw_shl_code]
@正点原子 原子哥,你给看一下,这一段汇编跳转程序,我觉得和你的跳转功能一样,都是初始化堆栈,再设置返回地址。不知道我分析的对不对。{这是eclipse环境下的}
bootloader这段程序运行都OK,跳转至app了,就没有办法跟踪了。
一周热门 更多>