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

news2024/11/23 14:55:32

《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.coloradmin.cn/o/1970039.html

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

相关文章

精心准备的高水平的博客【点评语】,来抄啊!

大家好&#xff0c;我是一名_全栈_测试开发工程师&#xff0c;已经开源一套【自动化测试框架】和【测试管理平台】&#xff0c;欢迎大家关注我&#xff0c;和我一起【分享测试知识&#xff0c;交流测试技术&#xff0c;趣聊行业热点】。 第 1 条 这篇博客文章如同灯塔般照亮了技…

ElementPlus 覆盖默认样式的探索

文章目录 问题解决:global 解释改进一下在研究一下 问题 解决 使用 :global(.el-header) :global(.el-header) {padding: 0; } :global(.el-menu--horizontal) {justify-content: center; }:global 解释 在Vue中&#xff0c;:global() 是一个特殊的 CSS 选择器&#xff0c;用…

在Windows中使用VS Code连接远程服务器

①首先生成自己的密钥 ssh-keygen ②打开VS Code的扩展&#xff0c;安装连接工具 Remote-SSH Remote - SSH: Editing Configuration Files ③点击左侧远程资源管理器&#xff0c;之后点击SSH右侧齿轮&#xff0c;选择一个配置文件 注意&#xff1a;此部分的Host名字要与生成…

【Python机器学习系列】一文教你实现决策树模型可视化(案例+源码)

这是我的第335篇原创文章。 一、引言 决策树是一个有监督分类模型&#xff0c;本质是选择一个最大信息增益的特征值进行输的分割&#xff0c;直到达到结束条件或叶子节点纯度达到阈值。根据分割指标和分割方法&#xff0c;可分为&#xff1a;ID3、C4.5、CART算法。每一种颜色代…

GitLab安装方式

一、什么是GitLab GitLab是一个利用Ruby on Rails开发的开源应用程序&#xff0c;实现一个自托管的Git项目仓库&#xff0c;可通过Web界面进行访问公开或者私人项目。它拥有与Github类似的功能&#xff0c;能够浏览源代码&#xff0c;管理缺陷和注释&#xff0c;可以管理团队对…

动态代理对象在 IronPython 中的实现

动态代理对象是一种设计模式&#xff0c;允许在运行时动态地创建对象&#xff0c;并在这些对象上拦截和处理方法调用。它常用于 AOP&#xff08;面向方面编程&#xff09;、日志记录、权限控制等场景。应用非常广泛&#xff0c;下面跟着我来聊一聊我遇到的问题。 1、问题背景 …

通过ProSave对西门子触摸屏进行OS更新的具体操作方法(恢复出厂设置)

通过ProSave对西门子触摸屏进行OS更新的具体操作方法(恢复出厂设置) 首先,打开电脑的控制面板,将右上角的查看方式修改为“大图标”,如下图所示,找到“设置PG/PC接口”, 如下图所示,在弹出的窗口中上方的应用程序访问点的下拉菜单中选择 “S7ONLINE(STEP7)”,并在下…

【深度学习实战(49)】目标检测损失函数:IoU、GIoU、DIoU、CIoU、EIoU、alpha IoU、SIoU、WIoU原理及Pytorch实现

前言 损失函数是用来评价模型的预测值和真实值一致程度&#xff0c;损失函数越小&#xff0c;通常模型的性能越好。不同的模型用的损失函数一般也不一样。损失函数主要是用在模型的训练阶段&#xff0c;如果我们想让预测值无限接近于真实值&#xff0c;就需要将损失值降到最低…

kernel-devel导致的linux网卡驱动安装异常

引言 安装包下载&#xff1a;iso镜像文件解压后进入package路径&#xff0c;可以找到所有想要的rpm安装包 1.检查gcc gcc -v&#xff1a;检查gcc编译程序是否安装&#xff0c;如果已经成功安装直接执行步骤3 2.安装gcc & gcc-c gcc程序准备&#xff0c;拷贝到centos后进入…

大厂linux面试题攻略五之数据库管理

一、数据库管理-MySQL语句 0.MySQL基本语句&#xff1a; 1.SQL语句-增 创建xxx用户&#xff1a; mysql>create user xxx % indentified by 123456; xxx表示用户名 %b表示该用户用来连接数据库的方式&#xff08;远程或本地连接&#xff09; indentified by 123456设置密码…

《看漫画学Python》全彩PDF教程,495页深度解析,零基础也能轻松上手!

前言 说起编程语言&#xff0c;Python 也许不是使用最广的&#xff0c;但一定是现在被谈论最多的。随着近年大数据、人工智能的兴起&#xff0c;Python 越来越多的出现在人们的视野中。 在各家公司里&#xff0c;Python 还常被用来做快速原型开发&#xff0c;以便更快验证产品…

PyCharm 中如何使用驭码CodeRider?

极狐GitLab 在 5 月 28 日正式发布了 AI 产品驭码CodeRider&#xff0c;可以使用驭码CodeRider 进行AI 编程 & DevOps 流程处理。现已开启免费试用&#xff0c;登录官网&#xff1a;https://coderider.gitlab.cn/ 即可申请试用。 GitLab 中文版学习资料 驭码CodeRider 官…

【论文学习】基于序列统计的未知无线协议特征提取方法

【参考文献】刘治国,蔡文珠,李运琪,等.基于序列统计的未知无线协议特征提取方法[J].计算机工程,2021,47(11):192-197.DOI:10.19678/j.issn.1000-3428.0059551.【注】本文仅为作者个人学习笔记&#xff0c;如有冒犯&#xff0c;请联系作者删除。 这篇题为《基于序列统计的未知无…

U-Net++原理与实现(含Pytorch和TensorFlow源码)

U-Net原理与实现 引言1. U-Net简介1.1 编码器&#xff08;Encoder&#xff09;1.2 解码器&#xff08;Decoder&#xff09;1.3 跳跃连接&#xff08;Skip Connections&#xff09; 2. U-Net详解2.1 密集跳跃连接2.2 嵌套和多尺度特征融合2.3 参数效率和性能2.4 Pytorch代码2.5 …

conda搭建环境,pycham使用

相信学习了tensorflowjs后一定不会满足&#xff0c;毕竟tensorflowjs使用场景以及开源度远不及pyhton的tensorflow&#xff0c;所以不要犹豫&#xff0c;开始使用python吧&#xff0c;有ChatGPT帮助&#xff0c;比想象的简单很多 python环境安装 conda环境安装 推荐大家直接…

[STM32][Bootloader][教程]STM32 HAL库 Bootloader开发和测试教程

0. 项目移植 对于不想知道其执行过程的朋友来说&#xff0c;可以直接移植&#xff0c;我的板子是STM32F411CER6, 512K M4内核 项目地址&#xff1a; Bootloader&#xff08;可以自己写标志位用于自测&#xff0c;项目中这部分代码已经被注释&#xff0c;可以打开自行测试&…

中国智能物流头部集成商的“江湖地位”及其“独门秘笈”

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 物流仓储自动化领域犹如一片充满机遇与挑战的江湖&#xff0c;各大企业群雄逐鹿&#xff0c;各展所长。这些企业&#xff0c;如同金庸小说中的武林高手&#xff0c;不仅拥有深厚的内功…

后台列表复制功能

html&#xff1a; <el-button click"copy(row)">复制</el-button><!-- 复制弹框 --> <el-dialog :close-on-click-modal"false" title"复制" width"600px" :visible.sync"copyVisible" append-to-bod…

博世战胜三星,577亿最大笔收购,豪赌杀入自动化新业务

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 德国工业巨头博世再次震惊业界&#xff01;近日&#xff0c;这家总部位于斯图加特的科技公司以74亿欧元&#xff08;约合人民币577亿&#xff09…

自动化测试常用函数(Java方向)

目录 一、元素的定位 1.1 cssSelector 1.2 xpath 1.2.1 获取HTML页面所有的节点 1.2.2 获取HTML页面指定的节点 1.2.3 获取⼀个节点中的直接子节点 1.2.4 获取⼀个节点的父节点 1.2.5 实现节点属性的匹配 1.2.6 使用指定索引的方式获取对应的节点内容 二、操作测试对…