英飞凌AURIX HSM介绍

参考手册:英飞凌培训ppt HSM Introduction

1. HSM介绍与架构概述

HSM: Hardware Security Module,硬件安全模块,如下图深色模块所示。

该模块提供了逻辑攻击保护,依赖于在主机中实现的以下特性:

  1. 给HSM足够保护和锁定闪存区域
  2. 在Flash配置区有OTP(One time programmable)页
  3. 配置区中留有HSM内存区域
    3.1 该区域对修改的锁定(OTP)
    3.2 在启动过程结束后,可以关闭配置区的HSM区域
  4. 复位后HSM模块配置MBIST,配置MBIST后HSM启动。

HSM不包含针对物理攻击的硬件对抗措施。
针对侧通道攻击和故障攻击的对策必须由软件实现

1.1 CPU

基于Cortex-M3,集成24位系统定时器(SysTick Timer),NVIC控制器,支持MPU和安全特性

部分异常事件如下图所示:

1.2 TRNG、通用定时器和缓存

4Kbytes统一数据和指令缓存,真随机数发生器(TRNG),2个16位通用定时器
其中TRNG:为加密算法(密钥)、协议(挑战、盲值、填充字节)等提供随机数据。

1.3 AES模块和防火墙

AES(Advanced Encryption Standard,高级加密标准)模块带有8个128位(其中2个是不可更改的)本地密钥5个(包括1个用于伪RNG)上下文存储
防火墙功能:HSM内部保护免受其他主机的访问。

  • SPB上BUS总线可以访问完整的系统内存映射
  • SFRs用于数据通信
  • SFRs 可以触发HSM CPU中断
  • 32个HSM外部中断输入,映射到NVIC的一个中断节点
  • 2个中断信号从HSM到系统中断控制器
  • 最多10个传感器的输入
  • 2个引脚的控制
  • 用于触发芯片的应用程序和系统复位的选项

1.4 Boot ROM (4KB)

  • 包含启动HSM所必需的代码和只读数据
  • ROM可以通过DBGCTR(安全保护和功耗)在引导软件完成时关闭
  • ROM数据采用1位纠错和2位纠错检测保护
  • ROM采用校验和测试

1.5 本地RAM

  • 24KB/40KB (A1G)
  • 96KB (A2G)
  • 复位丢失
  • RAM通过MBIST测试
  • 1位错误纠正
  • 2位错误检测
  • 本地RAM的前384个字节为BOS保留(在用户操作系统中完全可重用)

1.6 看门狗定时器、Hash模块和PKC模块

看门狗定时器:一个16位向上计数
Hash模块:SHA224/256硬件加速器,用于签名生成、验证和通用数据完整性检查
PKC模块:ECC-256硬件加速模器,支持快速签名生成和ECDSA验证

这3个模块只适用于A2G

1.7 A1G

对于A1G,PFx中的HSM Flash专用扇区。TC23x/TC27x/TC29系列S6 16KB,S16和S17共128KB

TC27x/TC29x系列也可以用Dflash 8×8KB=64KB

1.8 A2G

对于A2G,PFx中的HSM Flash专用扇区。共40×16KB=640KB。
配置选项:如果需要并行TP和HSM操作,那么PF0 S0到S39可以配置为TP和HSM PCODE,如下所示:

  • PF0 S0:特定TP用途
  • PF0 S1至S7:TP扩展存储器
  • PF0 S8至S39:HSM PCODE

TP,HSM PCODE和CPU地址范围应该是连续的

对于A2G,DFlash Bank1中的HSM Flash专用扇区

1.9 其他模块

其他可选模块,实现安全相关应用

  • Secure Boot(安全启动)
  • Tuning protection(调优保护)
  • Secure sensor communication(安全传感器通信)
  • Authentication(身份验证)
  • Secure flash load(安全闪存加载)
  • Immobilizer (theft protection)(防盗控制系统,防盗保护)
  • Secure log (安全日志)
  • Secure debug authentication(安全调试身份验证)

2. 真随机数发生器TRNG

TRNG:True Random Numbers Generator,用于生成随机数:

  • 密钥加密算法
  • 支持协议


需要高“熵” (High “entropy”)

  • 与随机变量相关的不确定性
  • 熵越低,位值越可预测
  • 实现增加熵的后处理

质量(最小熵要求)由德国BSI发布的AIS-31定义

2.1 TRNG熵(TRNG Entropy)

  • HSM实现TRNG熵:根据BSI AIS 20/31功能类PTG.2的真随机数生成器,每位香农熵至少H1 = 0.9991363
  • 如果从TRNG中收集了80 bits= 10 bytes的数据,则会得到H1 = 80*0.9991363 = 79.93 bits的熵。
  • 如果基于AES的PRNG是从这个TRNG中播种的,那么无论如何都会用16 byte的随机数据初始化状态(即127.9 bit的熵),其中16 byte是AES的块大小。

注意:BSI文件AIS 20/31取代了AIS-31,旧的“P2 high”现在被称为“PTG.2”。但这对TRNG来说没有任何改变。

2.2 TRNG 吞吐量

生成随机数所需的时间不是常数,取决于源的“熵”水平
吞吐量R以千比特每秒(kb/s)为单位,如下公式所示

对于100MHz的时钟频率,典型的吞吐量大约是Rtyp = 360kb/s
如果在生成由TRNG_CTRL.DBS指定的大小的数据块之前经过了最大时钟周期数。则TRNG_STAT.WARN提示警告

2.3 TRNG操作步骤

  • TRNG模块一旦启用,就会连续为系统操作生成真正的随机字节(TRNG_CTRL.DIS= 0)
  • 新的真实随机数据的可用性由TRNG_STAT.DTA_RDY位发出信号并触发相应的“输出缓冲区不空”中断
  • 在重新开始生成之前,TRNG等待数据被读取
  • 一旦数据被读取(从TRNG_DATA),标记位TRNG_STAT.DTA_RDY被硬件清除
  • 当数据质量太差时,没有新的数据生成(由FIPS_ERRWARN位+ 中断报告)
  • 当模块通过设置控制位TRNG_CTRL.Dis = 1失能时,TRNG进入睡眠模式。

2.4 伪随机数发生器PRNG

PRNG:Pseudo Random Numbers Generator,可以使用TRNG + AES CBC(密码块链模式)来实现。
在数字硬件中构建PRNG比TRNG容易得多。一旦PRNG被正确地播种,它可以非常快地产生不可预测的输出

3. AES 128 加密/解密模块

AES:Advanced Encryption Standard,高级加密标准,模块如下所示:

3.1 AES 128 模块特性

AES模块是一种快速硬件设备,通过128位密钥支持加密和解密AES
它可以对单个128位数据(即纯文本或密文)块进行纯/简单加密和解密,以及对每个128位的大量数据块进行加密或解密。对于这些,实现了几种操作模式

  • ECB(电子代码本模式)
  • CBC(密码块链模式)
  • CTR(32位计数器模式)
  • OFB(输出反馈模式)
  • CFB(密码反馈模式)

这也支持其他模式

  • GCM (Galois计数器模式)
  • XTS(基于XEX的微调代码本模式(TCB)与密文窃取(CTS))

此外,AES模块支持以下功能:

  • 8个AES密钥的内部存储不可读
  • 密钥0和1是可锁定的,即不可写也不可读
  • 5个上下文寄存器用于不同的操作模式
  • 最大延迟1µs @ 100 MHz

3.2 AES 128 模块寄存器

HSM包含SFR寄存器内部寄存器

SFR寄存器由CPU直接访问

  • 控制寄存器AESCTRL
  • 状态寄存器AESSTAT
  • 输入寄存器AESIN,由4x32位字寄存器组成
  • 输出寄存器AESOUT,由4x32位字寄存器组成
  • 第二个输出寄存器AESOUTSAVE,由4x32位字寄存器组成。

注意:输出寄存器AESOUT在加/解密操作期间不能被CPU访问

内部寄存器只能通过SFR寄存器间接访问

  • 8个关键寄存器(Key Registers)K0, K1,…, K7(128位)。
  • 5个链接变量寄存器(Chaining Variable Register)CV0, CV1, CV2, CV3, CV4,每个都是128位

3.2.1 控制寄存器AESCTRL

AES模块的以下操作完全由AESCTRL寄存器来控制:

  • AESIN复制一个键值到某个K[x] (x=0,…,7)寄存器

  • 锁定键K0K1,使他们不能再写入

  • AESIN复制IV(Initial Value,初值)到一些链接变量寄存器CV[y] (y=0,…,4)

  • 值从CVy复制一个CV到AESOUT

  • 在AESIN中对输入进行密码学处理,最多使用一个指定的密钥和链接变量并在AESOUT中输出。

  • 保存AESOUT的内容到AESOUTSAVE。这只是一个间接的过程,如果触发一个将覆盖AESOUT的进程,它将自动发生。

3.3 加密/解密操作步骤

通常加密/解密操作是这样完成的:

  • 密钥被加载到某个K[y]寄存器中
  • 初始值IV被加载到某个CV[y]寄存器中。
  • 然后在输入寄存器AESIN中填充密码操作的输入
  • 写AESCTRL寄存器字段触发加密/解密操作:
    • OPC—Operation Code,操作码
    • KEYNR—Key Number,密钥数。带有无效KEYNR的操作码将被忽略
    • CVNR—Chaining Variable Number,链接变量数。带有无效CVNR的操作码将被忽略
  • 等待AES (AESSTAT.BSY)完成操作
  • 从AESOUT读取输出

3.4 AES 128 性能

对于128位数据块的加密/解密AES 128 CBC算法需要14个时钟周期
AES 128在系统级别上的性能不易获得,依赖于SW实现,并且可能由于以下原因而有所不同:

  • AES 128 key的位置。如AES模块,HSM SRAM或HSM DFLASH
  • HSM Code的位置。HSM SRAM或HSM PFLASH
  • 利用实现ARM-M3数据缓存。如交叉并行AES操作和数据传输
  • 从主机到HSM使用SW API的效率。例如基于AUTOSAR的协议开始/更新/结束可能添加一些额外的延迟
  • MAC操作额外的安全检查
  • HSM运行频率。100 MHz频率

3.5 CBC

CBC:Cipher Block Chaining Mode,密码块链接模式。128-bit块使用128-bit关键字+IV(Initial Value,初始值)进行加密/解密

3.6 ECB

ECB:Electronic Code Book mode,电子码本模式。128-bit块使用128-bit关键字进行加密/解密

4. 公钥加密(PKC)模块

PKC:Pubilc Key Cryptography,公钥加密

4.1 PKC模块特性

PKC模块支持ECDSA快速生成签名和验证的硬件模块。
支持对长度为256位的整数和二进制多项式进行模块化和非模块化操作:

  • 乘法
  • 模块化加法和减法
  • 模块化乘法
  • 模块化求逆和除法

支持在比特长度为256的所有公共椭圆曲线上执行复杂算法:

  • 仿射坐标中两点的相加
  • 仿射坐标中点的加倍
  • 标量乘法

支持曲线在比特长度为256位的 F p F_p Fp​和 G F ( 2 d ) = F 2 [ X ] / f GF(2^d)= F_2 [X]/f GF(2d)=F2​[X]/f类型的有限域上定义的曲线:

  • 包括 N I S T 曲线 \color{blue}{NIST曲线} NIST曲线P-192, P-224, P-256, K-163, B-163, K-233, B-233,以及 B r a i n p o o l 曲线 \color{blue}{Brainpool曲线} Brainpool曲线brainpoolP160r1, brainpoolP192r1, brainpoolP224r1, brainpoolP256r1
  • 支持Curve25519和Ed25519的操作

此外,PKC模块支持以下特性:

  • 存储高达256位长度的32个值(整数或二进制多项式)
  • 100 M H z 下,每秒生成 200 个密钥长度为 256 的椭圆曲线 E C D S A 签名 \color{blue}{100MHz下,每秒生成200个密钥长度为256的椭圆曲线ECDSA签名} 100MHz下,每秒生成200个密钥长度为256的椭圆曲线ECDSA签名
  • 100 M H z 下,每秒验证 100 个密钥长度为 256 的椭圆曲线的 E C D S A 签名。 \color{blue}{100MHz下,每秒验证100个密钥长度为256的椭圆曲线的ECDSA签名。} 100MHz下,每秒验证100个密钥长度为256的椭圆曲线的ECDSA签名。

4.2 椭圆曲线(Elliptic Curves)

4.2.1 表示变量(Representation Variants)

用代数符号表示椭圆曲线的解存在不同的可能性:
Weierstrass-Notation: y 2 = x 3 + a ∗ x + b y^2=x^3+a*x+b y2=x3+a∗x+b

Montgomery-Notation: B ∗ y 2 = x 3 + A ∗ x 2 + x B*y^2=x^3+A*x^2+x B∗y2=x3+A∗x2+x

(twisted,扭曲) Edwards-Notation: a ∗ x 2 + y 2 = 1 + d ∗ x 2 ∗ y 2 a*x^2+y^2=1+d*x^2*y^2 a∗x2+y2=1+d∗x2∗y2

系数对(a,b), (A,B)或各自的(a,d)描述/定义了特定的椭圆曲线
属于各自曲线的点对应于元素中的一对(x,y),这解决了上面对应的方程

4.2.2 对比

不同的代数符号支持不同的性质:

  • Weierstrass方程
    • 任何椭圆曲线都可以用Weierstrass符号表示-
    • NIST和Brainpool曲线用Weierstrass符号实现
  • Montgomery和Edwards 方程
    • 不是所有的椭圆曲线都可以用Montgomery或Edward符号表示
    • 公式的实现(在SW或HW中)可能会为“更智能的解决方案”提供一些优势。例如,可能会导致一些速度(性能)优势
    • 曲线ED25519用Edwards符号表示(由ED表示)。例如,与Weierstrass相比,曲线ED25519 HW加速器实现可能提供高达性能因子1.3-1.5的速度优势

注:一种符号可以从一种形式转换为另一种形式,反之亦然

NIST

  • 定义90-tees
  • 使用不同的密钥长度和相应的安全保护水平(256 bit密钥长度假定为充分保障未来5 - 15年)
  • 用Weierstrass表示法表示,并为SW实现进行了优化。这可能会影响另一侧信道阻力HW实现
  • 在政治上不受信任(特别是在欧洲),因为美国国家安全局参与。生成算法非常有名,但一些的来源参数尚不清楚

Brainpool

  • -清洁生成的公共曲线,没有后门(BSI参与)
  • 可用不同的密钥长度(256位密钥长度假设在未来5-15年内足够安全)
  • 以Weierstrass符号表示
    • 不为SW实现优化,通用伪随机符号。非常适合抗侧信道的HW实现,主要只在欧洲使用(很少在世界其他地区使用)
  • 欧洲C2C联盟决定强制作为默认值

Curve ED25519
由D. Bernstein(来自芝加哥大学)和T. Lange创建的。被几个安全联盟(也在汽车社区)大力宣传(例如,今天在苹果iOS >V9.0等商业产品中使用。存在于Montgomery和Edwards符号中

  • 曲线ED25519有一个辅助因子 C o f a c t o r > 1 Cofactor>1 Cofactor>1 (NIST和Brainpool有一个辅助因子= 1)
    • 定义辅助因子:在密码学中,椭圆曲线是一组基于有限域 F n F_n Fn​。该组有 n n n个元素,我们研究的是q大小的质数子群
    • h = n / q h = n / q h=n/q值表示曲线的辅助因子Cofactor
  • 这可能会影响一些安全协议,例如Diffie - Hellman和一些最可能这将需要一些额外的SW检查安全攻击硬化(SW专利侵权的危险)。
    • 另一方面,不同的软件解决方案可能会在侧信道阻力上实现不同的安全级别,这是不容易确定的
  • 对SW/HW性能进行了高度优化,与NIST或Brainpool相比,估计性能因子增加1.3-1.5倍
    • 由于辅助因子Cofactor> 1,部分性能优势可能会因额外的SW加固措施的必要性而消失
    • 目前HW解决方案没有经过验证的侧通道阻力(到目前为止,发明者否认了这一风险)

4.2.3 英飞凌Aurix TC3x HSM中的Curve ED25519

之前AURIX TC3x的TIER1 RfQs指定并要求使用ECC256 HSM HW加速器IP时,ED25519曲线既没有被提及,也没有被要求。最近,我们看到对ED25519曲线的兴趣即将出现(例如,来自AUTOSAR或OEM方的安全工作组),因此IFX进行了内部可行性研究,得出了以下结论:

  • 将包括当前ECC256 IP的升级以支持曲线ED25519(最早在TC39x, B-Step中),但需要一些IP修改(额外的微码ROM和更大的参数SRAM),并相应地适度增加的ECC256模块芯片尺寸
  • 估计EdDSA性能将导致大约增加。130- 150ver /s(或相应的260- 300sig /s) ,不包括额外的SW侧通道硬化措施(假设加速因子为1.3-1.5)

5. SHA256-HASH 模块

Hash模块架构如下图所示:

5.1 SHA256特性

哈希模块能够使用一个通用的内部引擎执行MD-5、SHA-1或SHA224/SHA-256函数。
该模块旨在用于签名生成、验证和通用数据完整性检查。

  • 处理一个512位输入数据块所需的时间取决于所选择的算法:
  • 该模块支持多任务环境。但是,对于抢占式多任务,需要使用软件抽象层,因为该模块不支持在任意时间点停止或恢复哈希计算。

5.2 HASH模块

HASH SHA256示例代码,该算法选择用HASH顺序先出MSW

6. 性能数据

6.1 ECC256 SW vs HW性能图

ECC256的性能约为3-6sig/s

INVIA声称,在他们的SW解决方案中,可以使用ARM M3 100MHz处理器进行多达4次ECDSA256验证操作

▪支持所有ANSI标准曲线

  • 支持所有NIST标准曲线
  • ECDSA密钥生成、签名和验证
  • ECDH按键生成和通用按键功能
  • 针对目标处理器优化的核心功能
  • 通过先进的对抗措施抗SPA、DPA和DFA
  • 可配置的架构
    • 性能和RAM占用之间的可调权衡
    • 单独提供专用硬件加速器(PK2C)。
  • 典型的代码大小在Cortex-M3: 20 kbytes
  • 少于 25 M c y c l e s 可计算安全的 256 位 E C D S A 签名验证 \color{green}{少于25 Mcycles可计算安全的256位ECDSA签名验证} 少于25Mcycles可计算安全的256位ECDSA签名验证
  • 低内存占用(1.2 kbytes用于安全的256位ECDSA签名验证)
  • 非接触式协议支持低至25mhz(使用PK2C加速器)。

6.2 RSA1024/RAS2048 SW vs HW性能表

一些背景信息见: h t t p : / / r e a l t i m e l o g i c . c o m / p r o d u c t s / s h a r k s s l / C o r t e x − M 3 / \color{blue}{一些背景信息见:http://realtimelogic.com/products/sharkssl/Cortex-M3/ } 一些背景信息见:http://realtimelogic.com/products/sharkssl/Cortex−M3/
RSA1024 @ 100MHz,汇编优化代码:

  • 13/2ms = 6.5 ms用于加密(153.8验证/s)
  • 311/2ms = 155.5ms用于解密(6.4签名/s)

RSA1024加密(验证)可以通过使用更小的公钥进行验证过程来简化(例如Exp≤216+1,而不是1024位)

  • 例如,Tier1使用17位公钥长度而不是1024位密钥长度来验证安全的Flash引导加载程序Flash-Bootloader
  • 假设:用CRT签入SW;不包括预处理和后处理
  • TC3xx (HW):数字包括预处理和后处理

6.3 OEM SW基准测试结果ARM M3 - 80MHz

RSA3072,Exp 16 + 1 ^{16+1} 16+1

  • RSA-PSS(Probabilistic Signature Scheme,概率签名方案):
    • 185ms (5.4ver/s) 验证1次
    • 代码大小 : 5 k B \color{green}{代码大小:5kB} 代码大小:5kB

ECC256:NIST曲线

  • ECDSA(Elliptic Curve Digital Signature Algorithm,椭圆曲线数字签名算法):
    • 365ms(2.7ver/s)验证1次
    • 代码大小 : 10 k B \color{green}{代码大小:10kB} 代码大小:10kB

ED25519: (Edwards符号表示Bernstein曲线)

  • EdDSA: 149ms(6,7ver/s)验证1次
    • 代码大小 : 80 k B \color{red}{代码大小:80kB} 代码大小:80kB,在使用安全FLASH引导加载程序的情况下对AURIX HSM进行阻塞。AURIX HSM SRAM大小:40kB / AURIX 2G: 96kB
    • 代码大小优化:17,5KB,在 2 s \color{red}{2s} 2s内进行1次验证 ( 0.5 v e r / s ) \color{red}{(0.5ver/s)} (0.5ver/s)

7. 看门狗定时器

看门狗定时器,Watchdog Timer。如下图所示:

7.1 看门狗定时器模块特性

定时器模块具有看门狗定时器监控系统操作可能的超时,并检查正确的操作顺序:

  • 一个16位向上计数看门狗定时器
  • 两个可选时钟源,一个固定的预标器
  • 检查点功能
    • 独立的看门狗超时和检查点不匹配事件
  • 所选输入时钟的频率除以另一个固定因子“8”
    • 实际上,HSM系统时钟除以1024(128 * 8)
    • 假设系统频率为100 MHz,看门狗定时器可以实现高达约670 ms的超时时间

功能描述

  • 灰色框是寄存器或位字段,可以由软件读写
  • 看门狗超时和检查点不匹配输出在断言时会触发中断

7.2 运行与服务

看门狗定时器的关键元素是计数器寄存器WDT_VAL和重载寄存器WDT_RELOAD

  • 重载寄存器包含计数器的初始值
  • 看门狗定时器通过设置WDT_CRTL.ACT_WDT启动。

当计数器值从0xFFFF切换到0x0000时,发生溢出。看门狗的超时会导致中断。

WDT定时器是通过写入服务寄存器WDT_SRV来实现的。根据控制位WDT_CRTL.INC_SRV区分两种模式;

  • 如果位INC_SRV被清除,WDT计时器必须通过将值0x000A写入WDT_SRV寄存器来服务。
  • 如果置位INC_SRV,那么每次写入寄存器时,写入WDT_SRV的值必须加1,否则将触发中断。初始值包含在WDT_SRV_INI寄存器中,它必须由SW在启用看门狗之前设置。

7.3 编程模式

看门狗定时器主要支持两种模式:

  • 看门狗(Watchdog)操作
  • 检查点(Checkpoint)操作

这两种操作相互独立,可以生成不同的模式:

7.3.1 看门狗模式(Watchdog mode)

  • 在“看门狗模式”的基本应用是定期服务定时器,以避免超时
  • 定时器通过写入服务寄存器WDT_SRV来服务
  • 看门狗配置该操作的步骤如下:
    • 清除INC_SRV位,禁用检查点操作
    • 如果还没有停止,通过清除ACT_WDT位来停止看门狗,否则Reload值将不会复制到计数器寄存器中
    • 根据CLK_SEL位选择合适的时钟源
    • 配置所需时间的重载值
    • 通过设置ACT_WDT使能看门狗
  • 为服务看门狗,常量0x000A必须写入WDT_SRV寄存器中

7.3.2 检查点模式(Checkpoint mode)

  • 在“检查点模式”中,看门狗通过将升序值写入服务寄存器WDT_SRV来服务
  • 通过这种方式,可以检查服务点是否按正确的顺序处理,为软件提供硬件流控制
    • 看门狗操作的配置步骤如下:—清除ACT_WDT位,禁用看门狗操作
    • 清除INC_SRV位,因为只有当INC_SRV从0变为1时,初始值才会从WDT_SRV_INI加载
    • 根据WDT_SRV_INI文件选择所需的初始值。
    • 通过设置INC_SRV启用检查点操作:第一个有效的服务值将是WDT_SRV_INI + 1
  • 为服务以“检查点模式”为看门狗,从WDT_SRV_INI + 1开始的升序值必须写入WDT_SRV寄存器

7.3.3 分辨率和周期

假设输入时钟频率稳定,则定时器的分辨率为: t r e s [ μ s ] = 128 ∗ 8 f [ M H z ] t_{res}[\mu s]=\frac{128*8}{f[MHz]} tres​[μs]=f[MHz]128∗8​
看门狗在时钟周期内的超时时间为:
n p e r i o d = 128 ∗ 8 ∗ ( 65536 − RELOAD_VALUE  n_{period}=128*8*(65536- \textrm{RELOAD\_VALUE } nperiod​=128∗8∗(65536−RELOAD_VALUE 
或者
t p e r i o d [ μ s ] = t r e s [ μ s ] ∗ ( 65536 − R E L O A D _ V A L U E ) = 128 ∗ 8 ∗ ( 65536 − R E L O A D _ V A L U E ) f [ M H z ] t_{period}[\mu s]=t_{res}[\mu s]*(65536-RELOAD\_VALUE)=\frac{128*8*(65536-RELOAD\_VALUE)}{f[MHz]} tperiod​[μs]=tres​[μs]∗(65536−RELOAD_VALUE)=f[MHz]128∗8∗(65536−RELOAD_VALUE)​

8. 桥接模块

8.1 桥接模块通信HSM-Host

8.2 桥接模块通信单元中断

  • 主机到HSM中断
  • HSM到主机中断

8.3 HSM与TriCore数据共享

桥接模块(Bridge Module )用于连接HSM和主机,实现两者之间的通信。

通信单元(Bridge Module )可以被HSM和主机访问:

  • 主机和HSM之间的信息交换
    • 网桥寄存器(对称)Bridge Registers (symmetrical)
    • 共享内存区域 Shared Memory Region
  • 主机外设的联合使用
    • 没有可用的信号量和互斥No semaphore and mutex
      available
      ,需要使用网桥寄存器

要在HSM和主机之间共享小信息(32位)

  • 可以使用HSM2HTSHT2HSMS寄存器


    为了共享更大的信息,可以使用共享内存(主机端):

缓存必须以正确的方式管理
缓存可以使用用户定义的64KB内存窗口进行旁路传输

  • 如果缓存可以使用
    • 主机使用HT2HSMS寄存器将&pBuff发送到HSM
HSM_HT2HSMS.U=(uint32)&HOST2HSMbuf[0]
    • HSM定义了一个指向&pBuff的变量
    • pBuff不是指向HOST RAM,而是指向Cache
    • 初始化后,需要将值从Cache复制到HOST RAM

      HSM侧代码
  • 如果没有缓存
    • 一个窗口(最大64Kbyte)可以在不使用缓存的情况下寻址
    • 需要使用SAHBASE和SAHMEM寄存器

Helper对主机地址室进行HSM非缓存读写访问的功能


英飞凌AURIX HSM介绍相关推荐

  1. 英飞凌 AURIX 系列单片机的HSM详解(5)——HSM硬件加速模块的使用

    本系列的其它几篇文章: <英飞凌 AURIX 系列单片机的HSM详解(1)--何为HSM> <英飞凌 AURIX 系列单片机的HSM详解(2)--与HSM相关的UCB和寄存器> ...

  2. 英飞凌 AURIX 系列单片机的HSM详解(4)——Tricore核与HSM核之间的通信方法

    本系列的其它几篇文章: <英飞凌 AURIX 系列单片机的HSM详解(1)--何为HSM> <英飞凌 AURIX 系列单片机的HSM详解(2)--与HSM相关的UCB和寄存器> ...

  3. 英飞凌 AURIX TC3XX 系列单片机的 NVM-Flash 介绍

    前言 本文讲述的是英飞凌 AURIX TC3XX 系列多核单片机的 Flash,仅对 Flash 简单介绍,方便快速上手使用.下面基于 AURIX TC377 系列介绍. 其中包括 PFlash 和 ...

  4. 英飞凌 AURIX TC3XX 系列单片机的 SOTA 功能介绍

    1.前言 本文讲述的是英飞凌 AURIX TC3XX 系列多核单片机的 SOTA 功能介绍:SOTA 称为软件在线升级,即不依赖下载调试器的情况下,通过CAN.UART等方式实现应用程序的更新. 和O ...

  5. 英飞凌 AURIX 系列单片机的HSM详解(1)——何为HSM

    本系列的其它几篇文章: <英飞凌 AURIX 系列单片机的HSM详解(2)--与HSM相关的UCB和寄存器> <英飞凌 AURIX 系列单片机的HSM详解(3)--开发方法> ...

  6. 英飞凌 AURIX 系列单片机的HSM详解(2)——与HSM相关的UCB和寄存器

    本系列的其它几篇文章: <英飞凌 AURIX 系列单片机的HSM详解(1)--何为HSM> <英飞凌 AURIX 系列单片机的HSM详解(2)--与HSM相关的UCB和寄存器> ...

  7. 智能车竞赛线上培训:基于英飞凌AURIX的BLDC控制方案

      根据第十七届全国大学生智能汽车竞赛规则,允许平衡单车组动量轮可采用无刷电机,但无刷电机的驱动需要采用基于英飞凌AURIX™的无刷电机驱动方案.为了帮助参赛队伍更好的了解和使用英飞凌单片机用于智能车 ...

  8. 智能车竞赛线上培训:英飞凌AURIX的智能车应用--基础四轮篇

      全国大学生智能汽车竞赛是以智能汽车为研究对象的创意性科技竞赛,是面向全国大学生的一种具有探索性工程实践活动,是教育部倡导的大学生科技竞赛之一.   本竞赛以"立足培养,重在参与,鼓励探索 ...

  9. 基于英飞凌AURIX的平衡单车组逐飞BLDC项目开源

    简 介: 本文转载了来自于SeekFree科技关于无刷直流电机电路设计开源方案,仅供大家学习使用.对于参加全国大学生智能车竞赛的同学请注意:室内单车组平衡轮驱动允许直接使用直流电机驱动,也允许使用无刷 ...

最新文章

  1. 编译OpenCV 2+ with CUDA 9+
  2. python语言学了有用吗-转行学习Python开发有什么优势
  3. 2020年数据中心行业研究报告
  4. 线程池应该设置多少核心线程数——Java多线程系列学习笔记
  5. .NET6之MiniAPI(七):中间件
  6. Vue优化策略_项目上线_02
  7. LINQ to DataSet
  8. evb测试板_DVT测试方案
  9. Python 分析国庆热门旅游景点,告诉你哪些地方好玩、便宜、人又少!
  10. python安装-在Python中安装包的三种方法
  11. 如何编写正确且高效的 OpenResty 应用
  12. 如何强制解锁或删除被占用的文件或文件夹 - ForceDelete绿色强制文件删除工具
  13. python如何打开txt文件、并算词频_python读取word文本进行词频统计
  14. HTML+CSS综合实训(二) 仿制视频网
  15. 系统托盘安全删除硬件图标不见了(任务栏USB图标不见了)的故障处理图文详解
  16. unity 实现了鼠标滚动放大和缩小物体暨拉近拉远相机的效果
  17. java实现凯撒密码_凯撒密码--java实现
  18. 我和关注我的1w个粉丝“合影”啦–爬取上万个粉丝的数据并进行数据可视化分析,收获满满
  19. 经典例题:十六进制转换十进制详解 适合初学者
  20. 【数据压缩】TGA文件格式分析

热门文章

  1. 机器学习-各类学习器评价指标
  2. 基于PHP网上购物商城系统设计与实现 开题报告
  3. C++ pair 和make_pair
  4. 计算机之大尾数、小尾数
  5. 953. 验证外星语词典( 简单模拟 + 自定义定制排序 )
  6. OpenCL Reduction操作
  7. STM32:使用ST官方的原理图和PCB封装
  8. SM4加密算法原理和简单实现(java)
  9. PowerPoint ppt 触发器 自定义动画 视频 音频 播放 停止
  10. oracle中的replace into