汽车功能安全--TC3xx MBIST设计要点

英飞凌针对硬件故障的自测,提供了四种机制:PBIST、LBIST、MONBIST和MBIST。

LBIST和MONBIST我们已经聊过了,今天就快速介绍下MBIST。

MBIST,全程Memory Built-in Self Test,用于检测SRAM数据单元的完整性。

在26262中,SRAM cell出现错误被认为是潜伏故障,而潜伏故障要求至少一个上电周期要完成一次检测,因此MBIST的使用时机就完全取决于使用者,可以是上电检测、也可以是下电检测、甚至可以在程序运行时检测。

虽然时机随心所欲,但是做MBIST的时候还需要考虑两个前置条件:(1)测试前SRAM需要完成初始化,有正确的ECC;(2)SRAM在测试时不允许被访问。

因此,这就引出了今天的话题,如何测试内核相关的memory。

1. 单核和多核

根据芯片手册,TC3xx CPU有如下几类SRAM可供使用:

  • P\DSPR:Program\Data Scratch Pad SRAM,类比ARM内核的TCM;
  • P\DCACHE:Progaram\Data Cache
  • P\DTAG:Cache相关的Tag SRAM

为了提升效率,我们用到的最多肯定就是PSPR、DSPR等,常规用法:PSPR存放性能要求或者是特定场景的函数,DSPR用于堆栈、CSA或者其他自定义等数据存放;但做mbist的时候被测memory又不能被访问,这就要求相关memory的CPU需要停下来。

因此,我们需要分多核和单核情况。

多核相对好解决一点,cpu0最先启动,在它释放其他core时让cpu0去测试其他core的memory,如下:

 其他core去测cpu0时,让cpu0进入ilde即可。代码如下:

单核的情况说起来也简单,就是让CPU在执行测试期间不访问DSPR和PSPR,在英飞凌的MTU设计中,当我们使能了SRAM的SSH后该SRAM就不能访问了,

(代码示例MTU_MEMTEST0.B.CPU0_DMEM_EN = 1;)

这就需要我们在设计链接文件的时候要了解DSPR和PSPR具体包含了啥内容,并且在执行上述代码后就不调用PSPR的函数,也不要使用stack、csa,只用cpu相关寄存器,参考代码如下:

此外,为防止cache访问,P\D Cache在被测试的时候都需要关闭,参考CPU寄存器PMAxx。

2.MTU中PMEM的特殊处理

在手册里,有一点我没有特别想明白,但也是比较关键的地方,就是关于PMEM的特殊处理,原文如下:

要完整测试PMEM,就需要执行两次NDT测试,由寄存器TCCS.TC_TWR_SEL进行管理,如下:

 那代码中处理也比较方便,伪代码如下:

if(E_OK == CheckPmem(SramInstanceID))
{MTU_MCx.ECCS.TC_TWR_SEL = 0;triggerTest(SramInstanceID);MTU_MCx.ECCS.TC_TWR_SEL = 1;triggerTest(SramInstanceID);
}

 但有一点一直没想明白,PMEM包含了PCache和PSPR,DMEM同样也包含了DCache和DSPR,为啥PEME要特殊对待,DSPR就不用呢?

从MTUTEST寄存器看没有什么差别呀:

神奇,属实神奇。 

差不多就到这,拜拜。

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

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

相关文章

openpi 入门教程

系列文章目录 目录 系列文章目录 前言 一、运行要求 二、安装 三、模型检查点 3.1 基础模型 3.2 微调模型 四、运行预训练模型的推理 五、在自己的数据上微调基础模型 5.1. 将数据转换为 LeRobot 数据集 5.3. 启动策略服务器并运行推理 5.4 更多示例 六、故障排除…

java加强 -Collection集合

集合是一种容器,类似于数组,但集合的大小可变,开发中也非常常用。Collection代表单列集合,每个元素(数据)只包含1个值。Collection集合分为两类,List集合与set集合。 特点 List系列集合&#…

深入理解ThingsBoard的Actor模型

1、ThingsBoard系统中定义了哪些Actor ✅ ThingsBoard Actor 创建机制与作用对照表: Actor 类型 何时创建 由谁创建 是否缓存 作用描述 SystemActor 系统启动时 DefaultActorService / ActorSystem ✅ 是 ★ ThingsBoard 平台服务级别管理器:负责创建所有的Actor AppActor

WPS一旦打开,就会修改默认打开方式,怎么解?

目录 前言 解决方法 结语 前言 电脑上同时存在WPS和微软的Office全家桶,但是我更喜欢用Office全家桶。前几天刚在设置改过来,忘记更改pdf文件打开默认应用。结果没过几天,不小心用WPS打开pdf文件时候,给我把默认设置全改回去了…

深度学习中--模型调试与可视化

第一部分:损失函数与准确率的监控(Loss / Accuracy Curve) 1. 为什么要监控 Loss 与 Accuracy? Loss 是模型优化的依据,但它可能下降了 Accuracy 反而没变(过拟合信号) Accuracy 才是评估效果的…

中间件-RocketMQ

RocketMQ 基本架构消息模型消费者消费消息模式顺序消息机制延迟消息批量消息事务消息消息重试最佳实践 基本架构 nameServer: 维护broker列表信息,客户端连接时只需要连接nameServer。可配置成集群。 broker:broker分为master和slave,master负…

anaconda3如何切换虚拟环境

在 Anaconda3 中切换虚拟环境可以通过 命令行 或 Anaconda Navigator 图形界面实现。以下是详细步骤: 方法1:通过命令行切换(推荐) 1. 查看所有虚拟环境 conda env list # 或 conda info --envs 输出示例: base …

【vue】axios网络请求介绍

一、基础使用 1.引入js文件 2.在methods中的函数里写 axios.get(路径) .then((res))>{ console.log(res.data);//控制台打印结果数据 this.listArrres.data//定义数组来接收返回来的数据 }) 二、参数传递 参数传递一般在路径后面使用 params:{ num:2,…

机器学习 --- KNN算法

机器学习 — KNN算法 文章目录 机器学习 --- KNN算法一,sklearn机器学习概述二,KNN算法---分类2.1样本距离判断2.2 KNN算法原理2.3 KNN缺点2.4 API2.5 使用sklearn中鸢尾花数据集实现KNN 一,sklearn机器学习概述 获取数据、数据处理、特征工…

Spring Boot 中的重试机制

Retryable 注解简介 Retryable 注解是 Spring Retry 模块提供的,用于自动重试可能会失败的方法。在微服务架构和分布式系统中,服务之间的调用可能会因为网络问题、服务繁忙等原因失败。使用 Retryable 可以提高应用的稳定性和容错能力 1。 使用步骤 &…

FPGA生成随机数的方法

FPGA生成随机数的方法,目前有以下几种: 1、震荡采样法 实现方式一:通过低频时钟作为D触发器的时钟输入端,高频时钟作为D触发器的数据输入端,使用高频采样低频,利用亚稳态输出随机数。 实现方式二:使用三个…

(五)毛子整洁架构(分布式日志/Redis缓存/OutBox Pattern)

文章目录 项目地址一、结构化日志1.1 使用Serilog1. 安装所需要的包2. 注册服务和配置3. 安装Seq服务 1.2 添加分布式id中间件1. 添加中间件2. 注册服务3. 修改Application的LoggingBehavior 二、Redis缓存2.1 添加缓存1. 创建接口ICaching接口2. 实现ICaching接口3. 注册Cachi…

Vue.js 全局导航守卫:深度解析与应用

在 Vue.js 开发中,导航守卫是一项极为重要的功能,它为开发者提供了对路由导航过程进行控制的能力。其中,全局导航守卫更是在整个应用的路由切换过程中发挥着关键作用。本文将深入探讨全局导航守卫的分类、作用以及参数等方面内容。 一、全局…

使用FastAPI和React以及MongoDB构建全栈Web应用05 FastAPI快速入门

一、FastAPI概述 1.1 什么是FastAPI FastAPI is a modern, high-performance Python web framework designed for building APIs. It’s rapidly gaining popularity due to its ease of use, speed, and powerful features. Built on top of Starlette, FastAPI leverages a…

如何查看打开的 git bash 窗口是否是管理员权限打开

在 git bash 中输入: net session >nul 2>&1 && (echo Ok) || (echo Failed) 显示 OK 》是管理员权限; 显示 Failed 》不是管理员权限。 如何删除此步生成的垃圾文件: 新建一个 .txt 文件,输入以下代码…

得物0509面试手撕题目解答

题目 使用两个栈(一个无序栈和一个空栈)将无序栈中的元素转移到空栈,使其有序,不允许使用其他数据结构。 示例:输入:[3, 1, 6, 4, 2, 5],输出:[6, 5, 4, 3, 2, 1] 思路与代码 如…

基于 Nexus 在 Dockerfile 配置 yum, conda, pip 仓库的方法和参考

在 Nexus 配置代理仓库的方法,可参考 pypi 的配置博客:https://hellogitlab.com/CI/docker/create_your_nexus_2 更多代理格式,参考官方文档,如 pypi:https://help.sonatype.com/en/pypi-repositories.html 配置 yum…

[6-8] 编码器接口测速 江协科技学习笔记(7个知识点)

1 2 在STM32微控制器的定时器模块中,CNT通常指的是定时器的计数器值。以下是CNT是什么以及它的用途: 是什么: • CNT:代表定时器的当前计数值。在STM32中,定时器从0开始计数,直到达到预设的自动重装载值&am…

RabbitMQ ③-Spring使用RabbitMQ

Spring使用RabbitMQ 创建 Spring 项目后&#xff0c;引入依赖&#xff1a; <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-amqp --> <dependency><groupId>org.springframework.boot</groupId><artifac…

海外IP被误封解决方案

这里使用Google Cloud和Cloudflare来实现&#xff0c;解决海外服务器被误封IP&#xff0c;访问不到的问题。 这段脚本的核心目的&#xff0c;是自动监测你在 Cloudflare 上管理的 VPS 域名是否可达&#xff0c;一旦发现域名无法 Ping 通&#xff0c;就会帮你更换IP&#xff1a…