主控芯片: STM32F427VI 2MB FLASH
问题描述: 自己写了一个Bootloader,是从SD卡读取bin文件,再写前16k的FLASH。 加载FATFs文件系统,读写什么的都没有问题。跳转app也OK。
一共有两个测试app ,第一个为串口app(用到的资源很少,就只有串口什么的),跳转成功,运行也ok。第二个app是PX4飞控(几乎把班上的资源用了70%以上吧),跳转OK,但是运行OK,总是卡死在一个地方。
跳转前,时钟什么的都关闭的。尝试过Bootloader什么都不做,直接跳转,依然卡死在同一个地方。
谢谢各位了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
在APP程序中,将用到中断的外设,在初始化时,进行一次恢复至默认操作,再重新配置中断。
嗯,是这样的,APP端我没有办法改变,我只能在Bootloader端做修改,我懂你的意思,就是可能是Bootloader中的中断什么的可能影响了app。但是我尝试过,Bootloader中什么都不做,直接初始化时钟,就跳转至app,仍然卡死在那个地方。
还有就是,我用官方的PX4Bootloader是没有任何问题的。
当然我用的是ST的库,它用的是libopencm3.
1. 看看APP里是否重定义了向量地址。
2. APP中是否改变了像PENDSV这类中断的入口。
reply 1: vetor table,在Bootloader跳转前已经重定义过,NVIC_SetVectorTable(App_Base_Address, 0);
reply 2: 不太明白,因为Bootloader重定义了中断向量表,那么app直接 处理中断就行。这个PENDSV我之前没有接触过,不太懂。 但是我是这么想的,PX4飞控官方的Bootloader能够跳转正常,飞控运行正常。那么应该不是app有问题。
得仿真找问题了,说不准。
一周热门 更多>