S32G3系列芯片Serial Boot功能详解!

《S32G3系列芯片——Boot详解》系列——S32G3系列芯片Serial Boot功能详解!★★★

  • 一、Serial Boot模式概述
  • 二、串行下载协议
    • 2.1 基于UART和CAN的下载协议概述
    • 2.2 基于FlexCAN的Serial Boot
      • 2.2.1 IO配置
      • 2.2.2 时钟配置
      • 2.2.3 通信波特率
      • 2.2.4 基于FlexCAN的Serial Boot通信流程
    • 2.3 基于UART的Serial Boot
      • 2.3.1 UART IO配置
      • 2.3.2 时钟配置
      • 2.3.3 通信波特率

学习更多Boot相关内容,获取HSE基于IVT安全启动方案?
>>>>>>>>> 返回专栏总目录 《S32G3系列芯片——Boot详解》<<<<<<<<<

Tip📌:
  鼠标悬停双虚线关键词/句,可获得更详细的描述;
  建议按照专栏文章目录顺序依次阅读以便了解相关背景知识。

一、Serial Boot模式概述

  所谓"串行启动"模式是指允许系统通过串行接口如CAN或UART从外部源加载启动代码。这种模式可以通过BOOTMOD输入引脚的配置进入;此外,当功能复位计数器的值达到或超过8时也会自动启动这种模式。推荐先阅读《S32G3系列芯片Boot流程详解!》。

  在"串行启动"模式下,BootROM会配置HSE_H软件看门狗(SWT)以60秒超时,然后持续轮询所有可用的接口以检测活动。如果在60秒内没有检测到任何活动,系统将重置。BootROM会依次检查所有可用接口,一旦检测到活动,即选择该接口作为下载接口。

Tip📌:如果LC状态是CUST_DEL,BootROM会禁用HSE_H SWT。在串行启动期间,BootROM使用外部振荡器(XOSC)作为串行接口的时钟源。LIN_CLK和CAN_CLK的时钟源是通过XOSC连接的外部时钟。

  BootROM串行启动时序流程如下图所示:

在这里插入图片描述

——关于其中的XOSC配置

  在嵌入式系统中,外部振荡器(XOSC)是一个关键组件,用于提供系统时钟。在串行启动过程中,BootROM 会使用 XOSC 作为串行接口(如 LIN 和 CAN)的时钟源。XOSC 可以工作在多种模式下,并且每种模式都需要特定的配置来保证时钟稳定性。

Tip📌:LIN(Local Interconnect Network)和 CAN(Controller Area Network)是常见的车辆网络通信协议,它们通常用来在车辆的不同电子控制单元(ECU)之间进行通信。在串行启动模式下,这些接口的时钟(LIN_CLK 和 CAN_CLK)是从连接到 XOSC 的外部时钟源派生的。

  为了确保 XOSC 正确配置并能够为 LIN 和 CAN 接口提供稳定的时钟,BootROM 必须提供有关连接在 ECU 上的时钟源的配置细节。

  在系统上电或复位之后,BootROM 将执行初始的系统配置,包括时钟配置。BootROM 会根据提供的配置信息正确地设置 XOSC,并确保从 XOSC 派生的 LIN_CLK 和 CAN_CLK 时钟稳定可靠。这一过程对于保证系统在动过程中能够正确地执行其余的初始化和配置任务是至关重要的。如果时钟源配置错误,可能会导致串行接口法正常工作,进而影响整个系统的启动过程。

  BootROM通过FlexCAN、UART进行serial download的时序流程协议如下图所示:

在这里插入图片描述

二、串行下载协议

2.1 基于UART和CAN的下载协议概述

  该串行下载协议包括几个阶段,如果是非安全启动,会跳过条件标记为"安全启动"的阶段。各阶段简要描述如下表所示:

序号阶段描述大小(字节/十六进制)条件
1InitializationBootROM配置时钟、模块,并设置60秒的软件看门狗SWT。
如果LC状态是CUST_DEL,则禁用SWT。
--
2AssociationBootROM轮询检测传输通道的活动,直到接收到标记FEED_FACE_CAFE_BEEFh。
任何不正确的数据将被丢弃。
8h总是
3Non-secure headerBootROM从选中的传输通道读取前40h字节镜像,并从中提取RAM起始指针、
入口指针和代码大小。BootROM还从代码长度字的最高位提取NO_ECHO字段
镜像的下载地址必须是64bit对齐的,此外这个下载数据只能下载到系统内部RAM里,因此数据大小不能超过RAM大小
40h总是
4Secure headerBootROM读取镜像的接下来1200h字节,其中包含NSK公钥、CSK公钥和CSK签名。1200h安全启动
5Code downloadBootROM下载指定长度的串行代码,并将其存储在指定位置。代码长度总是
6Public signatureBootROM读取图像的公钥签名,用于认证镜像。100h安全启动
7Execution成功下载整个镜像后,Cortex-M7_0核将被启用,并将复位矢量指向入口指针。
在启用该核之前,将启用默认配置的看门狗SWT_0。由应用程序负责看门狗的处理。
--

  在执行安全启动时,镜像下载后,BootROM首先根据选择的认证模式对镜像进行认证。接收到的数据包可以选择是否回显。这取决于Non-secure header阶段读取的代码长度字中的NO_ECHO字段。默认情况下,所有数据包都会回显。如果NO_ECHO字段设置为1,则:

  • 对于安全启动,从"Secure header"阶段开始,CAN数据包不会回显。
  • 对于非安全启动,从"Code download"阶段开始,CAN数据包不会回显。

  通过这个过程,BootROM能够安全地加载和验证启动代码,确保系统在启动过程中的完整性和安全性。这对于需要高度安全性的系统,如汽车或其他关键基础设施的嵌入式设备,尤为重要。

2.2 基于FlexCAN的Serial Boot

  BootROM支持通过FlexCAN_0模块完成串行下载功能,此时芯片和镜像传输者之间通过CAN报文传递数据,BootROM只支持标准CAN,不能用FD CAN报文

2.2.1 IO配置

  在S32G3系列的芯片上,FlexCAN_0模块对应的IO如下所示,需要对其做相应配置:

在这里插入图片描述

2.2.2 时钟配置

  FlexCAN 模块的时钟来源于一个名为 MC_CGM_0 clock Mux 7 selector 的时钟选择器。如下图所示:

在这里插入图片描述

Tip📌:在引导过程中,BootROM使用一个外部振荡器(XOSC)作为 CAN_PE_CLK(CAN 物理层时钟)的源。如果 XOSC 初始化失败,系统会自动选择 FIRC(快速内部参考时钟)作为替代的时钟源。

2.2.3 通信波特率

  波特率由两个因素决定:模块编程的时序参数,以及波特率时钟本身。FlexCAN 的波特率时钟是来自于 XOSC,正如上文所述。时序参数被编程以实现 XOSC 和 FIRC 两种时钟源下的共同比特率。对于 XOSC,不同频率的晶体会直接影响到比特率,比特率与波特时钟成正比关系。如下图所示:

在这里插入图片描述

2.2.4 基于FlexCAN的Serial Boot通信流程

  主机根据串行下载协议,传输应用程序镜像(即程序代码和数据)。芯片(MCU)在 FlexCAN 接口上传输帧时所用的消息标识符(IDs)在下表中给出,并根据通信的阶段进行了分类。

在这里插入图片描述

  综上描述的是在串行启动过程中,FlexCAN 模块如何通过特定的时钟源(首选 XOSC,备选 FIRC)来获取波特时钟,并根据这个时钟和预设的时序参数来确定通信的波特率,以确保数据传输的稳定性。此外,还提到了在程序通过串行下载协议传输期间,系统如何使用不同的消息标识符来区分通信阶段。

2.3 基于UART的Serial Boot

  BootROM支持通过LINFlexD_0模块配置为UART模式完成串行下载功能,此时芯片和镜像传输者之间通过UART包传递数据。

2.3.1 UART IO配置

  在S32G3系列的芯片上,UART对应的IO如下所示,需要对其做相应配置:

在这里插入图片描述

2.3.2 时钟配置

  LINFlexD 模块的时钟来源于一个名为 MC_CGM_0 clock Mux 8 selector 的时钟选择器。如下图所示:

在这里插入图片描述

Tip📌:在引导过程中,BootROM使用一个外部振荡器(XOSC)作为 LIN_BAUD_CLK 的源。如果 XOSC 初始化失败,系统会自动选择 FIRC(快速内部参考时钟)作为替代的时钟源。

2.3.3 通信波特率

  波特率由两个因素决定:模块编程的时序参数,以及波特率时钟本身。LINFlexD 的波特率时钟是来自于 XOSC,正如上文所述。时序参数被编程以实现 XOSC 和 FIRC 两种时钟源下的共同比特率。对于 XOSC,不同频率的晶体会直接影响到比特率,比特率与波特时钟成正比关系。如下图所示:

在这里插入图片描述

  通信过程与上一节一致,都是基于通用的串行下载协议实现的通信流程,这里不再赘述。

>>>>>>>>> 返回专栏总目录 《S32G3系列芯片——Boot详解》<<<<<<<<<

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

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

相关文章

定义和使用自己的子程序——函数的介绍

定义和使用自己的子程序——函数的介绍 1.函数基础语法1.1.基础语法1.2.例题1——距离函数题目描述输入格式输出格式输入输出样例输入 #1输出 #1 提示 2.void类型3.变量作用域和参数传递3.1.局部变量和全局变量3.2.形式参数和实际参数3.3.例题2——歌唱比赛题目描述输入格式输出…

计算机基础(Windows 10+Office 2016)教程 —— 第6章 电子表格软件Excel 2016(下)

电子表格软件Excel 2016 6.4 Excel 2016的公式与函数6.4.1 公式的概念6.4.2 公式的使用6.4.3 单元格的引用6.4.4 函数的使用6.4.5 快速计算与自动求和 6.5 Excel 2016的数据管理6.5.1 数据排序6.5.2 数据筛选6.5.3 分类汇总6.5.4 分组显示6.5.5 合并计算 6.6 Excel 2016的图表6…

【RabbitMQ】通配符模式(Topics)

一、基本概念 生产者&#xff08;Producer&#xff09;&#xff1a;发送消息到RabbitMQ交换机的程序。生产者定义消息的路由键&#xff0c;用于标识消息的目的地。交换机&#xff08;Exchange&#xff09;&#xff1a;接收生产者发送的消息&#xff0c;并根据路由键和绑定规则…

一款.NET开源、跨平台的DASH/HLS/MSS下载工具

前言 今天大姚给大家分享一款.NET开源&#xff08;MIT License&#xff09;、免费、跨平台的DASH/HLS/MSS下载工具&#xff0c;并且支持点播和直播&#xff08;DASH/HLS&#xff09;的内容下载&#xff1a;N_m3u8DL-RE。 网络流媒体传输协议介绍 DASH DASH是一种基于HTTP的…

2024年8月1日(前端服务器的配置以及tomcat环境的配置)

[rootstatic ~]# cd eleme_web/ [rootstatic eleme_web]# cd src/ [rootstatic src]# ls views/ AboutView.vue HomeView.vue [rootstatic src]# vim views/HomeView.vue [rootstatic src]# nohup npm run serve nohup: 忽略输入并把输出追加到"nohup.out" 构建项目…

零基础入门转录组数据分析——机器学习算法之boruta(筛选特征基因)

零基础入门转录组数据分析——机器学习算法之boruta&#xff08;筛选特征基因&#xff09; 目录 零基础入门转录组数据分析——机器学习算法之boruta&#xff08;筛选特征基因&#xff09;1. boruta基础知识2. boruta&#xff08;Rstudio&#xff09;——代码实操2. 1 数据处理…

机器学习之贝叶斯方法

机器学习之贝叶斯方法 1. 贝叶斯定理基础1.1 贝叶斯定理公式1.2 先验概率 (Prior Probability)1.3 后验概率 (Posterior Probability)1.4 似然 (Likelihood)1.5 证据 (Evidence)1.6 贝叶斯定理的应用实例 2. 贝叶斯方法的基本概念2.1 条件概率 (Conditional Probability)2.2 全…

Python SDK 使用Azure Document intelligence报错(404) Resource not found

最近项目需要使用到Azure Document intelligence,于是去做POC&#xff0c;但是发现最简单的demo跑的时候都会报这个错&#xff0c;解决了一下午终于搞定了&#xff0c;记录下。 首先是官方文档&#xff1a;Quickstart: Document Intelligence (formerly Form Recognizer) clien…

反序列化漏洞vulhub靶场serial

环境搭建 下载 https://download.vulnhub.com/serial/serial.zip 解压出来就是这种 你会得到一个这样的文件&#xff0c;这里使用VMware新建一个虚拟机&#xff0c;这里记录比较重要的几部分。 这里就是使用我们刚才下过来的。 漏洞过程详解 1.信息收集 打开靶机&#xff0…

IDEA切换分支,会影响当前在跑的项目吗?

说明&#xff1a;本文测试&#xff0c;在IDEA中运行项目&#xff0c;然后切换分支&#xff0c;是否会影响当前正在跑的项目 准备工作 首先&#xff0c;创建一个Git项目&#xff0c;接口如下&#xff1a; import org.springframework.web.bind.annotation.GetMapping; import…

13. 文本框和单选题

属性说明type指定元素的类型。text、password、checkbox、radio、submit、reset、file、hidden、image和button&#xff0c;默认为textname指定表单元素的名称value元素的初始值。type为radio时必须指定一个值size指定表单元素的初识宽度&#xff0c;当type为text或password时&…

3.Java面试题之AQS

1. 写在前面 AQS&#xff08;AbstractQueuedSynchronizer&#xff09;是Java并发包&#xff08;java.util.concurrent&#xff09;中的一个抽象类&#xff0c;用于实现同步器&#xff08;如锁、信号量、栅栏等&#xff09;。AQS提供了一种基于FIFO队列的机制来管理线程的竞争和…

【RabbitMQ】路由模式(Routing)

一、基本概念 生产者&#xff08;Producer&#xff09;&#xff1a;发送消息到交换机的程序。在发送消息时&#xff0c;需要指定一个路由键。交换机&#xff08;Exchange&#xff09;&#xff1a;接收生产者发送的消息&#xff0c;并根据路由键将消息路由到与之匹配的队列。在…

1.kafka面试题之零拷贝

1. 写在前面 Kafka 是一个高性能的分布式消息系统&#xff0c;它使用了多种优化技术来提高数据传输效率&#xff0c;其中之一就是 “零拷贝”&#xff08;Zero Copy&#xff09;。零拷贝技术可以显著减少数据在内存中的复制次数&#xff0c;从而提高 I/O 操作的效率&#xff0…

volatile 关键字的两层语义

volatile 关键字的两层语义 1、可见性2、禁止指令重排序3、工作机制4、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; volatile 关键字在Java并发编程中扮演着重要角色&#xff0c;它主要用于保证变量的可见性和禁止指令重排序。 1、…

python绘图 | 横坐标是日期,纵坐标是数值

需求 profit_value [0.084, 0.225, 0.234, 0.264, 0.328] time_stamp [20221111, 20230511, 20230704, 20231212, 20240315] 横坐标是日期&#xff0c;纵坐标是数值&#xff0c;我想绘图的时候&#xff0c;横坐标是按日期格式来 代码 from matplotlib import pyplot as pl…

Mallet:一款针对任意协议的安全拦截代理工具

关于Mallet Mallet是一款功能强大的协议安全分析工具&#xff0c;该工具支持针对任意协议创建用于安全审计的拦截代理&#xff0c;该工具本质上与我们所熟悉的拦截Web代理类似&#xff0c;只是通用性更强。 工具运行机制 Mallet建立在Netty框架之上&#xff0c;并且依赖于Net…

ThreadLocal:线程本地变量的作用与应用

ThreadLocal&#xff1a;线程本地变量的作用与应用 1、简介2、作用3、应用场景4、注意事项 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、简介 ThreadLocal 是Java中一个强大的工具类&#xff0c;用于创建线程局部变量。它为每个使用该…

7.Redis的Hash类型

Hash类型&#xff0c;也叫散列&#xff0c;其value是一个无序字典&#xff0c;类似于HashMap结构。 问题 String结构是将对象序列化为json字符串后存储&#xff0c;当需要修改对象某个字段是不是很方便。 key value…

AHK是让任何软件都支持 Shift + 鼠标滚轮 实现界面水平滚动

目录 基本介绍 详细特点 图解安装 下载失败&#xff1f;缓慢&#xff1f; 创建并运行脚本代码&#x1f603; 新建空 xxx.ahk文件 vscode/记事本等编辑工具打开 复制并粘贴简易脚本 运行 其他问题 问题一&#xff1a;弹出无法执行此脚本 关闭脚本 基本介绍 AutoHot…