S32K3: STCU2

前言

STCU2(Self-Test Control Unit ),从名字就可以看出来,它是一个自检的控制模块,即 BIST(Build-In Self-Test)控制器。BIST 简单的来说就是一种芯片自我测试方式,用来验证芯片自身部分功能正不正常

芯片上的 BIST 由若干个 BIST 分区组成,每个 BIST 分区负责一部分模块的自检,所有分区加在一起就是整个芯片自检过程

请添加图片描述

BIST 又根据分区内是逻辑模块还是存储模块分为 LBIST(Logic BIST)和 MBIST(Memory BIST)这两种。而在 K3 中,这两种 BIST 都是有的

BIST 又有两种模式,分别是 off-line 和 on-line,其中 off-line 就是不需要软件的干预,硬件自己完成 BIST 测试,而 on-line 则需要软件来控制

S32K3 只支持 on-line 模式,其中 S32K312 和 S32K311 不支持 LBIST.

请添加图片描述

LBIST 只有 1 个,包含 DMA,CRC 等模块的自检

MBIST 最高达 18 个

​​请添加图片描述

STCU2 通过控制 LBIST_CTRL 和 MCT 来分别完成对 LBIST 和 MBIST 的控制(如上图)

为什么上图分成两个逻辑分区:

猜测是因为每个逻辑分区所需的自检逻辑不一样,所以每个逻辑分区都对应一个 LBIST_CTRL 逻辑自检控制器

而存储的自检逻辑是相同的,因此一个 MCT 便可以控制多个 MBIST

功能简介

STCU2 可以串行(顺序)或并行(同时) 控制 LBIST 和 MBIST 的执行

内置 1 个可编程看门狗定时器,可以监测 LBIST 或 MBIST 是否在规定时间内完成自检,如果超时,产生中断(但是现有 SDK 包中未实现)

简而言之:

  1. 管理 BISTs 的执行
  2. 指示每个 BIST 是否通过
  3. 管理芯片的 LBIST 和 MBIST 块

下图为 STCU 的功能框图:

请添加图片描述

STCU 有三个 FSM:

  1. Master FSM 为 STCU 的核心单元,主要负责 BIST 测试控制
  2. Loader Shifter FSM 主要负责控制参数和测试结果反馈到寄存器之间的交互
  3. WDG FSM 为 STCU 的超时监测单元,如果 BIST 运行超时,这个模块会打断 BIST 的执行,并默认将其视为可恢复复位错误发送至 FCCU

LBIST 和 MBIST interface:在整个 BIST 自测试中,STCU 只是控制单元,所以这两个 interface 是控制单元与执行单元之间的接口

Interrupt 信号:STCU 检测到 BIST 超时时可以产生一个中断,STCU_LBIST_MBIST_IRQn =191(但是这个中断在 RTD 中并没有被实现)

FCCU 信号:STCU 可以将 recoverable 错误输送给 FCCU,而这个是否为 recoverable 是可配置的。

MBIST 将 K3 分成了 12 个区域,而 LBIST 则共 1 个区域,总共有 12+1 个区域(详情请详见 RM 手册 STCU 章节的 51.1.3 STCU2 LBIST/MBIST mapping)

用户是可以将这些区域的配置成是否为 recoverable 和 unrecoverable 的 BIST,如果是 recoverable 的区域在自测试的时候发生了错误,那么这个错误就会报告到 FCCU 模块,如果 unrecoverable 的错误发生了,则直接发送信号给 MC_RGM 触发破坏性复位。

STCU 也可以控制 EOUT 信号,发生错误时可以使用 EOUT 将错误信号传送给外部 SBC。

配置选择

safetyboot 相比 dia 少了一个 HSE Memory(存疑)的检查

在线 BIST 的预期用途是对应用程序启动至关重要的内存和模块执行测试。这有助于最大限度地减少 MCU 的启动时间。在启动时执行完整的 BIST 将超出许多用户的需求。在线测试主要用于 MCU 的完整 BIST,通常在 ECU 关闭之前执行,此时执行时间不那么关键。在线模式还可用于制造环境中的故障诊断和质量控制。

自检前

取决于 ASIL 目标和性能要求,可以配置自检的测试参数,实现不同级别的覆盖率

禁用所有通信外设,因为通信外设不在 LBIST 自检序列中且自检过程中无法执行应用代码

配置 RGM 功能性复位源为中断(其实就是禁用功能复位源,因为禁用后自动降级为中断了)。

请添加图片描述

手动禁用功能复位源

手动关闭通讯外设时钟

自检后

自检是由软件启动的,自检完成后 STCU2 将执行功能性复位,但是 STCU2 不会在功能性复位中复位,因此自检结果可以在功能性复位后读取

可以在 main 函数中针对 STCU2 的寄存器进行检查,判断上次复位是功能性复位还是非功能性复位(会重置 STCU2 模块),从而判断是否需要自检,以及上次的自检结果

如果发生了破坏性复位,虽然 STCU2 被复位了,但是其传出的破坏性复位记录被保存在了 MC_RGM 复位模块中

故障处理

recoverable and non-critical faults 会被发送到 FCCU

unrecoverable and critical faults 会被发送到 MC_RGM

其中在 S32DS 下的 BIST 模块下,可以每个 BIST 错误单独配置为 unrecoverable.(默认是 recoverable)

请添加图片描述

EOUT 引脚

请添加图片描述


该芯片仅支持 FCCU EOUT 的双稳态协议和故障切换模式

Bi-Stable

指示 FCCU 的状况

请添加图片描述

Fault-Toggele

指示故障的发生

​​请添加图片描述

上电后,EOUT 信号具有高阻抗。只有在软件配置它们之后,它们才会指示操作状态。
如果发生故障事件或软件请求误引脚指示,则脚将设置为故状态最短时间 (参见 DELTA TTDELTA ),即使软件之前尝试释放它
(仅适用于在双稳态模式下配置的错误引脚的情况)。

请添加图片描述
请添加图片描述

TBD…

时钟

请添加图片描述
请添加图片描述

必须启用 PLL,所以关于自检过程中启用 PLL LOCK 检测的寄存器必须开启

复位相关

请添加图片描述
请添加图片描述

寄存器配置

自检启动位

请添加图片描述
请添加图片描述

SPD 库 BIST_RUN 逻辑

  1. 写运行超时看门狗寄存器
  2. 写算法寄存器
  3. 写 BSTART 寄存器来选择要运行哪些 BIST
  4. 写 CFG 寄存器配置 系统时钟分频,执行配置首指针,执行期间延迟等等
  5. 写各个 LBIST,MBIST 的配置
  6. 写 RUNSW 的 RUNSW 启动 STCU2 执行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值