专栏名称: 汽车MCU软件设计
汽车MCU软件工程师,分享汽车功能安全、网络安全和AutoSAR
目录
相关文章推荐
兰州大学萃英在线  ·  叮咚!新学期突袭,什么来了? ·  昨天  
武汉大学学生会  ·  珈学周报|第149期:本周焦点&学情周报&《 ... ·  17 小时前  
江苏新闻  ·  一大学突然宣布:停招27个本科专业! ·  昨天  
江苏新闻  ·  一大学突然宣布:停招27个本科专业! ·  昨天  
武汉大学  ·  爆改J人!进来领取武大定制计划表 ·  3 天前  
川大研究生  ·  川大研究生的一天 | 风景园林研究生的一天 ·  3 天前  
51好读  ›  专栏  ›  汽车MCU软件设计

英飞凌TC3xx HSM相关UCB解读

汽车MCU软件设计  · 公众号  ·  · 2024-05-17 18:13

正文

目录
1. Aurix引入HSM的问题思考
2. HSM的使能配置
2.1 HSM的CodeFlash配置
2.2 HSM的配置信息
3.总结

1. Aurix引入HSM的问题思考

(1)TC3xx使能HSM后,HSM的代码应该存放在哪里?
在UserMannul Part6中,明确定义了Host、HSM Code在PFlash的位置,如下图:

当有HSM后,PFlash0的S0-S39均给HSM使用,当然如果有TP数据需求,HSM从S8开始。注意哦,这里面肯定没有HSM的bootrom, 因为BootRom在芯片出厂时就已经掩模在ROM介质里,所以PF0里面存放的是HSM的firmware,也即HSM User Code。
此外,当我们要使用硬件A\B SWAP,需要特别注意,对应Backup的Flash区域是否也有相应的HSM预留呢?答案是肯定的,原文如下:


因此,这个带HSM的A\B SWAP方案可如下图所示:


(2)HSM如何实现安全启动?安全启动通常是基于信任链的启动,因此,Host需要等待HSM把该校验的程序、数据段验证完毕、形成一个安全的运行环境后,再跳转至应用程序启动。所以,这里是否需要考虑在哪里等待?英飞凌会提供这种机制吗?
该问题在Tricore的SSW可以得到解决,SSW中会判断一个标志SSWWAIT用于决定是否等待HSM的通知就跳转至User Code。因此,我们可以利用这个机制来实现顺序、并行、混合的安全启动机制。做过的人肯定知道我在说什么。
(3)HSM引入后,对于HSM的debug是如何进行的? HSM的debug接口在什么情况打开?软件要控制吗?
带着这个问题,我们来看HSM的UCB能否找到答案。

2. HSM的使能配置
好,有了上述思考之后(注意上述思考没有加入FuSa和TARA的分析哦)。
现在来看手册,怎么使能HSM。
2.1 HSM的CodeFlash配置
第一步,先给HSM找个家。自然而然,我们就要去NVM章节找寄存器。

寄存器手册中,HSM Code相关的如上图,可以看到,这里每个bit都是rh的,这就奇怪了,不能配,那咋办?没办法,去UCB看看吧。

在UCB20中,PROCONHSMCX0/1均是对HSM code sector的配置。那么具体是如何配置的呢?
直接对照寄存器填1即可,这里对寄存器bit HSMxX,我曾经产生过疑问,大写的X具体指啥?开始我认为是对应PFlash的Bank序号,因为在做SWAP时,假设PF0/1 和PF2/3做SWAP,那么PF0和PF2的前40个sector都要给HSM使用。但后来再仔细想想,对于AB SWAP,CPU只会访问活动区的地址,使用者会操作CPU去刷写Host 的非活动区地址(一般HSM很少升级),并且对于上述寄存器,只有一个偏移地址,没有对应bank的i*offset那种。所以这里就有点疑惑了,难道对于SWAP只需要配一个PF0,对PF2的HSM保护由硬件自己实现?
Anyway,切回主题。
给HSM code找到家之后,现在要做的就是告诉Host,我要用HSM了。因此,沿用找家的思路,继续查看UCB20里面有没有配置项。
2.2 HSM的配置信息
UCB20里,确实有很多。我们一个一个来看。

针对SF_PROCONUSR,寄存器定义如下:

选择DF1的模式,默认是单端模式,注意这里DF1和DF0必须是一样的模式。
这里就奇怪了,为啥要设置DF1?难道说HSM独占了DF1?在芯片手册搜HSM

好家伙,新大陆来了,看寄存器HSMDX这一bit,明确说明了DF1由HSM独占。
因此寄存器SP_PROCONHSMCFG看来很重要啊。
配置项包括:

HSMBOOTEN: 启动使能标志

SSWWAIT: SSW软件是否等待HSM通知后才跳至用户代码)

HSMDX: 独占DF1

HSMRAMKEEP: 根据复位源来清除HSM SRAM (说明HSM内部有独立RAM)

HSMENPINS: HSM是否可以强制接口pins HSM1/2

HSMENRES: HSM是否可以触发app/system reset

DESTDBG: Debug调试接口是否为可破坏性(问题又来了,host还是hsm debug)

BLKFLAN: flash指令序列verify erased page等是否在HSM code上支持

配置完上述UCB后,接下来,我们要考虑,HSM虽然是放在了PF0前40sector,但是最重要的中断向量表放在哪里的呢?想必也是有UCB可以搞定吧。
芯片手册往下一翻,来了

在这里我们可以看到,总共可以配置4个HSM BootSector。再结合HSM User Code的大小一般在200-300K左右,我们可以初步断定4个启动地址是为了增加系统鲁棒性,例如在预研HSM时,可以放两个相同的HSM User Code,并配置BOOTSEL,保证冗余。毕竟SSW里看到如果HSM使能了,稍有不慎就要锁板子。

妥了,HSM在UCB的配置已经七七八八了。但还有一个 UCB19

对应寄存器为SP_PROCONHSM,如下:

这可太关键了,对Debug口的配置。

HSMDBGDIS HSM debug使能

DBGIFLCK :芯片的debug是否lock

TSTIFLCK :芯片的测试接口是否lock

HSMTSTDIS: HSM测试使能

HSMTRDIS: HSM的trace功能使能

HSMTRTYPE: HSM trace地址和数据


3.总结
要使能HSM,可按以下步骤来:
HSM boot sector 配置
HSM SECTOR独占标志位
HSM CFG寄存器配置
HSM Debug配置
需要特别注意的是,一定要保证HSM Sector里已经刷好相关代码后再去进行这些配置,复位前反复确认。特别是如果使能了SSWWAIT,一定得搞明白HSM是用什么方式去通知Host的,这在SSW里固化好的流程。当然,如果不清楚建议不配置SSWWAIT。
最后,HSM相关UCB总结如下:



往期回顾:

1.汽车标定精选

汽车标定技术--标定概念详解
汽车标定技术--Bypass的前世今生
万字长文:汽车标定技术--XCP概述

2.AUTOSAR 精选







请到「今天看啥」查看全文