英飞凌TC3xx 启动逻辑梳理(1)

目录

1.启动时序总览

2.Boot Firmware干了什么?

2.1 BMHD梳理

2.2 HWCFG

2.3 ABM

2.4 BMHD 无效时处理方案

2.5 HSM启动如何影响SSW启动

3.小结


在调TC3xx的板子时,最害怕的就是刷UCB;稍不注意板子就上锁,调试器也连不上了,这里面的逻辑是什么?

在设计SafetyLib时,对于芯片启动阶段的功能安全逻辑应该是怎样的?

在设计SecurityLib时,对于芯片启动阶段的信息安全应该如何考量?

今天就这几个方向来梳理一下TC3xx的启动流程。

1.启动时序总览

常见MCU的启动时序通常可以分为三大步,如下图:

  1.  当外部电源上电后,MCU进入到复位状态,此时不会跑任何代码;这个阶段主要是芯片供电选择、时钟开启、各个IP复位释放;
  2. 硬件完成上述工作后,将PC指向BootRom中代码(下文称Firmware)的首地址,此时软件开始参与工作,包括用户配置参数的判断和加载、特定寄存器状态判断、复位源设置、启动模式评估等等;需要注意的是Firmware是芯片在流片时固化好,后续用户无法修改,因此这部分代码逻辑我们会在芯片的UserMannul看到,例如英飞凌TC3xx UserMannul Platform Firmware;
  3. Firmware执行完成后,通常会跳转至用户的启动代码(正常流程),这就是我们软件开发常见的start.s;这部分用户进行定制化开发,进一步初始化软硬件;最后跳转至不同Core 的应用代码。

这么简单描述起来,感觉是不是很简单。但是当我们把Boot Firmware中启动模式评估、功能安全以及信息安全结合到一起时,总会有在本文开头提到的那些疑惑。

那么接下来我们来过一遍Boot Firmware流程,再补充Safety和Security的一些思考。

2.Boot Firmware干了什么?

在TC3xx的Boot Firmware由CPU0执行,包含了两大功能:

  • Startup Software:简称SSW,主要用于加载用户配置数据、启动模式选择、错误状态处理等等;
  • Checker Software:简称CHSW,用于检查SSW中的配置是否正确

2.1 BMHD梳理

SSW有很多步骤,这里就不一一列举了,基本流程如下:

其中,最值得我们关注的是在启动模式的选择、Error Pin的处理。

前者涉及到我们芯片能不能正常起来(锁板子的痛),后者涉及到系统级功能安全的设计。

启动模式选择与我们在UCB中关于BMHD的配置息息相关,TC3xx共计8个BMHD,其中4个原始BMHD,4个COPY BMHD防止数据损坏,如下图:

 因此,为了MCU能正常启动,我们至少得配置一个有效的BMHD,具体配置项如下:

其中,BMI_BMHDID包含了启动模式、功能等配置信息,以及这个Header的固定ID:0xB359(还挺幽默,转出来显示"Y"):

SSW软件在进入模式选择流程后,首先会判断Origin BMHD是否有效, 这其中包括ID、STAD、BMI、CRC、CRCN的判定,如果都通过了,则会判定PINDIS和Boot Mode Lock,用于确定是否使用硬件Pin来选择启动模式。

2.2 HWCFG

假设使用硬件HWCFG用于启动模式选择,这时候Hardware Configuration Pins派上了用场(PMS章节 Figure92),如下图:

SSW会检查pin是否使能(HWCFG[3] == 0 ),如使能则根据SCU_STSTAT中锁存的HWCFG[4:5]两个PIN脚的电平进行模式选择;

不过这种方式有个风险,容易被暴力刷新,比较少用。

如果不使用硬件PIN选择启动模式,那么就根据我们在UCB_BMHD配置的启动模式进行配置(BMHD.BMI,HWCFG[3:1])。注意,这里非常容易和硬件HWCFG[5:4]搞混淆,其实只要明确一个是通过硬件PIN,一个是通过UCB里的配置(软件)即可。

2.3 ABM

英飞凌TC3xx提供了四种启动模式,从内部Flash启动、ABM(Alternate Boot Mode)启动、CAN Bootstrap和ASC Bootstrap;

在这之前我去回顾了TC27x的启动流程,并与TC3xx进行对比,从中发现了一些端倪。

TC27x也分从内部Flash启动和ABM启动,但是如果选择从内部Flash启动,启动地址固定为0xA0000020。

这种固定的启动方式在今天看来有些笨拙,所以提出了ABM模式供用户任意配置启动地址。

从TC27x的BMHD也可以窥探到一些信息,其结构如下:

可以发现TC27x中BMHD仅有STADABM,没有TC3xx的STAD配置项,且这个BMHD是存在PFlash 0xA0000000-0xA000001F这个位置,所以它的ABM启动方式为:

而到TC3xx系列,它把BMI.STAD做成了两种方式:

  • 从内部Flash启动,STAD就直接指向用户代码;
  • 从ABM模式启动,STAD指向ABM Header存放的地址;

 因此这二者启动方式总结如下:

但仔细看,这二者都在从内部Flash启动,在应用层面的用法有什么不一样吗?

我们从BMHD、ABMHD的存放位置和结构属性进行分析。

TC3xx的BMHD存放在UCB中(DFlash),而众所周知UCB的刷新很容易导致板子上锁;ABMHD存放在PFlash中,这就好办了,随便刷。示意如下:

那我们是否可以BMHD配置为ABM,然后在ABM里配置启动地址,这样刷UCB的次数少了,相应锁板子的几率就小了?

2.4 BMHD 无效时处理方案

当所有BMHD无效时,SSW给出了解决方案,流程图如下:

可以看到,当HSM Boot没有使能且Boot Mode没有上锁时, 即使没有BMHD,SSW仍会从PFlash0或者CPU0_PSPR进行启动;

那为什么会锁板子呢?锁板子意味着调试器都连不上,当没有找到任何有效BMHD时,HSM Boot如果开启了,或者BootMode上锁了(DMU_HF_PROCONTP.BML),则找不到有效的BOOT_CFGH,在3.1.1.6.4章节,详细描述了这种情况,如下图:

这就有点疑惑了,什么叫做该设备的默认配置失效?同时参考流程图,如果Debug访问是使能的,则解锁调试接口,很多人就是卡在这一步,主要是CBS_OSTATE\CBS_OEC这类似的寄存器也是需要NDA的,不太了解其原理。

2.5 HSM启动如何影响SSW启动

当SSW启动完成后,按理说应该跳转至用户代码开始运行,但在TC3xx中还有一个特别的配置,即SSWWAIT,用于决定SSW是否等待HSM响应后才运行用户代码,如下:

 因为我们可以推断出其运行逻辑如下:

而我们常见顺序、并行、混合启动逻辑,就在这HSM SecureBoot Code中进行处理。 

3.小结

限于篇幅,本章讲述了SSW里面的一些关键事项,接下来我们来看应用启动代码中的逻辑

  • 23
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
英飞凌tc3xx safety 手册是一本关于英飞凌tc3xx系列产品安全性的研究手册。该手册主要涵盖了英飞凌tc3xx系列产品在安全方面的设计原则、功能特点和使用方法等内容。 首先,英飞凌tc3xx系列产品是一类具备安全功能的电子芯片。手册详细介绍了该系列产品的设计原则,包括硬件和软件方面的安全措施。硬件方面,手册解释了如何通过物理隔离和安全芯片设计来防止潜在的安全漏洞。软件方面,手册介绍了如何编写安全的代码和使用加密算法来保护系统的安全性。 其次,手册还介绍了英飞凌tc3xx系列产品的功能特点。这些产品具备了多种安全功能,包括故障检测和容错机制、身份验证和数据保护等。手册详细解释了这些功能的原理和实施方法,为用户提供了使用技术支持和指导。 最后,手册还提供了一些使用英飞凌tc3xx系列产品的案例和实例,以帮助用户更好地理解和应用这些安全功能。例如,手册可能包含了一些具体的安全设计方案和实施步骤,让用户能够根据自己的需求和环境来配置和使用英飞凌tc3xx系列产品。 总体而言,英飞凌tc3xx safety 手册是一本关于英飞凌tc3xx系列产品安全性的专业研究手册。通过阅读该手册,用户可以了解到关于产品设计原则、功能特点和使用方法等方面的重要信息,从而更好地应用英飞凌tc3xx系列产品来保护系统的安全。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CyberSecurity_zhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值