NXP实战笔记(十四):32K3xx基于RTD-SDK在S32DS实现HSE的安装。

目录

1、概述

1.1、什么是HSE?

1.2、如何实现HSE的OTA功能

1.3、S32K3放置HSE的地址

2、通过调试器安装HSE

3、通过IVT方式安装HSE

4、坑点慎重踩

4.1、优化等级

4.2、Flash放RAM

4.3、C40_Ip配置更改

4.4、程序烧录

5、测试结果

6、代码链接


1、概述

        首先需要明确一个问题:HSE的安装是一个独立的工程,在实际产品应用的时候有三个二进制文件需要烧录。

        1、HSE安装二进制位文件(首次烧录需要断电上电两次)

        2、BootLoader文件(升级用,可以直接覆盖掉HSE安装文件)

        3、APP文件,量产使用

        基于项目需要使用HSE的AB分区功能实现OTA,HSE在NXP的S32K3芯片上如何实现安装确实是一个比较头疼的问题,官方推荐两种安装方式,第一种为通过调试器安装,通过调试器复位两次安装。第二种是脱机运行,也就是下载HEX到MCU里面实现断电上电两次安装。在实际生产的时候第一种不是特别适用,毕竟不会有软件工程师一个一个的去给板子安装,最好通过烧录工装实现流水线烧录,所以第二种当时显得优点尤为突出,下面在第二章节开始详细介绍一下如何通过这两种方式安装。

1.1、什么是HSE?

参考博文:

HSE简介icon-default.png?t=N7T8https://blog.csdn.net/weixin_43580890/article/details/139329518

1.2、如何实现HSE的OTA功能

        大前提:安装HSE需要重启两次,时间间隔稍微留一些,安装上毕竟也需要时间的。

        在使用OTA功能之前,应启用OTA功能。功能标志存储在UTEST中,并且只能编程一次。启用地址:0x1B00 0280值(8字节):0xAA, 0xBB, 0xCC, 0xDD,0xDD, 0xCC, 0xBB, 0xAA安装AB_SWAP FW后,HSE将书写该标志。

        有两个选项可以启用AB_SWAP特性

        在SBAF安装HSE固件时安装AB_SWAP固件映像。如果加密映像中的第一个字节是0xDB,则表示HSE固件的加密映像用于AB_SWAP配置。SBAF将在块1区域的末尾安装HSE固件,以启用SOC中的OTA功能。这是一个不可逆的过程,一旦设备处于OTA启用配置,就无法恢复到OTA禁用配置

        通过向HSE固件提供固件更新服务,用AB_SWAP固件映像更新OTA禁用固件。HSE固件的新加密映像必须为AB_SWAP配置,即加密映像的第一个字节的值必须为0xDB。

        通过第二种方式安装的时候有一个非常需要注意的点:应用程序必须确保有效的应用程序与IVT一起出现在块0和块1中,以便重置后,应用程序可以通过HSE固件启动。

        在P-Flash中编程elf/bin/S19/hex并重置MCU后。当HSE FW(AB_SWAP)有效时,SBAF将在P-Flash(HSE空间)中使HSE FW有效(AB_SWAP),并对HSE FW进行编程,并在UTEST中启用OTA功能标志。重置并运行有源块后,SBAF还将对HSE FW版本从有源块编程为无源块。AB_SWAP和FULL_MEM HSE FW具有不同的标题。FULL_MEM HSE FW标头为:0xDAFFFF60,AB_SWAP HSE FW标题为0xDBFFFF60

NXP推荐需要遵循的地方如下

        1、主机应用程序代码必须始终针对较低的地址空间进行编译

        2、在交换主动分区和被动分区之前,必须确保被动分区中存在有效代码

        3、主机(应用程序)可以读取DCM状态寄存器(DCMSTAT),以识别哪个分区是活动的,哪个分区是被动的;请参阅下表

1.3、S32K3放置HSE的地址

FULL_MEM

AB_SWAP

2、通过调试器安装HSE

        将HSE放在0x00400000地址上需要通过调试器启动,因为此时找不到启动地址了,启动地址(一般是IVT的)只能放在0x00400000、0x00500000、0x00600000、0x00700000的位置上,通过调试器能正确指向PC指针,所以可以实现正常运行,一旦脱机跑运行不起来的,设置如下。

链接文件设置

增加HSE的信息

使用起来也非常简单,在UTEST写入默认值就行了

初始化的时候调用就行了

HEX信息如下

3、通过IVT方式安装HSE

链接文件处理如下

注意:

        1、IVT与代码需要放在同一个PF里面,一般都是PF0

       2、HSE放在PF1,地址信息与代码的是地址信息是对称的,例如代码是0x00402000那么HSE为0x00502000。

增加HSE的信息如上面通过调试器安装一致

注意重点

增加IVT信息,去除本身启动的boot_header信息

自己创建一个IVT就好了如下

static const unsigned int __attribute__((section("._int_ivt_0"))) ivt_flash[] =
{
/*00h*/     SBAF_BOOT_MARKER /* IVT marker */ ,
/* Boot configuration word */
/*04h*/     (CM7_0_ENABLE << CM7_0_ENABLE_SHIFT) | (CM7_1_ENABLE << CM7_1_ENABLE_SHIFT) ,
/*08h*/     IVT_RESERVED /* Reserved */ ,
/*C0h*/     CM7_0_VTOR_ADDR /* CM7_0 Start address */ ,
/*10h*/     IVT_RESERVED /* Reserved */,
/*14h*/     CM7_1_VTOR_ADDR /* CM7_1 Start address , lockstep only run CM7_0 */ ,
/*18h*/     IVT_RESERVED /* Reserved */ ,
/*1ch*/     CM7_2_VTOR_ADDR /* CM7_2 Start address , lockstep only run CM7_0 */ ,
/*20h*/     XRDC_CONFIG_ADDR /* XRDC configuration pointer */ ,
/*24h*/     LF_CONFIG_ADDR /* Lifecycle configuration pointer */ ,
/*28h*/     IVT_RESERVED /* Reserved */,
/*2ch*/     HSE_FW_ADDR /* Reserved */,
/*30h*/     SECURE_BOOT_APP_ADDR ,
/*34h*/     IVT_RESERVED ,
/*38h*/     SECURE_BOOT_BACKUP_ADDR ,
/*3ch*/     IVT_RESERVED ,
/*f0h*/     IVT_GMAC ,
};

IVT格式如下

然后安装也是写UTEST即可。

4、坑点慎重踩

4.1、优化等级

首先看下生成的HEX信息

        这样肯定是不行的,前面已经提到IVT放置有地址的讲究的,这里压根没有IVT的信息还怎么启动对吧?回头看为啥呢?明明代码里面已经有IVT的就是没在HEX里面体现,想一下,C语言里面没用的数据会被优化掉的,所以此时找不到了,将优化等级调成最低如下更改(改单个IVT文件或整个工程都可以,建议改整个工程)。

由-Os改为-O0

改成功之后HEX显示如下:位置信息正确,分配大小与链接文件一致。

4.2、Flash放RAM

        为什么的?操作UTEST的时候用到了flash驱动的,实际操作的时候放不放都行,但是建议放置一下。

        Tips:flash驱动放在PF0能操作PF1,但是不能操作自身,所以操作UTEST的时候提到放不放RAM都行的原因在这。

4.3、C40_Ip配置更改

        操作flash的UTEST的时候,根据RTD的版本不一样,生成的配置有时候有毛病的,这点一定要注意更改如下C40_IP生成的配置

4.4、程序烧录

        在成功烧录HSE之后,千万千万不要烧录之前的调试不成功的HSE安装工程,这个小玩意儿安装好之后再烧录其他安装不好的工程会出现无法读取HSE版本号的现象,不知道是不是坏了。

5、测试结果

获取版本号信息

安装好之后千万别安装其他HSE了,否则HSE失效

6、代码链接

S32K3通过IVT的方式实现HSE的安装工程icon-default.png?t=N7T8https://download.csdn.net/download/weixin_43580890/89436822?spm=1001.2014.3001.5503

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/32335.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

selenium 处理网页上的弹窗

处理网页上的弹窗按钮&#xff0c;主要取决于弹窗的类型。在Web自动化测试中&#xff0c;常见的弹窗类型包括&#xff1a;JavaScript弹窗&#xff08;如alert、confirm和prompt弹窗&#xff09;和Web页面自定义弹窗&#xff08;通常是HTML元素实现的&#xff09;。以下是处理这…

Spring中的AOP

目录 一.什么是AOP? 二.SpringAOP的简单实现 三.Spring AOP 详解 1.切点(Pointcut) 切点的定义方式 切点表达式的语法 1) execution表达式 1. *&#xff08;星号&#xff09; 2. ..&#xff08;两个点&#xff09; 3. &#xff08;加号&#xff09; 2)annotation 2…

LeetCode 416-分割等和子集

分割等和子集 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 示例 1&#xff1a; 输入&#xff1a;nums [1,5,11,5] 输出&#xff1a;true 解释&#xff1a;数组可以分割成 [1, 5, 5] 和 [11…

“论SOA在企业集成架构设计中的应用”必过模板,软考高级,系统架构设计师论文

论文真题 企业应用集成(Enterprise Application Integration, EAI)是每个企业都必须要面对的实际问题。面向服务的企业应用集成是一种基于面向服务体系结构(Service-OrientedArchitecture,SOA)的新型企业应用集成技术,强调将企业和组织内部的资源和业务功能暴露为服务,实现…

监督学习:从数据中学习预测模型的艺术与科学

目录 引言 一、监督学习的基本概念 1、数据集 2、特征 3、标签 4、模型 二、监督学习的原理和方法 1、基本原理 2、常用方法 三、监督学习的定义与分类 1、 定义 2.、分类 四、为什么是监督学习&#xff1f; 1、 明确的学习目标 2、高准确率 3、易于评估 4、 …

vue-json-viewer组件 copyable失效,页面并不现实copy按钮

<json-viewer :value"props.row.param_detail.query" :expand-depth"10" copyable> </json-viewer> 官方文档中&#xff0c;说明&#xff0c;只要在json-viewer中加入 copyable属性&#xff0c;即可实现copy功能&#xff0c;如下图&#xff1…

yolov8环境搭建+训练自己数据集

一、yolov8环境搭建 1. 安装miniconda环境 地址&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda 选择Python3.8版本 最好安装在C盘 勾选自动添加环境变量 ***以下操作安装过程中关闭代理软件 *** 2. 创建虚拟环境 conda create -n yolov8 python3…

vue自建h5应用,接入企业微信JDK(WECOM-JSSDK),实现跳转添加好友功能

一、项目场景&#xff1a; 1、使用vue开发了一套h5页面的项目 2、这个h5链接是在企业微信里某个地方打开的 3、打开页面的时候有一个好友列表&#xff0c;点击好友列表某一条复制手机号跳转到企业微信添加好友页面 二、实现的效果图 博客只允许上传gif图&#xff0c;所以我只…

浙江工商大学24计算机考研数据,好几个专业都接收调剂,计专复试线284分!

浙江工商大学&#xff08;Zhejiang Gongshang University&#xff09;&#xff0c;简称“浙商大”&#xff08;ZJSU&#xff09;&#xff0c;坐落于浙江省杭州市&#xff0c;是中华人民共和国教育部、中华人民共和国商务部和浙江省人民政府共建的浙江省重点建设高校&#xff0c…

基于YOLO的目标检测系统

探索未来的智能视觉技术 在当今快速发展的科技领域中&#xff0c;基于YOLO&#xff08;You Only Look Once&#xff09;的目标检测系统成为了领先的智能视觉解决方案。这些系统通过深度学习技术实现快速、准确地识别和定位图像或视频中的各种目标&#xff0c;从而提升了安全性…

C#调用OpenCvSharp计算并显示带掩膜的图像直方图

之前的文章简要测试了调用OpenCvSharp的Cv2.CalcHist函数计算直方图的用法&#xff0c;不过使用过程中参数mask的值始终为null&#xff0c;也就是计算的整幅图像的直方图&#xff0c;如果mask不为空&#xff0c;则可以计算图像指定区域的直方图&#xff0c;本文学习掩膜的创建方…

css grid实现九宫格布局

常见的九宫格布局可以使用flex布局实现&#xff0c;但是flex布局有个致命的缺陷&#xff0c;比如3行3列的布局&#xff0c;当第不足3个元素的时候&#xff0c;元素依然是平局平铺的&#xff0c;这样就不满足九宫格的效果&#xff0c;这种情况&#xff0c;使用grid布局可以轻松搞…

Zigbee协议详解:低功耗无线通信的理想选择

什么是Zigbee协议 Zigbee是一种基于IEEE 802.15.4标准的无线通信协议&#xff0c;专为低功耗、低数据速率和短距离通信设计。它广泛应用于物联网&#xff08;IoT&#xff09;设备&#xff0c;如智能家居、工业自动化和健康监测等领域。Zigbee协议由Zigbee联盟维护和推广&#x…

Antd Table 表格 拖拽列宽

antd 的表格组件的列宽&#xff0c;是通过width属性去初始化的&#xff0c;有时候渲染的内容不固定&#xff0c;这个宽做不到通用所以研究怎么实现表格列宽拖动&#xff0c;主要的实现步骤如下&#xff1a; 使用table的components API修改表格头部为 react-resizable提供的组件…

C#事件详解及应用示例

简介 事件是使类具备向其它类通知发生的相关事情的能力。事件被分成两部分&#xff1a;一、引发或发送事件的类&#xff08;称发布者&#xff09;&#xff1b;二、处理或接收事件的类&#xff08;称订阅者&#xff09;。事件也是类型的成员。在 .NET 的桌面应用程序中&#xff…

Netty 入门实例

文章目录 1. 概述2. 代码实例2.1 服务端2.2 客户端2.3 运行截图 3. 整体结构4. 重要组件4.1 EventLoopGroup、EventLoop4.2 Handler & Pipeline4.3 ByteBuf 参考文献 1. 概述 Netty 是一款用于高效开发网络应用的 NIO 网络框架&#xff0c;它大大简化了网络应用的开发过程…

kafka 集群为什么依赖 zookeeper ?

kafka 集群为什么依赖 zookeeper ? 在 Kafka 集群中,ZooKeeper 扮演了关键的角色,负责协调和管理 Kafka 的分布式系统。具体来说,ZooKeeper 在 Kafka 集群中主要起到以下几个作用: 1. 管理集群元数据 ZooKeeper 存储和管理 Kafka 集群的元数据信息,包括 Broker 信息、…

MySQL查询语句语法使用

目录 一、基本查询二、条件查询2.1 简单条件表达式2.2 逻辑表达式2.3 模糊查询 (LIKE)2.4 范围查询 (BETWEEN ... AND ...)2.5 列表查询 (IN)2.6 空值查询 (IS NULL 或 IS NOT NULL) 三、排序查询3.1 基本语法3.2 单列排序3.2 多列排序3.3 使用表达式排序 四、分组查询聚合函数…

mysql的安装和连接

一.数据库相关概 念 1.数据库 存储数据的仓库,数据是有组织的进行存储,简称DB。 2.数据库管理系统 操纵和管理数据库的大型软件,简称DBM。 3.SQL 操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准。简称SQL。 二.市面上流行的数据库 1.ORACLE 2.MySQL …

如何搭建一个成功的短剧制作平台

要搭建一个成功的短剧制作平台&#xff0c;需要考虑多个方面&#xff0c;包括目标定位、技术选择、内容管理、用户体验等。 1、明确目标和定位&#xff1a; 确定你的目标受众是谁&#xff0c;他们的年龄、兴趣、消费习惯等。 明确短剧制作平台的主要定位&#xff0c;是提供原创…