目录
概述
英飞凌可以通过BMI实现启动,那么本文章将会仔细介绍BMI相关知识以及如何应用到项目里面。
BMI手册介绍
BMI的结构组成,在手册里面的介绍如下图
在英飞凌的UM手册里面,本地的BMI有且仅有四个
BMI的顺序是从0开始查找到第三个,假设这四个BMI均为找到有限的,那么单片机就无法启动。
BMI程序实现
第一步:查看定义
第二步:在连接文件里面定义到固定BMI开始地方
BMHD0 (rx) : org = 0x80000000, len = 0x20
.BMD_HDR_CONST_FAR_UNSPECIFIED : ALIGN(4)
{
*(.BMD_HDR_CONST_FAR_UNSPECIFIED*);
} > BMHD0
第三步:定义自己需要的数据
const BMD_HDR Bmiheader =
{
0x80000020,
0x0370,/*LCL1LSEN =1,LCL0LSEN =1 , HWCFG = Internal start from Flash, PINDIS= 0(Mode selection by HWCFG pins is enabled)*/
0xB359,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x49E9B5B4,
0xB6164A4B
};
解释以下上述:
0x80000020为开始地址
0x0370 为下述寄存器
本次设置为
LCL1LSEN =1,
LCL0LSEN =1 ,
HWCFG = Internal start from Flash,
PINDIS= 0(Mode selection by HWCFG pins is enabled)
这点是根据自己的需求进行设定的。
4.1.5.2 Configuration by Boot Mode Index (BMI) 章节
0xB359 为一个固定的数。
0x49E9B5B4 CRC的值。
0xB6164A4B CRC取反的值。
中间的00 00 00 00 是默认的,全写成0就行了。
const BMD_HDR Bmiheader 直接通过链接文件定义进固定地址就行了,占用32个字节。
CRC计算:CRC计算地址
注意数据 0xb359 与 0x0370的位置