S32K3芯片HSE功能验证之安装HSE FW

本文主要介绍了NXP S32K3平台的HSE固件的安装,以及安装过程中可能出现的坑。希望可以帮助到大家!

HSE简介

• HSE = Hardware Security Engine;
NXP S32K3芯片的硬件安全引擎(HSE)模块是一个关键组件,旨在增强汽车电子系统的信息安全。以下是对HSE模块的介绍、主要功能、工作原理和用途的概述。

HSE(Hardware Security Engine)是NXP S32K3系列微控制器中的一个安全模块,提供了一系列安全特性,如加密、安全启动和密钥存储。
主要功能加密:支持多种加密算法,包括对称和非对称加密,用于保护数据传输和存储的安全。安全启动:确保系统启动时的完整性和真实性,防止未经授权的代码执行。密钥管理:安全存储和管理加密密钥,防止密钥泄露。硬件加速:通过硬件加速加密和解密操作,提高系统性能。

HSE组成

对于S32K3系列,我们使用的是HSE_B,其他芯片平台的对应关系:
在这里插入图片描述

HSE Interface

HSE 子系统的通信接口是通过MU来实现的,具体的通信过程如下:
Host Core通过Application Space中的Tx寄存器向Hse Core发送数据,Hse拿到数据处理完毕后再通过HSE Space的Tx寄存器返回响应给Host Core,这就是一个简单的通信方式。在这里插入图片描述

MU模块

在实际的HSE FW安装以及block切换过程中,参与通信的MU模块通常是MU0,host发送切换命令或者其他服务的时候,通常使用的是TR[0-1]和RR[0-1];针对HSE的使用来说,MU通信模块的介绍如下文所述

MU的主要是用在不同内核之间的通信,分为A,B两面,分别有不同的用途,具体如下图:在这里插入图片描述
在实际项目中,只有MUB的操作对我们来说是可见的。例如在使用SID
“HSE_SRV_ID_ACTIVATE_PASSIVE_BLOCK”的时候,我们操作的是MUB的MU0 CH1通道:
在这里插入图片描述

HSE FW的安装

HSE FW的安装主要参考官方文档[HSE FW install for S32K3xx],该文档详细介绍了关于full
memory和ab swap的模式下安装的具体步骤。

HSE FW下载

可以从官网获取:
在这里插入图片描述

需要注意的是:我们要获取最新的版本,目前为止最新版本为
[HSE_FW_S32K312_0_2_40_0] ;另外,原廠的K3芯片内有最新的Sbaf,因此不需要在官网下载sbaf固件,暂时也不要去更新sbaf,以免变砖!

HSE 安装过程

一.安装方式
NXP官网文档,给出了三种安装方式:
在这里插入图片描述
二.内存布局
在介绍具体的方式之前,现讲解一下,AB SWAP时的内存分配情况,方便后续的内存变化过程的理解。
在这里插入图片描述
三种安装方式讲解:
1.Method1
所有的image通过JTAG烧录到内部flash之中,同时将IVT放在特定的地址处,对于S32K312来讲的话,只能放在0x00400000处,参照HSE RM,如下:
在这里插入图片描述

注意:其他的imag,实际存放地址要和IVT的指向地址保持一致!

如果secure NVM内部还没有安装HSE时,在reset之后,会有以下的操作:
在这里插入图片描述
在安装完成以后,FW_IMG就可以被擦除或者覆盖掉了。操作流程示意图,如下:
安装前
安装AB SWAP需要经过两次reset,此时内部NVM发生了变化:
在这里插入图片描述
2.Method2
无IVT用于指向HSE-FW的地址以及app运行地址,此方式下需要将FW-IMG放在IVT_START的位置或者也可以放在0x0050000(k312)的位置。安装过程如下:
在这里插入图片描述
两次reset之后,安装完成,同method1,FW-IMG可以被覆盖或者擦除,此时Sbaf会将FWIMG放在HSE专用NVM之中:
在这里插入图片描述

注意:这种方法因为将FW-IMG放在IVT-START,程序在脱离调试器之后,无法自主启动,无法满足项目需求,因此没有采纳此种方法。

3.Method3
第三种方法,网上资料很少,没有完整的demo可供参考,我们也没有采用这种方式来进行。在HSE RM中,给出了该种方法的流程图,以及在HSE RM P50给出了安装的步骤说明,可以参考:
在这里插入图片描述

项目使用安装方法

一.安装工程结构

在这里插入图片描述

二.内存划分

在这里插入图片描述

三.具体安装过程

总体的安装流程,在AN744810文档中给出,如下:
在这里插入图片描述
1.写入OTP
在UTEST区域地址0x1B000000UL处写入0xAABBCCDDDDCCBBAA,该过程为Enable OTA feature。

注意:写不成功的原因,可能因为未将flash驱动放在ram中运行,

2.内存分配
实现满足需求的安装工程,最主要的地方就是合理分配内存。我们工程的内存划分如上图,将IVT放置在pflash的起始地址处,而IVT内包含了程序的地洞地址,这样的话,就可以实现在上电之后,没有挂调试器的时候,仍然可以重启,实现HSE的离线安装的目的。以下为IVT的内容:
在这里插入图片描述

四.验证HSE的安装

1.程序中有读取版本号的函数接口;在安装成功的条件下,会获取FW的版本信息:
在这里插入图片描述
如果安装不成功,程序会卡在获取HSE状态信息的地方,此时可能的情况是:HSE_FW被意外擦除或者破坏。解决的方法,可以参照MU RM,使用MU通信来实现HSE FW的recovery!
2.查看寄存器

在这里插入图片描述

潜在安装失败原因## 五.潜在安装失败原因

在这里插入图片描述
HSE RM中也有类似表述:
在这里插入图片描述
因此,与HSE相关的输入输出变量,我们在工程中放在no-cable的内存区域中:
在这里插入图片描述
本文主要介绍了HSE FW的安装方法。个人拙见,多多指教!麻烦各位多多关注我的账号,后续会陆续推出NXP S32K3的一些使用技巧以及实际开发过程中遇到的问题。

另外,已将安装工程放在资源共享里了,欢迎下载!!!

扫一扫,关注我的公众号哦!多关注,不迷路!在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值