引导加载程序是一段代码,允许更新用户应用程序代码。可以使用替代下载通道(例如USB记忆棒或网络端口)获取新代码。在引导ROM执行之后,执行引导加载程序并在需要时执行更新,然后执行最终用户应用程序。
引导加载程序和用户应用程序应该作为两个单独的μVision项目或目标编写和构建,从而生成两个独立的可执行映像/应用程序。引导加载程序的主要任务是在必要时重新编程/替换用户应用程序,并跳转到用户应用程序以执行它。用户应用程序不一定需要知道引导加载程序的存在。
引导加载程序通常位于芯片闪存基地址,因此在复位后由CPU执行。下图演示了用户应用程序和引导加载程序的典型代码放置。
有许多方法可以指示引导加载程序进入编程模式以将用户应用程序重新编程为闪存,或者只是跳转到现有的用户应用程序来执行。最简单的方法是检查GPIO引脚以确定它是否应进入编程模式。
大多数芯片供应商为用户提供了一种便捷的方式,例如在系统编程(ISP)和在应用编程(IAP)接口,引导加载程序可以使用它来更新闪存内容。
当Flash内容更新或已经是最新时,引导加载程序将跳转到用户应用程序。在执行用户应用程序之前,这需要许多步骤。这通常通过调用下面的示例函数 BootJump()来完成,其目的是基本上恢复用户应用程序的重置条件:
static void BootJump(uint32_t * Address)
{
1.确保CPU处于特权模式。
if(CONTROL_nPRIV_Msk&#