|
请问一下各位大佬,在BootLoader跳转函数使用前需要做哪些处理?比如是否关闭全局中断?是否清除所有中断标志位?是否关闭systick内部时钟?是否关闭总线时钟?在从boot跳转到APP后,是先修改中断向量表?还是在跳转到APP后再修改中断向量表?在跳转前如果关闭了全局中断,在跳转到APP后是否需要打开全局中断?还是说全局中断由各个中断初始化再打开? |
一般来讲,无需关闭总中断,将各个中断使能关闭,且跳转前不存在未清除的中断标志即可。中断向量表的修改一般在APP工程的启动文件里完成,即在进入main()之前完成,当然这不是绝对的,反正APP中断来临时中断矢量表已经配置好即可。还有,如果是M7系列,建议跳转前将Cache关闭。
一般来讲,无需关闭总中断,将各个中断使能关闭,且跳转前不存在未清除的中断标志即可。中断向量表的修改一 ...
是这样,我遇到的问题是,boot设置在rom的开始,app设置在boot后面,开机后先执行boot,如果不用升级就直接跳转到app,如果需要升级,那么就从app跳转到boot,升级完毕,再跳转回app,在升级完成后跳转回app的时候,新的app无法执行,只有复位芯片后才能正常执行,这个是什么道理啊?是M4的芯片,不是M7
是这样,我遇到的问题是,boot设置在rom的开始,app设置在boot后面,开机后先执行boot,如果不用升级 ...
[md]你确认下升级完成后是否有没有关闭的中断使能,或没有清除的中断标志,比方溢出中断标志,包括SYSTICK。 还有,你升级过程中有无调整时钟系统,要不你在跳转前将PLL也关闭掉,反正,APP都是一切从头来。 再就是APP的中断来临时中断矢量表一定配置妥当了。
你确认下升级完成后是否有没有关闭的中断使能,或没有清除的中断标志,比方溢出中断标志,包括SYSTIC ...
[md]是这样的,因为BOOT是在开始地址,所以重启或者开机后,肯定是先执行的BOOT代码,通过BOOT代码跳转到APP的部分,在APP跳转到BOOT的时候发现,不管是否关不关中断,都可以跳转到BOOT来进行程序升级,而且我能确定BOOT代码确实烧写完了新的APP程序,但是在BOOT烧写完成,跳转到APP的时候,新的APP不能运行,除非关机或者复位后再次执行BOOT,才可以跳转到APP后运行
你确认下升级完成后是否有没有关闭的中断使能,或没有清除的中断标志,比方溢出中断标志,包括SYSTIC ...
[md]步骤一:开机 运行BOOT ----->跳转到APP 此时APP运行正常 步骤二:APP------------------->跳转到BOOT进行程序升级 此步骤运行正常 步骤三:升级完成由BOOT------>跳转到新的APP 运行异常 如果把步骤二改为 APP复位芯片,重新执行BOOT 可以程序升级,也可以由BOOT跳转到APP执行新程序
请问,你说的boot程序是你自己写的还是系统自带的? 另外,你具体哪款芯片,或许我可以针对性测试下。
请问,你说的boot程序是你自己写的还是系统自带的?另外,你具体哪款芯片,或许我可以针对性测试下。 ...
[md]自己写的程序,就是用跳转那个函数做的,芯片型号的话用的是STM32F429ZGT6