2416299_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2416299_zh-CN

2416299_zh-CN

更正 i.MX8DXL EVK (J20) 上 TAMPER_OUT0/TAMPER_IN4 活动防篡改循环的 snvs_cfg 值

您好,

我正在通过 U-Boot 验证 i.MX8DXL EVK (MCIMX8DXL-WEVK) 上的外部主动篡改循环。

根据电路板原理图,我已经确认 J20(防篡改接头,1x3)的接线方式如下:
- 引脚 1 = TAMPER_IN4(网络 SNVS.TAMPER_IN4,焊球 AJ13)
- 引脚 2 = 接地
- 引脚 3 = TAMPER_OUT0(网络 SNVS.TAMPER_OUT0,引脚 AP22)

这些是专用的 SNVS 引脚,不像 TAMPER_OUT1-4/IN0-3 那样与 SAI2/SAI3 共享。

可用的 U-Boot 命令:tamper_pin_cfg、snvs_cfg(及其子寄存器 hp.lock、hp.secvio_intcfg、hp.secvio_ctl、lp.lock、lp.secvio_ctl、lp.tamper_filt_cfg、lp.tamper_det_cfg、lp.tamper_det_cfg2、lp.tamper_filt1_cfg、lp.tamper_filt2_cfg、lp.act_tamper1_cfg 至 lp.act_tamper5_cfg、lp.act_tamper_ctl、lp.act_tamper_clk_ctl、lp.act_tamper_routing_ctl1、lp.act_tamper_routing_ctl2)、snvs_sec_status、snvs_clear_status。

由于 TAMPER_OUT0/TAMPER_IN4 构成一个有效的防篡改对,我的问题是:

1. lp.act_tamperN_cfg 通道(1-5)中,哪个对应于 TAMPER_OUT0?
2. 要检查 lp.act_tamper_routing_ctl1/routing_ctl2 路由 TAMPER_OUT0 的模式与 TAMPER_IN4 的匹配度,需要检查哪些值?
3. 要使该通道启用模式时钟,lp.act_tamper_clk_ctl 的值是多少?
4. lp.act_tamper_ctl 的全局值是多少才能启用此通道的主动篡改检测?

目标:将跳线连接到 J20 引脚 1-3 时,snvs_sec_status 应显示为安全状态;断开跳线时,应触发违规。

我尝试了硬件上的几个值(路由 4、5、10;各种时钟/检测器设置)——所有这些值要么被 SECO 固件拒绝(错误 res:9 / SC_ERR_PARM),要么被接受,但在物理切换循环时,snvs_sec_status 的 SNVS a4(1) (LPTDSR) 寄存器没有可观察到的变化。

i.MX8DXL 是否有针对外部主动防篡改验证的参考测试程序或应用说明?

谢谢您!

Re: Correct snvs_cfg values for TAMPER_OUT0/TAMPER_IN4 active tamper loop on i.MX8DXL EVK (J20)

你好,

1. lp.act_tamper1_cfg 驱动 TAMPER_OUT0。

2. i.MX8DXL SNVS 具有 5 个主动防拆 (AT) 输出源和多达 8 个外部防拆 (ET) 输入检测器。

请使用以下配置:

lp.act_tamper_routing_ctl1 = 0x00010000 # ET5 (TAMPER_IN4) 到 AT1 (TAMPER_OUT0)
lp.act_tamper_routing_ctl2 = 0x00000000 # ET6-ET8 未使用

3. 该值会改变时钟分频器,使用 0x00 可配置最大频率。

lp.act_tamper_clk_ctl = 0x00000000

4. 使用 lp.act_tamper_ctl = 0x00010001:

位 0:AT1EN 使能 AT1 LFSR 模式生成器

位 16:AT1_OUT_EN 驱动 TAMPER_OUT0 焊盘,使用 AT1 模式

目前没有针对该处理器的应用笔记,但您可以参考 i.MX7 的相关信息:

/* Config ET5 (pin in et4) <-> (pin out et5) AT 1 *
/* reset */
write32(0, &svregs->lp.act_tamper_clk_ctl);
write32(0, &svregs->lp.act_tamper_ctl);
write32(0, &svregs->lp.tamper_det_cfg);
write32(0, &svregs->lp.tamper_det_cfg2)
/* Deault value for LFSR */
write32(0x84000000 | 0x00001111, &svregs->lp.act_tamper1_cfg)
/* Set the clock at max freq */
write32(0x00000000, &svregs->lp.act_tamper_clk_ctl);
/* ET5 (pin et4) takes ref from AT1 (pin et5) */
write32(0x00010000, &svregs->lp.act_tamper_routing_ctl1);
write32(0x0, &svregs->lp.act_tamper_routing_ctl2)
/* activate out pad of AT1 and enable it, AT1 output on pin et5 */
write32(0x00010000 | 0x00000001, &svregs->lp.act_tamper_ctl)
/* Configuring IRQs and secviols */
write32(0x8000003f, &svregs->hp.secvio_intcfg);
write32(0x4000003f, &svregs->hp.secvio_ctl);
write32(0x0000003f, &svregs->lp.secvio_ctl)
/* Activating detector for ET5 */
write32(0x00000000, &svregs->lp.tamper_det_cfg);
write32(0x00000004, &svregs->lp.tamper_det_cfg2);

顺祝商祺!

Re: Correct snvs_cfg values for TAMPER_OUT0/TAMPER_IN4 active tamper loop on i.MX8DXL EVK (J20)

感谢您提供的配置信息。我是在全新断电后立即应用的:

snvs_dgo_cfg 0 0 20000000 0 80000000 0
snvs_cfg 0 8000003f 4000003f 0 3f 0 0 4 0 0 84001111 0 0 0 0 10001 0 10000 0

回读与您的值匹配:SNVS e8(2) = 00010000 00000000,SNVS 48(2) = 00000000 00000004,SNVS e0 = 00010001,DGO 20 = 20000000,DGO 40 = 80000000。

结果:LPTDSR(SNVS a4)= 00000004(ET5D 设置)。无论没有跳线还是在 J20 引脚 1 (TAMPER_IN4) 和引脚 3 (TAMPER_OUT0) 之间连接绝缘跳线,读数均为 00000004。在 snvs_clear_status 107ff ff 之后,它仍然保持 00000004。因此,当循环打开时,检测结果会断言,但当循环关闭时,我始终无法获得干净的 00000000 状态。

问题:
1.对于有线跳线回路,此 EVK 上的 TAMPER_OUT0 / TAMPER_IN4 回路是否需要焊盘或上拉设置(例如 DGO tamper_pull_ctl),或者不同的 act_tamper_clk_ctl 值?
2. 当篡改条件仍然存在时,snvs_clear_status 是否应该清除 LPTDSR?
3. 是否还需要其他设置才能使循环被视为闭合?

再次感谢。

Tags (1)
No ratings
Version history
Last update:
Tuesday
Updated by: