当前位置: 首页 > news >正文

S32K3 HSE模块安装

本文部分知识出自:https://blog.csdn.net/weixin_43580890/article/details/139731467

0、简介

本文基于S32K312 介绍HSE的安装流程,主要是记录开发流程:

MCU:NXP S32k312

编辑器:S32 Design Studio for S32 Platform 3.5

编译器:GCC

仿真器:JLINK 11

1、概述

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

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

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

3、APP文件,量产使用

基于项目需要使用HSE的AB分区功能实现OTA,HSE在NXP的S32K3芯片上官方推荐两种安装方式:

第一种为通过调试器安装,通过调试器复位两次安装。
第二种是脱机运行,也就是下载HEX到MCU里面实现断电上电两次安装。

在实际生产的时候第一种不是特别适用,毕竟不会有软件工程师一个一个的去给板子安装,最好通过烧录工装实现流水线烧录,所以第二种当时显得优点尤为突出。

2、S32K3放置HSE的地址

FULL_MEM
在这里插入图片描述
AB_SWAP
在这里插入图片描述
在这里插入图片描述

3、HSE FW安装

需要从官网下载:
HSE_DEMOAPP_S32K312_0_2_55_0 ---- NXP HSE官方工程

HSE_FW_S32K312_0_2_55_0 — HSE源文件

NXP官网文档,给出了三种安装方式:
在这里插入图片描述

3.1、通过调试器安装HSE(方式1)
3.1.1 文件修改

将HSE放在0x00400000地址上需要通过调试器启动,因为此时找不到启动地址了(一般是IVT的),即这种方法因为将FW-IMG放在IVT-START,程序在脱离调试器之后,无法自主启动。

此方式下需要将FW-IMG放在IVT_START的位置或者也可以放在0x0050000(k312)的位置。安装图示如下:
在这里插入图片描述
两次reset之后,安装完成,FW-IMG可以被覆盖或者擦除,此时Sbaf会将FWIMG放在HSE专用NVM之中:
在这里插入图片描述

ld文件:
增加memory分配设置:
在这里插入图片描述

MEMORY
{HSE_BINARY    (R)   : ORIGIN = 0x00400000, LENGTH = 0x30000FLASH_VTABLE  (R)   : ORIGIN = 0x00430000, LENGTH = 0x1000  	/* Vector Table */FLASH         (RX)  : ORIGIN = 0x00431000, LENGTH = 0x2000  	/* code section for demo app */FLASH_P2      (RX)  : ORIGIN = 0x00433000, LENGTH = 0x17000  /* code section for demo app */INT_SRAM      (RW)  : ORIGIN = DEMO_APP_BSS_MEM_START, LENGTH = DEMO_APP_BSS_SIZE    /* 56KB RAM */IVT_ADDR      (RW)  : ORIGIN = IVT_START_ADDR, LENGTH = IVT_SIZE     /* fixed address for IVT structure */ADKP_KEY      (RW)  : ORIGIN = ADKP_START_ADDR, LENGTH = ADKP_SIZE      /* fixed address for key input by user */APP_CODE_SRAM (RWX) : ORIGIN = DEMO_APP_SRAM_START_ADDR, LENGTH = DEMO_APP_SRAM_SIZE    /* Secure ram memory */HSE_FW_VERSION(RW)  : ORIGIN = HSE_FW_VERSION_START_ADDR, LENGTH = HSE_FW_VERSION_SIZETESTSTATUS    (RW)  : ORIGIN = TEST_STATUS_START_ADDR, LENGTH = TEST_STATUS_START_LENGTHTESTEXECUTED  (RW)  : ORIGIN = TEST_STATUS_EXECUTED_ADDR, LENGTH = TESTEXECUTED_LENGTHTESTCOMPLETED (RW)  : ORIGIN = TESTCOMPLETED_START_ADDR, LENGTH = 0x1
}

增加HSE的信息:

这里的pink文件路径即为HSE_FW_S32K312_0_2_55_0中的pink文件路径在这里插入图片描述

TARGET(binary)
INPUT (D:\software\NXP\HSE_FW_S32K312_0_2_55_0\hse_ab_swap\hse\bin\s32k312_hse_fw_1.13.0_2.55.0_pb250129.bin.pink)
OUTPUT_FORMAT(default)
SECTIONS
{.hse_bin : AT (ORIGIN(HSE_BINARY)){/*. = ALIGN(4);*//*__hse_bin_start__ = .;*/D:\software\NXP\HSE_FW_S32K312_0_2_55_0\hse_ab_swap\hse\bin\s32k312_hse_fw_1.13.0_2.55.0_pb250129.bin.pink(.data)/*. = ALIGN(4);*//*__hse_bin_end__ = .;*/  	} > HSE_BINARY__HSE_BIN_START = ORIGIN(HSE_BINARY);__HSE_BIN_SIZE = 0x30000;/*__hse_bin_end__ - __hse_bin_start__;*/

main文件:
使能UTEST_PROGRAM。
在这里插入图片描述

volatile DCM_BIT_STATUS_OTA_T otaIsEnable = 0xFF;
volatile DCM_BIT_ACTIVE_ADDRESS_OTA_REGION_T otaActiveRegion = 0xFF;
....
int main(void)
{gProgramAttributes = UTEST_PROGRAM;....otaIsEnable = Dcm_StatusIsOTAEnabled();otaActiveRegion = Dcm_ActiveAddressOTARegion();....
}
3.1.2 仿真安装

编译:
在这里插入图片描述
仿真设置:
在这里插入图片描述
仿真:

在这里插入图片描述
在这里插入图片描述
往下走会一直循环在
在这里插入图片描述
等待2s以上,下电再跑一次(function reset并不行),并全速跑重复一次如上过程。请注意,此时已经可以跑过去WaitForHSEFWInitToFinish()且可以读到版本号等信息,但是仍需要等待2s以上。

HSE刷写完毕:
在这里插入图片描述
这里NXP有一处错误:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

http://www.xdnf.cn/news/331849.html

相关文章:

  • 屏蔽力 | 在复杂世界中从内耗到成长的转变之道
  • STM32开发printf函数支持
  • LeetCode:二叉树的最大深度
  • React Native主题切换、字号调整:不用styled-components也能玩出花
  • 查询nvidia边缘设备的软硬件版本jetson_release
  • 【软件设计师:程序语言】4.程序语言基础知识
  • Unity-Socket通信实例详解
  • 【面试 · 二】JS个别重点整理
  • leetcode hot100 技巧
  • C++函数栈帧详解
  • Ultralytics中的YOLODataset和BaseDataset
  • comfyui 实现中文提示词翻译英文进行图像生成
  • 低成本监控IPC模组概述
  • D盘出现不知名文件
  • int (*)[3]和int (*arr_ptr)[3]区别
  • Spark应用部署模式实例
  • 个人网站versionI正式上线了!Personal Website for Jing Liu
  • ✍️【TS类型体操进阶】挑战类型极限,成为类型魔法师!♂️✨
  • JAVA八股文
  • CI/CD与DevOps流程流程简述(提供思路)
  • 使用pdm管理python项目时去哪里找nuitka
  • 如何通过复盘提升团队能力?
  • 数组和集合
  • 【C++的类型转换】
  • 【漏洞预警】:致远OA V8.1 SP2 data.htm DOM型XSS漏洞
  • 使用 `detach()` 断开与共享特征层的连接
  • (已完结)完美解决C盘拓展卷是灰色的无法扩容的问题以及如何正确地在WINDOS上从一个盘扩容到C盘
  • Android 如何理解 Java JNI 中的引用与 Java 对象应用的区别
  • java算法的核心思想及考察的解题思路
  • Codeforces Round 1022 (Div. 2)