ARM:如何正确编写引导加载程序?

引导加载程序是一段代码,允许更新用户应用程序代码。可以使用替代下载通道(例如USB记忆棒或网络端口)获取新代码。在引导ROM执行之后,执行引导加载程序并在需要时执行更新,然后执行最终用户应用程序。

引导加载程序和用户应用程序应该作为两个单独的μVision项目或目标编写和构建,从而生成两个独立的可执行映像/应用程序。引导加载程序的主要任务是在必要时重新编程/替换用户应用程序,并跳转到用户应用程序以执行它。用户应用程序不一定需要知道引导加载程序的存在。

引导加载程序通常位于芯片闪存基地址,因此在复位后由CPU执行。下图演示了用户应用程序和引导加载程序的典型代码放置。
在这里插入图片描述
有许多方法可以指示引导加载程序进入编程模式以将用户应用程序重新编程为闪存,或者只是跳转到现有的用户应用程序来执行。最简单的方法是检查GPIO引脚以确定它是否应进入编程模式。

大多数芯片供应商为用户提供了一种便捷的方式,例如在系统编程(ISP)和在应用编程(IAP)接口,引导加载程序可以使用它来更新闪存内容。

当Flash内容更新或已经是最新时,引导加载程序将跳转到用户应用程序。在执行用户应用程序之前,这需要许多步骤。这通常通过调用下面的示例函数 BootJump()来完成,其目的是基本上恢复用户应用程序的重置条件:

static void BootJump(uint32_t * Address)
{

1.确保CPU处于特权模式。

  if(CONTROL_nPRIV_Msk&#
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值