英飞凌Tc3xx Startup Software

        由于后续的项目用到芯片是Tc3xx,因此以往Tc2xx的经验不再完全适用,因此重新阅读Tc3xx用户手册并查阅了相关资料,结合自身涉及的项目做一个总结。

Startup Software 是什么

        Startup Software(SSW)是芯片复位后首个执行的软件,运行于CPU0,其他CPU在启动时保持暂停状态,需由用户软件启动。

        具体的,有:

  • 启动地址​:SSW在BootROM中的起始地址即为CPU0 PC寄存器的复位值。从此地址获取的指令是设备启动后执行的第一条指令。
  • 测试模式检查​:执行入口指令后,固件立即检查测试模式。若选择测试模式,则跳转至测试固件执行。
  • UserCode跳转​:最后一条软件指令执行跳转至用户代码的首条指令,该指令的获取位置取决于用户选择的启动配置。

SSW包含以下初始化程序​(基于以下一项或多项条件):

  • 预先存储于专用Flash位置的信息
  • 专用寄存器/内存位置中特殊位/字段的当前状态
  • 触发软件执行的复位事件类型
  • 外部配置引脚输入值(可选)

有哪几种Start Modes

       其实就本人关注点而言,是我在烧入FBL后,软件是否能跑起来,如果跑不起来,为什么会跑到一些莫名其妙的地址,比如0xA0000020,或者0xA0000160。那么先了解下,对于Tc3xx而言,有哪些启动方式可选。

Internal Start

        这种启动模式,设备将从内部PFlash获取首条用户指令。用户代码起始地址(STADD)可通过启动模式头(BMHDx.STAD)数据结构进行配置。

Bootloader Modes

        这种启动模式,用户手册中描述地比较抽象,实际上就是通过ASC/CAN获取上位机的发送的代码数据,而后放入ECU的RAM中执行。(由于本人接触的项目有限,暂未涉及到此类型的Bootloader Modes,此处纯为个人理解,若理解有误请海涵指正。)

Alternate Boot Modes

        这种启动模式,可以通过数据结构ABMHD中的ABMHDn.STADABM去配置启动地址,并使ECU从该地址开始执行,前提是满足部分前置条件,若不满足,则选用其他启动模式。

如何选择并评估启动模式

        启动模式的评估流程如图所示,为了便于理解,个人将其分解为三部分,并重点关注第二部分的理解。

第一部分

        第一部分是根据BMHD数据结构对其中各项子元素进行验证,例如UCB_BMHD的状态、BMHDID是否为0xB359、BMHD的CRC等等。

Note:UCB_BMHD实际上就是Tc3xx NvM模块中DFlash的一块区域,一共四个,如用户手册原文所描述。在项目中,会以Hex格式的数据与Bootloader或者Application代码一并烧入ECU。

第二部分 

        这个部分首先对是否由HWCFG pins决定启动模式进行判断,即由BMI.PINDIS决定,若0则启用HWCFG,反之则禁用。当使能HWCFG时,据HWCFG的pin脚高低决定启动模式,如图所示。

        例如我接触的项目甲,从左往右是1 1 1 0 0 0,而项目乙则为 1 1 0 1 1 0,那么项目甲HWCFG[3] = 1,选用Flash BMI Boot,直接按上文UCB_BMHD结构中的BMI的信息进行启动;而项目乙HWCFG[3] = 0,那么需要继续一句HWCFG[4][5]判断启动模式,而HWCFG[4][5] = 1 1,最终选择了Internal Start。

        而项目甲的UCB_BMHD被配置为如图,根据上文对BMI的结构介绍,可以知道BMI.HWCFG[3:1] = 1 1 1,殊途同归,也是走上了Internal Start的道路。

        进一步,根据UCB_BMHD.STAD的解释,若选择Internal Start,那么直接选择STAD配置的地址为程序的起始地址,并从此处启动。 

第三部分

        若为选择为ABM,则加载ABMHD,按ABMHD中的配置启动,若非ABM,且非BSL启动,则为Internal Start,若未BSL启动,则根据BSL中获取的代码数据,从CPU0_PSPR_begin启动。

Note:BSL启动可以简单理解为通过ASC/CAN获取程序数据,而后根据获取的数据决定如何启动程序。

如何评估ABM启动模式

        ABMHD的数据结构如图,在启动前会进行类似BMHD的校验流程。

         此处需要额外理解的是,如图。n = 3意味着已经遍历到第四份BMHD了,仍然没找到有效的启动配置,那么就判断ABM启动失败,此时根据上文HWCFG[4][5]的信息选择相应的BSL启动模式。

若无有效BMHD及未配置启动模式的处理程序

        若上述流程未找到有效的BMHD,SSW将不会执行用户代码。此时SSW会对设备进行预处理,使用户能够进行以下操作:

  1. 连接调试接口
  2. 安装有效的启动模式头
  3. 将应用程序代码烧录至PFlash
  4. 配置其他设备参数

        如果HSM BOOT或者BM Lock使能了,还是没找到相应的启动地址,芯片就会上锁,调试器无法连接。若不是,那么仅仅是没法启动芯片,调试器还能连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值