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,一经查实,立即删除!

相关文章

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

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

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…

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;它大大简化了网络应用的开发过程…

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;是提供原创…

新能源燃气灶用的是什么燃料?无需燃料,电生明火

新能源燃气灶广义的讲就是用电生明火的烹饪灶具&#xff0c;如&#xff1a;电焰灶、电燃灶或电火灶&#xff0c;无需任何燃料和氧气助燃&#xff1b;而狭义上讲是采用出电能以外的一切新燃料烹饪灶具&#xff0c;如&#xff1a;高功率燃气灶、生物合成油灶等。在厨房革命的浪潮…

01--MySQL数据库概述

目录 第1章 MySQL数据库概述 1.1 基本概念 1.2 MySQL数据库管理系统 1.3 表的关系 第2章 MySQL卸载、安装、登录 第3章 客户端使用演示 3.1 命令行客户端 3.1.1 数据库 3.1.2 数据表 3.1.3 导入数据 3.1.4 导出数据 3.2 可视化客户端 第4章 SQL语句 4.1 SQL的分类…

Linux中的文本编辑器vi与vim

摘要&#xff1a; 本文将深入探讨VI和VIM编辑器的基本概念、特点、使用方法以及它们在Linux环境中的重要性。通过对这两款强大的文本编辑器的详细分析&#xff0c;读者将能够更全面地理解它们的功能&#xff0c;并掌握如何有效地使用它们进行日常的文本编辑和处理任务。 引言&…

【Mac】FxFactory 8 Pro for Mac(视觉特效处理包)及同类型软件介绍

软件介绍 FxFactory Pro 是一款功能强大的插件管理和创作工具&#xff0c;专为视频编辑器和特效艺术家设计&#xff0c;适用于 macOS 系统。它集成了大量的视频特效插件&#xff0c;并与多种主流视频编辑软件无缝兼容&#xff0c;如 Final Cut Pro、Premiere Pro、After Effec…

vue项目首页优化问题(前后端都要优化)

2.1 config/index.js 开启productionGzip 将其productionGzip 配置成true 2.2 配置Gzip的 插件配置 打开webpack.prod.config.js 配置一下这段代码 代码如下 if (config.build.productionGzip) { const CompressionWebpackPlugin require(‘compression-webpack-plugin’)…

kafka(五)spring-kafka(2)详解与demo

一、简单的收发消息demo 父工程pom&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&qu…