Bootloader顾名思义就是引导加载程序,是在操作系统或应用程序运行之前的一段程序,是在系统上电后执行的一段程序代码。
(相关资料图)
Bootloader在手机、电脑、众多嵌入式系统中都存在,它的作用有很多,比如:初始化底层应用驱动、加载应用程序、更新应用程序等。
不同的设备,Bootloader可能差异很大,通常来说Bootloader比较依赖底层硬件和实际项目需求。
bootloader是一段引导加载程序代码,它更新用户的应用程序代码,可以使用很多硬件下载通道(例如USB、网络端口)获得新代码。
1. 确保CPU处于特权模式;
2. 禁用NVIC中所有启用的中断;
3. 禁用所有可能产生中断请求的使能外设,并清除这些外设中的所有未使用中断标志;
4. 清除NVIC中所有未使用的中断请求;
5. 禁用SysTick并清除其异常挂起位;
6. 如果引导加载程序使用了单个故障处理程序,请禁用它们;
7. 如果发现内核当前与PSP一起运行,则激活MSP(由于编译器可能仍在使用堆栈,因此在此之前需要将PSP复制到MSP);
8. 将用户应用程序的向量表地址加载到SCB-> VTOR寄存器中。确保地址符合对齐要求;
9. 最后一部分是将MSP设置为用户应用程序向量表中找到的值,然后将用户应用程序的重置向量值加载到PC中,也就是跳转功能。
再次说明bootloader与底层硬件和实际需求有关,以上代码仅供参考,主要是提供思路,方便大家理解。
如果还不能理解,建议结合bootloader实际项目进行理解,比如之前给大家分享过的:STM32官方IAP例程详细说明
Copyright © 2015-2022 今日上海网版权所有 备案号:京ICP备2022022245号-14 联系邮箱:435 226 40@qq.com