汽车功能安全--TC3xx LBIST触发时机讨论

目录

1. LBIST架构

2. LBIST寄存器配置

3. LBIST触发时机


LBIST,全称Logic Built-in Self Test。

在TC3xx中,LBIST是一种硬件功能安全机制,目的是为了探测MCU内部逻辑电路的潜伏故障(latent faults)。

从使用者角度来看,只需要知道TC3xx的LBIST,它是基于对MCU进行量产测试的DFT(Design Fot Test)结构。这些测试逻辑是在芯片设计过程中被引入,流片后在ATE(自动测试仪)设备上通过对芯片进行测试,挑出有制造缺陷的芯片并淘汰掉,保证芯片的良率。

因此首先我们来熟悉熟悉LBIST架构。

1. LBIST架构

TC3xx LBIST结构如下图所示:

它主要由PRPG(Pseudo-Random Pattern Generator)、Scan Chains、MISR(Multiple-Input Signature Register)、LBIST Controller组成。

LBIST执行时,首先PRPG使用LFSR(Linear Feedback Shift Register )生成伪随机测试向量,送入到扫描链进行测试,然后compactor将得到结果通过异或门进行压缩,产生最终MISR签名,送入到LBIST Controller的相关寄存器中,以便应用软件比较。

基本原理看起来比较简单,但是我们知道,给用户端呈现得越简单,实际芯片设计过程就越复杂,所以接下来我们看看,LBIST模块相关寄存器有多简单(毕竟我也不懂DFT)。

2. LBIST寄存器配置

LBIST Controller相关寄存器总计只有4个,分别是LBISTCTRL0\1\2\3

  • LBISTCTRL0

该寄存器主要用于设置LBIST Pattern个数、触发LBIST、表征LBIST测试状态、复位LBIST Controller等,是用户端主要关心的寄存器。

  • LBISTCTRL1

该寄存器比较常用的是位域BODY,用于决定LBSIT执行时GPIO对外状态,一般建议配置为弱上拉 

  • LBISTCTRL2

该寄存器用于配置扫描链最大长度

  • LBISTCTRL3

该寄存器存放MISR的签名值,可由软件读出,进行比对。

在最开始接触的时候,大家估计对寄存器中每个位域该如何配置非常困惑,毕竟pattern长什么样、个数应该怎么配置、签名的目标值是多少,对于使用者来说都是模糊的。

因此,英飞凌在每款芯片的具体UserManaul里都给出了推荐配置,例如TC37x AA LBIST配置推荐如下:

需要注意的是LBISTCTRL3是一个RH类型寄存器, 这里给的签名是给软件去做对比用的。

3. LBIST触发时机

LBIST的触发时间选择比较关键,因为根据文档描述,LBIST执行结束后会执行一个reset,

因此,一般多用在启动时进行一次LBIST测试, 英飞凌提供了两种选择:

  • 通过UCB.BMHD.BMI的LSENAx位域,在BootRom阶段由SSW触发;

  • 在应用启动阶段由软件进行触发

LBIST始终会触发Warm Reset,并且签名值的比较只能由用户软件处理,因此在设计LBIST触发时,我们应该先搞懂其运行逻辑,具体如下:

上图中,灰色部分为英飞凌的SSW软件,不可更改,只能通过UCB配置影响启动逻辑;绿色部分为应用软件部分,由用户实现。

  • 系统从冷复位起来后,首先进入到SSW,该软件依次判断是否是Cold Reset、BMI.LBIST是否使能,如使能则触发LBIST,完成后进行warm reset,SSW会判断是否完成了LBIST,如果完成则跳转至用户代码(注意,SSW逻辑复杂,这里仅讨论LBIST相关);
  • 用户启动后,去判断LBIST是否完成,如果LBIST已经完成了,就判断签名值是否匹配,不匹配则判断LBIST重试次数是否达到阈值,如没有则继续Trigger LBIST;

个人认为,英飞凌提出了使用UCB触发和软件自动触发的原因应该是最开始认为用户可以自定义去配置LBIST Pattern,但是我们发现,我们根本就看不懂这些寄存器说明,所以还是老老实实使用推荐配置。

既如此,那么上述逻辑就可以更进一步优化,使用时固定配置UCB.BMI.LBENAx打开,这样在SSW里就可以触发LBIST,那么Reset类型就为Warm Reset。因此在用户代码逻辑里,我们只要判断只要不是cold reset,我们就去比较签名值,这样就能节省启动时间。如下图:

当然,软件的设计是各种各样的,还可以直接读取复位状态寄存器RSTSTAT.LBTERM,如置位了就可以直接比较签名值,无论怎么样最终目的还是为了既能有效执行LBIST,又能加快启动时间。

最后,我们来考虑,上述代码应该在哪里执行?汽车ECU典型的用户代码分为Bootloader、App;个人理解既然LBIST是关系到MCU的内部逻辑电路,那么最好就是最早处理,因为一旦LBIST不成功,意味着代码就难以继续运行,故在Bootloader里做能及早发现问题。

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

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

相关文章

NarratoAI —— 一站式AIGC自动化影视解说工具

随着人工智能技术的飞速发展,越来越多的工具开始涌现,旨在简化视频内容的创作过程。NarratoAI 就是一款基于先进AI大模型的自动化影视解说工具,它不仅能够自动生成视频脚本,还能完成视频剪辑、配音和字幕生成等一系列任务。本文将详细介绍 NarratoAI 的核心功能及其特色,帮…

网络安全售前入门06安全服务——基线检测服务方案

目录 1.服务概述 2.服务原则 3.服务内容 4.检查示例 ​​​​​​​5.服务输出 1.服务概述 安全基线检查可以帮助单位认清自身风险现状和漏洞隐患,使业务系统的风险维持在可控范围内。根本目的是保障业务系统的安全,是为了避免人为疏忽或错误,或使用默认的安全配置,给…

Native开发与逆向第四篇 - hook JNI函数GetStringUTFChars

修改测试demo 通过GetStringUTFChars 获取java层传入的字符串参数。 extern "C" JNIEXPORT jstring JNICALL Java_com_mycode_nativehello_MainActivity_stringFromJNI(JNIEnv* env,jobject /* this */,jstring s) {std::string hello env->GetStringUTFChars(s…

K8S 1.31 新功能: 跨核分发CPU

​在Kubernetes的最新版本1.31中,一个超酷的新功能,叫做CPUManager的静态策略,里面有个选项叫做distribute-cpus-across-cores。虽然这个功能现在还在测试阶段,也就是alpha版,而且默认是藏起来的,但它的目的…

腾讯提出一种新的针对风格化角色和逼真服装动画的生成3D运动转移方法,生成效果逼真!

来自腾讯XR视觉实验室的研究团队提出了一种创新的3D运动转移方法,专门针对风格化角色和逼真服装动画的生成。该方法能够将源动作准确地映射到目标角色上,同时考虑了角色身体的刚性变形和服装的局部物理动态变形。 与现有技术相比,这技术不仅…

docker Desktop报错 error pulling image configuration 处理

问题描述 在 docker 拉数据 出现以下错误 error pulling image configurarion: 这个问题 主要是 可能应该某些原因不能网络无法连上镜像 原因分析: 1。 2024年 5月以后 国内很多IP都 。。。懂的都懂,很多 VPN 也是。。。 懂的都懂&#x…

C++类和对象(5)——运算符重载(以日期类为例)

运算符重载的作用 假设我们此时实现了日期类的运算符重载,我们就可以 实现如图的很多功能,完成日期计算器的底层代码。 运算符重载关键字 运算符重载的关键字是operator。 比如你想重载‘’运算符,那么语法格式就是 返回类型 operator …

【Linux】系统管理(第六篇)

目录 1.ps命令详解:查看正在运行的进程 2.top命令详解:持续监听进程运行状态 3.pstree命令:查看进程树 4.lsof命令:列出进程调用或打开的文件信息 5.kill命令详解:终止进程 6.进程中常见得信号 7.Linux命令放入后…

跨境多账号登录如何防止IP、cookie和设备关联?

在当今数字化时代,拥有某个平台的多个账号是必要的,但如何防止这些账号之间产生关联,进而导致封号,却是一个需要谨慎对待的问题。 一、 多账号关联的主要因素 1. IP地址 2. Cookie和缓存 3. 设备指纹 二、如何防关联&#xff…

跨vue、react、angular框架渲染

应用场景 A 框架项目渐进式迁移到 B 框架一码多框架,开发一套组件,各个框架的应用复用;微前端实现【无沙箱能力】 思路 在 A 框架中渲染 B 框架的组件,将 B 框架的组件渲染成真实 dom 再挂载到对应位置。 实现demo 待补充&am…

SQL视图:简化复杂查询的利器

SQL视图:简化复杂查询的利器 在数据库管理系统中,视图(View)是一种虚拟表,其内容由SQL查询定义。视图可以简化复杂的查询,提高数据的安全性,并使得数据的展示更加直观。本文将详细介绍如何使用…

算法设计与分析:实验三 回溯法——地图填色问题

实验内容与要求: 问题描述: 我们可以将地图转换为平面图,每个地区变成一个节点,相邻地区用边连接,我们要为这个图形的顶点着色,并且两个顶点通过边连接时必须具有不同的颜色。附件是给出的地图数据&#…

仿华为车机UI--图标从Workspace拖动到Hotseat同时保留图标在原来位置

基于Android13 Launcher3,原生系统如果把图标从Workspace拖动到Hotseat里则Workspace就没有了,需求是执行拖拽动作后,图标同时保留在原位置。 实现效果如下: 实现思路: 1.如果在workspace中拖动,则保留原来“改变图标…

Scratch教学案例-《三顾茅庐》:让编程学习如同故事般引人入胜

三顾茅庐-小虎鲸Scratch资源站 在编程的世界里,我们常常寻找那种既能激发创意,又能提升技能的学习方式。今天,小虎鲸Scratch资源站为您带来了一款独特的教学作品——《三顾茅庐》。这是一部将经典故事与编程教学巧妙结合的Scratch项目&#x…

在docker中安装skywalking + es

ES的版本和官网 es版本: Past Releases of Elastic Stack Software | Elastic es版本logstash版本JDK版本对应关系 支持一览表 | Elastic skywalking的版本说明和官网 Advanced deployment | Apache SkyWalking skywalking和es的对应关系,在网页的…

读书笔记:《深入理解Java虚拟机》(4)

垃圾收集器与内存分配策略 一、对象已死? 堆中几乎放着所有的对象实例,对堆垃圾回收前的第一步就是要判断哪些对象已经死亡(即不能再被任何途径使用的对象)。 引用计数法 给对象中添加一个引用计数器: 每当有一个…

day03-面向对象-内部类泛型常用API

一、内部类 内部类是类中的五大成分之一(成员变量、方法、构造器、代码块、内部类) 如果一个类定义在另一个类的内部,这个类就是内部类。 场景:当一个类的内部,包含了一个完整的事物,且这个事物没有必要单…

bitmap(位图)的使用

零存零取,整存零取,整存整取, 零存整取 bitmap介绍 位图不是真正的数据类型,它是定义在字符串类型中,一个字符串类型的值最多能存储512M字节的内容, 位上限:2^(9(512)10(1024)10(1024)3(8b1B))2^32b 语句操作: s…

【Node】m1 mac 使用 nvm 安装 node v14 报错

author: jayzhen date: 20240826 报错内容 nvm 0.39.3macbook m1pro os14.6.1 v8_compiler/deps/v8/src/compiler/backend/instruction-selector.o.d.raw -c In file included from ../deps/v8/src/compiler/backend/frame-elider.cc:5: In file included from ../deps/v8/…

Python中使用pip换源的详细指南

在Python开发过程中,我们经常需要安装各种第三方库。pip是Python的包管理工具,用于安装和管理Python库。然而,由于网络原因,有时访问默认的Python包索引(PyPI)可能会比较慢。这时,我们可以通过更…