Bootloader开发:uC如何烧录第一个程序?

搞汽车开发的小伙伴们,是否思考过这样一个问题:“一颗"裸"芯,即:没有Bootloader和Application程序的uC,如何将Bootloader程序烧录进uC?”要弄清楚这个问题,我们先从BootROM说起。本文讨论内容:
1、BootROM

2、Debug Interface

3、工厂如何给"裸"芯烧录程序

提示:本文以Aurix tc3xx为例

1 BootROM

BootROM,也叫“固件”(Fireware),主要包含什么呢?

  • SSW:Startup Software (支持SOTA:Software over the Air )。SSW是芯片复位后,执行的第一个软件程序。注意:芯片复位后,执行的第一个程序不是Bootloader。一个正常的软件执行顺序如下所示;
    在这里插入图片描述
  • CHSW:Checker Software。

注意:芯片出厂时,BootROM中固化了默认内容。

1、BootROM地址空间

Cached方式访问,BootROM所在的地址空间如下所示:
在这里插入图片描述
No-Cached方式访问,BootROM所在的地址空间如下所示:
在这里插入图片描述
BootROM的空间大小为64 KByte,可以使用Cached方式或者No-Cached方式访问,注意:两者对应同一个物理内存区,只是访问方式不同。

BootROM位于DMU(Data Memory Unit)内,如下所示:
在这里插入图片描述

2、SSW(Startup Software)作用

既然SSW是程序复位后执行的第一段程序,该程序的主要作用是什么呢?答:确定用户设置的启动流程。SSW又是依据什么确定用户的启动流程呢?答:Boot Mode Header(BMHD),对于英飞凌Aurix TC3xx平台,用户可以设置4个BMHD,以及4个备份BMHD。BMHD的格式固定不变,如下所示:

Field NameSubfieldDescription
**BMI **Boot Mode Index - 16 bit
PINDIS bit [0]Mode selection by configuration pins:0B Mode selection by HWCFG pins is enabled 1B Mode selection by HWCFG pins is disabled
HWCFG bits [3:1]Start-up mode selection:111B Internal start from Flash 110B Alternate Boot Mode (ABM) 100B Generic Bootstrap Loader Mode (ASC/CAN BSL) 011B ASC Bootstrap Loader Mode (ASC BSL) else invalid
LSENA0 bit [4]Lockstep monitoring control by SSW for CPU0:0B Lockstep monitoring for CPU0 is disabled 1B Lockstep monitoring for CPU0 is enabled
LSENA1 bit [5]Lockstep monitoring control by SSW for CPU1: 0B Lockstep monitoring for CPU1 is disabled 1B Lockstep monitoring for CPU1 is enabled
LSENA2 bit [6]Lockstep monitoring control by SSW for CPU2: 0B Lockstep monitoring for CPU2 is disabled 1B Lockstep monitoring for CPU2 is enabled
LSENA3 bit [7]Lockstep monitoring control by SSW for CPU3: 0B Lockstep monitoring for CPU3 is disabled 1B Lockstep monitoring for CPU3 is enabled
LBISTENA bit [8]LBIST execution start by SSW:0B LBIST execution start by SSW is disabled 1B LBIST execution start by SSW upon cold power-on is enabled
CHSWENA bits [11:9]Checker Software (CHSW) execution after SSW: 101B CHSW execution after SSW is disabled else CHSW execution after SSW is enabled
reserved bits [15:12Reserved for future extensions, must be configured to 0 in UCB_BMHDx
BMHDIDBoot Mode Header Identifier - 16 bit: B359H BMHDID OK else BMHDID invalid
STADStart address (always must be inside PFLASH, word-aligned) - 32 bit:if ABM selected Start address of the Alternate Boot Mode Header if Internal start selected Start address of the user code else not considered for mode selection
CRCBMHDCheck result for the Boot Mode Header - 32 bit
CRCBMHD_NInverted check result for the Boot M

SSW评估BMHD的有效性,如果BMHD有效,则程序跳转到BMHD指定的用户启动地址(STAD),这里的启动地址必须在PFlash空间。一般这里会设置Bootloader的入口地址,程序进入Bootloader以后,如果Application程序不更新,程序跳转到Application的主程序(main(()函数处)。之后,就是程序初始化以及程序运行。

但是,芯片刚出厂的时候,处于“空白”状态,BMHD中还没有有效的信息,也没有Application和Bootloader程序,此时,SSW评估所有的BMHD,发现均无效,SSW往哪里跳(Jump)呢?当SSW没有可用的启动模式时,程序只能停留在SSW中。此时,BootROM检查Debug接口是否可以访问(即:调试器连接的DAP或者JTAG接口),如果Debug接口可用,则通过该方式更新程序,否则,SSW程序进入死循环,如下所示:

在这里插入图片描述

2 Debug Interface

上一小节提到,当所有的BMHD均无效的时候,SSW无法进入用户代码(User Code),可以通过Debug接口的方式下载User Code到uC中。但是,这里需要Debug接口可用才可以。TC3xx中,Debug的默认接口是使能的吗?答:是的。Debug interface的配置在UCB18中,Debug的使能与否主要由PROCONDBG寄存器决定。UCB18的结构如下所示:
在这里插入图片描述
PROCONDBG寄存器的默认值为0x00000090,因此DBGIF LCK位域和OCDS DIS位域默认处于解锁状态,如下所示:
在这里插入图片描述

3 工厂如何给"裸"芯烧录程序

本小节从Tier1的视角,了解一下"裸"芯数据的烧录过程。对于"裸"芯罐装数据的操作方式有两种。

方式一:芯片嵌入专用烧录卡槽

产品开发商从芯片供应商拿到芯片以后,芯片内没有任何用户程序,BMHD中也没有有效信息。产品开发商会通过如下步骤,对芯片进行初次烧录:

1、将芯片放置到专用的"芯片卡槽"内;

2、刷写上位机通过DAP/JTAG将程序刷写到"裸"芯中;

3、之后将芯片焊接到板子上。

示意如下所示:
在这里插入图片描述

方式二:通过板子预留的Debug口

将芯片提前焊接到"产品件"上,之后通过板子上的DAP/JTAG卡槽,连接刷写上位机,通过Debug口刷写程序,示意如下所示:
在这里插入图片描述
对于OEM来说,整车中的每一个件都含有Bootloader,OEM一般不会存在"裸"芯的困扰。OEM更新某个ECU的时候,会通过预留的车载自动诊断接口(OBD:On Board Diagnostics)升级某个ECU,当然,也可以通过OTA升级的方式更新。

不管通过OBD接口,还是OTA方式,升级某个ECU的时候,一般需要经过网关,甚至子网关,方能升级某个终端节点,示意如下所示:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值