英飞凌TC3xx 启动逻辑梳理(1)

news2024/11/24 7:42:25

目录

1.启动时序总览

2.Boot Firmware干了什么?

2.1 BMHD梳理

2.2 HWCFG

2.3 ABM

2.4 BMHD 无效时处理方案

2.5 HSM启动如何影响SSW启动

3.小结


在调TC3xx的板子时,最害怕的就是刷UCB;稍不注意板子就上锁,调试器也连不上了,这里面的逻辑是什么?

在设计SafetyLib时,对于芯片启动阶段的功能安全逻辑应该是怎样的?

在设计SecurityLib时,对于芯片启动阶段的信息安全应该如何考量?

今天就这几个方向来梳理一下TC3xx的启动流程。

1.启动时序总览

常见MCU的启动时序通常可以分为三大步,如下图:

  1.  当外部电源上电后,MCU进入到复位状态,此时不会跑任何代码;这个阶段主要是芯片供电选择、时钟开启、各个IP复位释放;
  2. 硬件完成上述工作后,将PC指向BootRom中代码(下文称Firmware)的首地址,此时软件开始参与工作,包括用户配置参数的判断和加载、特定寄存器状态判断、复位源设置、启动模式评估等等;需要注意的是Firmware是芯片在流片时固化好,后续用户无法修改,因此这部分代码逻辑我们会在芯片的UserMannul看到,例如英飞凌TC3xx UserMannul Platform Firmware;
  3. Firmware执行完成后,通常会跳转至用户的启动代码(正常流程),这就是我们软件开发常见的start.s;这部分用户进行定制化开发,进一步初始化软硬件;最后跳转至不同Core 的应用代码。

这么简单描述起来,感觉是不是很简单。但是当我们把Boot Firmware中启动模式评估、功能安全以及信息安全结合到一起时,总会有在本文开头提到的那些疑惑。

那么接下来我们来过一遍Boot Firmware流程,再补充Safety和Security的一些思考。

2.Boot Firmware干了什么?

在TC3xx的Boot Firmware由CPU0执行,包含了两大功能:

  • Startup Software:简称SSW,主要用于加载用户配置数据、启动模式选择、错误状态处理等等;
  • Checker Software:简称CHSW,用于检查SSW中的配置是否正确

2.1 BMHD梳理

SSW有很多步骤,这里就不一一列举了,基本流程如下:

其中,最值得我们关注的是在启动模式的选择、Error Pin的处理。

前者涉及到我们芯片能不能正常起来(锁板子的痛),后者涉及到系统级功能安全的设计。

启动模式选择与我们在UCB中关于BMHD的配置息息相关,TC3xx共计8个BMHD,其中4个原始BMHD,4个COPY BMHD防止数据损坏,如下图:

 因此,为了MCU能正常启动,我们至少得配置一个有效的BMHD,具体配置项如下:

其中,BMI_BMHDID包含了启动模式、功能等配置信息,以及这个Header的固定ID:0xB359(还挺幽默,转出来显示"Y"):

SSW软件在进入模式选择流程后,首先会判断Origin BMHD是否有效, 这其中包括ID、STAD、BMI、CRC、CRCN的判定,如果都通过了,则会判定PINDIS和Boot Mode Lock,用于确定是否使用硬件Pin来选择启动模式。

2.2 HWCFG

假设使用硬件HWCFG用于启动模式选择,这时候Hardware Configuration Pins派上了用场(PMS章节 Figure92),如下图:

SSW会检查pin是否使能(HWCFG[3] == 0 ),如使能则根据SCU_STSTAT中锁存的HWCFG[4:5]两个PIN脚的电平进行模式选择;

不过这种方式有个风险,容易被暴力刷新,比较少用。

如果不使用硬件PIN选择启动模式,那么就根据我们在UCB_BMHD配置的启动模式进行配置(BMHD.BMI,HWCFG[3:1])。注意,这里非常容易和硬件HWCFG[5:4]搞混淆,其实只要明确一个是通过硬件PIN,一个是通过UCB里的配置(软件)即可。

2.3 ABM

英飞凌TC3xx提供了四种启动模式,从内部Flash启动、ABM(Alternate Boot Mode)启动、CAN Bootstrap和ASC Bootstrap;

在这之前我去回顾了TC27x的启动流程,并与TC3xx进行对比,从中发现了一些端倪。

TC27x也分从内部Flash启动和ABM启动,但是如果选择从内部Flash启动,启动地址固定为0xA0000020。

这种固定的启动方式在今天看来有些笨拙,所以提出了ABM模式供用户任意配置启动地址。

从TC27x的BMHD也可以窥探到一些信息,其结构如下:

可以发现TC27x中BMHD仅有STADABM,没有TC3xx的STAD配置项,且这个BMHD是存在PFlash 0xA0000000-0xA000001F这个位置,所以它的ABM启动方式为:

而到TC3xx系列,它把BMI.STAD做成了两种方式:

  • 从内部Flash启动,STAD就直接指向用户代码;
  • 从ABM模式启动,STAD指向ABM Header存放的地址;

 因此这二者启动方式总结如下:

但仔细看,这二者都在从内部Flash启动,在应用层面的用法有什么不一样吗?

我们从BMHD、ABMHD的存放位置和结构属性进行分析。

TC3xx的BMHD存放在UCB中(DFlash),而众所周知UCB的刷新很容易导致板子上锁;ABMHD存放在PFlash中,这就好办了,随便刷。示意如下:

那我们是否可以BMHD配置为ABM,然后在ABM里配置启动地址,这样刷UCB的次数少了,相应锁板子的几率就小了?

2.4 BMHD 无效时处理方案

当所有BMHD无效时,SSW给出了解决方案,流程图如下:

可以看到,当HSM Boot没有使能且Boot Mode没有上锁时, 即使没有BMHD,SSW仍会从PFlash0或者CPU0_PSPR进行启动;

那为什么会锁板子呢?锁板子意味着调试器都连不上,当没有找到任何有效BMHD时,HSM Boot如果开启了,或者BootMode上锁了(DMU_HF_PROCONTP.BML),则找不到有效的BOOT_CFGH,在3.1.1.6.4章节,详细描述了这种情况,如下图:

这就有点疑惑了,什么叫做该设备的默认配置失效?同时参考流程图,如果Debug访问是使能的,则解锁调试接口,很多人就是卡在这一步,主要是CBS_OSTATE\CBS_OEC这类似的寄存器也是需要NDA的,不太了解其原理。

2.5 HSM启动如何影响SSW启动

当SSW启动完成后,按理说应该跳转至用户代码开始运行,但在TC3xx中还有一个特别的配置,即SSWWAIT,用于决定SSW是否等待HSM响应后才运行用户代码,如下:

 因为我们可以推断出其运行逻辑如下:

而我们常见顺序、并行、混合启动逻辑,就在这HSM SecureBoot Code中进行处理。 

3.小结

限于篇幅,本章讲述了SSW里面的一些关键事项,接下来我们来看应用启动代码中的逻辑

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

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

相关文章

BL207分布式I/O模块能源管理系统升级的智慧之选

能源管理领域智能化、网络化趋势的不断深入,如何高效、准确地采集并分析能源消耗数据成为众多企业优化能源利用、降低成本的关键所在。钡铼电子的BL207 BACnet IP分布式远程I/O模块,正是在这样的背景下应运而生,为能源管理系统(EM…

zookeeper启动 FAILED TO START

注意:启动zookeeper时,需要使用zkServer.sh start命令将所有主机启动后,再查看状态 如果,启动一台主机,查看当前主机状态,则会报错 如果出错,进入到$ZOOKEEPER_HOME/logs,查看日志 …

C++数据结构——AVL树

前言:本篇文章将紧随二叉搜索树的节奏,分享一个新的数据结构——AVL树。 目录 一.AVL树概念 二.AVL树插入规则 三.AVL树实现 1.基本框架 2.插入 3.旋转 1)左\右单旋 2)左右/右左双旋 4.遍历 5.求树高度 6.判断平衡 7.…

WireShark对tcp通信数据的抓包

一、抓包准备工作 安装wireshark sudo apt update sudo apt install wireshark 运行 二、WireShark工具面板分析 上图中所显示的信息从上到下分布在 3 个面板中,每个面板包含的信息含义如下: Packet List 面板:显示 Wireshark 捕获到的所…

Vision Mamba:高效视觉表示学习双向状态空间模型,超越Vision Transformer!

DeepVisionary 每日深度学习前沿科技推送&顶会论文分享,与你一起了解前沿深度学习信息! Vision Mamba: Efficient Visual Representation Learning with Bidirectional State Space Model 引言:探索视觉领域的新方向 在计算机视觉领域&…

【RSGIS数据资源】1980-2021年中国土地利用覆盖和变化数据集

文章目录 摘要1. 数据集概况2. 数据集组织形式2.1 1980-2015年中国森林覆盖数据集CFCD2.2 1980-2021年中国土地利用覆盖与变化数据集 3. 数据生产服务单位4. 引用 摘要 通过融合森林资源清查数据和20种遥感土地利用产品,重建生成了1980-2015年中国森林覆盖数据集&a…

JAVA大量数据导出excel

背景:因项目需要导出3万行,90列的数据到excel,使用传统的apache poi 直接导出,导致504连接超时无法导出。然后改造方法,异步导出。 一、准备一个导出类,属性有id,outputstrream,finleName,err,e…

五、Redis五种常用数据结构-SET

Redis的Set结构存储的数据和Java中的HashSet类似,都是无序且不重复的。其底层的数据结构有两种,一是当value为整数时,且数据量不大时采用intset来存储。其他情况使用dict字典存储。集合中最多存储232-1(40多亿)个数据。 1、常用命令 sadd k…

Vue中引入Element组件、路由router、Nginx打包部署

目录 1、Element-ui(饿了么ui) 演示: 怎么打开NPM脚本? Vue路由router Nginx打包部署Vue-Cli项目 1、Element-ui(饿了么ui) element-ui(饿了么ui)是一个非常好用且美观的组件库(插件库),主要用于网站快速成型,由国产团队饿了么…

网工交换基础——VLAN Maping

一、定义 VLAN Maping通过修改报文携带的VLAN Tag来实现不同VLAN的相互映射。 二、应用场景 1、场景一:两个VLAN相同的二层用户网络通过骨干网络互联,为了实现用户之间的二层互通,以及二层协议(例如MSTP等)的统一部署…

如何内网穿透,远程访问内网设备

文章目录 0.前言1.准备工作2.内网穿透原理3.配置公网服务器的frp5.配置访问内网主机6.配置win10的远程桌面访问(win11类似)7.参考资料 0.前言 最近想研究一些新东西,公司的机器不敢乱搞,公司测试的服务器安装软件太多&#xff0c…

React - Input框绑定动态State和监听onChange事件,输入时失去焦点

React - Input框绑定动态State和监听onChange事件,输入时失去焦点 一. 案例复现二. 解决方案 一. 案例复现 案例代码如下: import React, { useState } from react; import { Table, Input } from antd; const Column Table.Column; const mockData …

CSP-j 计算机硬件

计算机系统 计算机系统由计算机硬件和软件两部分组成。硬件包括中央处理器、存储器和外部设备等;软件是计算机的运行程序和相应的文档。计算机系统具有接收和存储信息、按程序快速计算和判断并输出处理结果等功能。 主要技术指标 字长:字长是指CPU能够同…

anaconda虚拟环境pytorch安装

1.先创建conda的虚拟环境 conda create -n gputorch python3.102.激活刚刚创建好的虚拟环境 conda activate gputorch3.设置镜像源 这一步是后面安装pytorch相关包所需要的来源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple4.查看电脑的显卡…

【C++进阶】C++中的map和set

一、关联式容器 在初阶阶段,我们已经接触过STL 中的部分容器,比如: vector 、 list 、 deque, forward_list 等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本…

PyQt5的布局管理

文章目录 1.垂直布局和水平布局垂直布局(QVBoxLayout):水平布局(QHBoxLayout): 2. 布局中的addStrech2.1 我们首先看只有一个Strech的情况,比较容易理解2.2 两个Strech2.3 多个Strech 3.栅格布局…

linux下使用jexus部署aspnet站点

1.运行环境 Centos 7 安装dos2unix工具 yum install dos2unix 安装jexus curl https://jexus.org/release/x64/install.sh|sudo sh2.网站部署 2.1. 将windows下的网站发布包Msc_qingdao_admin.zip上传到linux中, 然后解压后放入/var/www(没有则创建)目录下 r…

二叉树的遍历(前序 中序 后序)

一、前序遍历 顺序为: 根-->左子树---->右子树 先访问根节点,再递归进入根节点的左子树(通过递归不断往下遍历),直到访问的节点没有左子树,此时递归进入其右子树(通过递归进行相同操作&a…

简单问题汇总

一、vector和list 1.vector vector是可变大小数组的序列容器,拥有一段连续的内存空间,并且起始地址不变,因此能高效的进行随机存取,时间复杂度为o(1);但因为内存空间是连续的,所以在进行插入和删除操作时…

机器学习算法应用——关联规则分析(4-4)

关联规则分析(4-4) 关联规则分析(Association Rule Mining)是一种基于频繁项集的分析方法,它以最常出现在一起的元素之间的关系作为分析对象,主要用于发掘大数据中隐藏的关联规则,是数据挖掘技术…