了解BootLoader——基于MPC5744P Bootloader例程

本文详细介绍了BootLoader在MPC5744P中的作用,包括系统初始化、程序加载过程以及Boot location概念。内容涉及BootLoader如何初始化系统时钟、CAN通信,以及如何接收和解析S19文件来更新程序。同时,文章讨论了Boot location的结构和查找机制,并解释了BootLoader和用户应用程序在PFlash中的位置关系。最后,提到了S19文件结构、数据对齐问题和多核工程的内存分配示例。
摘要由CSDN通过智能技术生成

一、BootLoader的作用:BootLoader是固化在PFlash中的一个程序,其作用可以分为两部分:boot和load。

  (1)boot:MCU上电时首先会运行BootLoader程序(因为它一般位于PFlash最前面的启动区,接下来会谈到启动区Boot location的概念),BootLoader程序会初始化系统时钟、看门狗等以保证系统的正常运行,此外还会初始化CAN(也可以是串口、SPI等)以实现和上位机的通信。

  (2)load:系统初始化完成后,程序会进入等待状态,如果在预定时间内没有接收到上位机的程序下载请求信号(CAN帧),则跳转并执行MCU内部原有的用户应用程序(位于PFlash的其他启动区)。如果在预定时间内接收到来自上位机的程序下载请求信号,则BootLoader程序进入新程序下载状态。下载过程中,上位机与BootLoader程序之间采用一问一答的方式逐行的下载S19文件(用户应用程序的可执行文件)并进行解析,得到程序地址和程序数据,从而将每一行程序数据按照程序地址写入到PFlash中。程序下载完成后,清除RAM,关闭CAN等BootLoader用到的外设,跳转到新的用户应用程序并开始执行。

二、Boot location的概念:Boot location就是每次MCU复位后运行BAM(Boot Assist Module)时寻找合法复位配置半字RCHW(Reset Configuration Harf-Word)和应用程序开始地址(Application Start Address,也可以叫做应用程序复位向量地址(Reset Vector)的区域。复位后CPU将从Boot location0~7依次查找由正确Boot_ID--0x5A组成的合法复位配置半字和应用程序开始地址,从而执行用户应用程序。MPC5744P有8个Boot location,在Flash Memory Map中标明了哪些block可以作为Boot location,如下图:

 

 Boot location的组成如下图所示:

Boot location的起始位置是复位配置半字(RCHW),其结构如下所示。

只有设置了真确的BootID,该Boot location才被识别为可启动的,如BootLoader程序和用户应用程序生成的S19文件:

  

 

 

 

在BootLoader程序的S19文件第二行中,0x00F98000为Boot location_0的起始地址,也就是RCHW的地址,其中存放的数据为0x01_5A,RCHW的VLE位置1,BOOT_ID为0x5A,即配置该Boot location为可启动的。reserve的16-31位默认为0x00

从用户应用程序的S19文件第三行可以看到,0x00FA0004为用户应用程序开始地址(应用程序复位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值