APP下载

英飞凌车用XC2000系列微控制器Bootloader设计

2016-05-18李睿张小明

汽车实用技术 2016年7期
关键词:英飞凌微控制器寄存器

李睿,张小明

(西安法士特汽车传动工程研究院,陕西 西安 710119)

英飞凌车用XC2000系列微控制器Bootloader设计

李睿*,张小明

(西安法士特汽车传动工程研究院,陕西 西安 710119)

文章介绍了关于英飞凌XC2000系列芯片上Bootloader设计的一种方式。介绍了总体架构,硬件结构,并详细阐述了系统软件的设计和实现。该Bootloader以XC2000为基础平台,具有较好的移植性,理论上是用于英飞凌XC2000全系列产品。能够实现程序切换,加密解密,CAN网络程序烧写,软件版本控制等多方面功能。从软件层面提升产品生命周期,达到设计预期要求。

英飞凌;XC2000;Bootloader;加密

CLC NO.:U462.2 Document Code: A Article ID: 1671-7988 (2016)07-144-03

前言

随着汽车电子行业的飞速发展,商用车控制系统近两年内正以几何形式增长。嵌入式在商用车领域内得到了长足的发展。随着需求井喷式的增长与变化,汽车电子中控制系统愈发复杂,产品维护,版本控制,后期追踪变得越发困难。欧美在汽车电子领域中很早就引入了Bootloader这一设计理念,很好的解决了产品实际中遇到的问题。

在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。嵌入式系统是一个资源十分紧缺的特殊系统,它不同于我们传统PC计算机。所以在紧张的资源中要实现对应用程序的启动管理,程序更新,版本控制,程序加密等诸多功能。

英飞凌的XC2000系列微控制器芯片是为汽车电子专门设计的,具有较高的运行速率,强大的外围设备,强大的稳定性。本文就选取XC2000的芯片,讨论其上电后的运行机制,Bootloader实现方案,Flash操作方法,以及如何利用芯片自身的加密机制保护应用程序的知识产权。

1、Bootloader设计方案

英飞凌的XC2000系列芯片采用典型的冯诺依曼结构,即采用存储程序方式,指令和数据不加区别混合存储在同一个存储器中,(数据和程序在内存中是没有区别的,它们都是内存中的数据,当IP指针指向哪 CPU就加载那段内存中的数据,如果是不正确的指令格式,CPU就会发生错误中断。该系列芯片的地址分配如下表:

表1 英飞凌XC2000系列芯片的地址空间

我们可以看出按照官方给出的地址分布,我们能够利用的实际存储区域只有Flash0与Flash1(上图红色圈定区域),系统在上电或复位时通常都从地址0xC00000处开始执行。从空间上讲已经能够满足一般程序存储(一般嵌入式系统软件在几KB到几十KB之间)。但是由于嵌入式芯片的工作模式使得我们不得不将该程序按照约定存储在0xC00000的首位地址处。上电后即按照程序逻辑运行,我们即使在Flash中安排了两个应用程序也无法启用第二个程序。所以需要我们将能够管理应用程序启动的BootLoader处安排在0xC00000地址处,上电后首先运行Bootloader,由它接管微处理器的运行。

1.1 程序跳转

程序跳转的目的就是为了在第一个专有程序完成自身本职工作后,可以将硬件的管理权释放,并且将各个MCU中的资源移交给第二个程序,并且为第二个程序运行提供支持。

图2 缓速器模块

如上图所示,我们MCU中的Flash资源布局时将整个Flash划分为了三个区域。(注:我们这里将Flash从逻辑层面上连成一个整体,实际上Flash的地址是不连续的)。我们在0xC00000处安放的是Bootloader,其必须完成对APP的调用,使得APP在Bootloader生命周期结束的时候能够启用,并且对于MCU的硬件资源能够正确使用。

程序跳转本身在程序上没有难度,关键技术难点在于必须从逻辑上将MCU存储资源有效的分区管理。由于英飞凌XC2000系列芯片的自身运行机制要求,cstart()函数以及其后的中断向量表需有序的排列在0xCX0000的起始段位置处,这样APP或者Bootloader才能按照约定正常运行。

1.2 存储区相关操作

英飞凌XC2000系列的MCU中都不含有带有EEPROM的芯片,所以不论Bootloader的程序更新还是参数标定的存储都需要对Flash进行操作。

Flash这类存储单元本身具有一定特殊特性。Flash进行写操作的时是以页为单位,一次进行一个整页操作,不论擦除还是写入操作都是如此,以英飞凌的XC2000系列芯片为例的话,一页的大小为128字节(64字)。

英飞凌内核中有一个独有特殊单元IMB,由该单元管理了XC2000系列的MCU的Flash擦除,烧写工作甚至加密,解密工作。前面提到对于英飞凌XC2000来说,每一次对Flash的操作最小单元为一页。所以实际上的对Flash操作都是先对IMB进行操作,完成正确的操作命令字后,再由IMB对指定Flash进行操作。控制字表如下:

1.3 存储区加密解密

首先,芯片加密属于MCU的最核心操作,芯片厂商从伊始的原理设计上就做了诸多防护,以防操作变得过于简单。如果过于简单,加密解密的设计意义就会流于形式,起不到真正防护作用。所以从机理上讲,加密解密就是对MCU进行核心操作。

下图揭示了英飞凌XC2000的IMB运行机制。其通过物理层映射到核心寄存器中,再由IMB Core进行运行,但是物理层却不能由IMB Core以外的任何方式修改,从根本上起到了防护作用。我们可以看到,英飞凌XC2000系列芯片在设计之初就采用三级映射的逻辑关系,我们实际可操作的层位物理层,即两个Security Page。之后由中间层和上层逐层进行管理。

图3

下图就是展示了XC2000系列芯片的物理层核心区域的信息排布。其中包含了密码,保护使能寄存器,上锁确认代码,BMI启动方式等多种重要参数。对其的修改才是加密解密的核心工作,且不能有丝毫错误。图示左侧下标为该区域真实绝对地址,但由于IMB运行机制的影响,是不能直接对地址操作的,仍然需要遵循存储区的操作字序列方能成功操作对应区域。

图4

值得注意的一点,在对Security Page进行操作时,必须首先清除Security Page 1中的Lock Code,然后完成Security Page 0中的Password、PROCON、BMI设置,最后回填Security Page 1的Lock Code。这样才能使得操作生效,并且在最后一步回填Lock Code时,加密保护是即刻生效的,不需要重新上电。

2、Bootloader运行过程

整个Bootloader包含两个阶段:

2.1 基本的硬件初始化

这是Boot Loader一开始就执行的操作,其目的是为第二阶段的执行准备好一些基本的硬件环境。目前我公司设计的Bootloader通常包括以下步骤(以执行的先后顺序):

(1)屏蔽所有的中断。为中断提供服务通常是OS设备驱动程序的责任,因此在BootLoader的执行全过程中可以不必响应任何中断。中断屏蔽可以通过写CPU的中断屏蔽寄存器或状态寄存器来完成。

(2)设置CPU的速度和时钟频率。

(3)RAM初始化。包括正确地设置系统的内存控制器的功能寄存器以及各内存库控制寄存器等。

(4)CAN模块初始化。由于车辆使用的标准网络为CAN网络,所以与其他Bootloader不同的是需要初始化CAN相关功能。

2.2 启动Bootloader程序,进入等待服务循环

当Bootloader完成硬件资源的相关配置与初始化,就需要系统启动相关服务,进入等候状态。根据总线数据请求切换相关工作模式,启动相关服务功能,或者在无请求服务时切换到APP程序运行。如果Bootloader判断条件满足可以切换到APP运行,那么在切换完成的时刻,Bootloader生命周期已经结束。

3、结论

本文就英飞凌车用微控制器XC2000系列芯片的运行原理及其Bootloader的设计思路做以分析。探讨了关于程序跳转,存储区读写操作,存储区加密解密三个核心技术的难点与解决思路。Bootloader的实际应用能够很好的在开发、产品量产、终端维护等多个方面提供有力帮助,能够有效的减少各个环节的人力物力,并且丰富的扩展功能使得产品追踪,产品信息查询成为可能。Bootloader仅是一个基础工具,如何丰富该工具,使其能够发挥更大的功效值得深入研究与学习。

[1] 程夕明.汽车嵌入式微控制器原理及应用—英飞凌XC2000家族MCU [M].电子工业出版社,2013.9.

[2] 王伏,张忠能,杭勇等.基于CAN总线的电控单元程序,引导加载功能开发[J].微型电脑应用,2011,27(9):30-32.DOI:10.3969/j.issn. 1007-757X.2011.09.010.

[3] 黄娟娟,夏超英,柳同生等.基于英飞凌XC2268N的整车控制系统CAN通信设计[J].仪表技术与传感器,2014,(5):60-62,72.DOI:10. 3969/j.issn.1002-1841.2014.05.020.

The Automotive Microcontroller of Infineon Bootloader Design

Li Rui, Zhang Xiaoming
( Xi 'an special automobile transmission engineering research institute, Shaanxi Xi 'an 710119 )

This paper introduces about a kind of bootloader design based on Infineon XC2000 series chip. This paper introduces the overall architecture, hardware structure, and expounds the design and implementation of the system software in detail. The Bootloader is based on XC2000 platform, so it has a good portability. It is suit for all series products of Infineon XC2000 in theory. The Bootloader contains the various functions of system initialization, the application of switching, flash encryption or decryption, programming through the CAN network, software version control and so on. The bootloader improve the product life by software and meet the design demands.

Infineon; XC2000; Bootloader; Encryption

U462.2

A

1671-7988(2016)07-144-03

李睿,通讯作者,就职于西安法士特汽车传动工程研究院。

10.16638/j.cnki.1671-7988.2016.07.045

猜你喜欢

英飞凌微控制器寄存器
Lite寄存器模型的设计与实现
TASKING针对英飞凌第三代AURIX微控制器推出多核开发环境
常用电子测速法在某数字信号处理器中的应用*
移位寄存器及算术运算应用
英飞凌收购科锐Wolfspeed芯片业务 8.5亿美元
电磁导向智能车设计探讨
基于MC9S08QG8低端微控制器的无线控制器设计
11.53亿欧元
英飞凌发布2008财年第四季度及全年财务数据