FS6513 FS0B can not be released

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

FS6513 FS0B can not be released

跳至解决方案
4,026 次查看
witness248
Contributor II

hi, experts

Now we are using S32K324&FS6513 for our ECU, but the FS0B of FS6513 is always low although we have invoke the release function. and I have checked below condition.

witness248_0-1741238896134.png

read the corresponding register:

寄存器                                           读取的值

DIAG_SF_ERR                                0xF00

SF_OUTPUT_REQUEST                  0xF81

BIST                                               0xF0F

any idea from your side?

 

0 项奖励
回复
1 解答
3,831 次查看
guoweisun
NXP TechSupport
NXP TechSupport

RELEASE FSXB的步骤再确认下,看起来像这一步没有做对,我们有这种参考程序:

fs65_status_t FS65_ReleaseFSx(fs65_fsxb_release_t fsOutput)
{
fs65_status_t status = fs65StatusOk; /* Status variable. */
uint8_t writeData; /* Data to be written. */
uint8_t wdSeed; /* Watchdog seed value. */

FS_ASSERT((fsOutput == fs65ReleaseFs0b) || (fsOutput == fs65ReleaseFs1b) || \
(fsOutput == fs65ReleaseFs0bFs1b));

#ifdef FS65_FEATURE_FS1B
status = FS65_CheckFS1B();
if (status != fs65StatusOk)
{
return status;
}
#endif

status = FS65_CheckVAUX();
if (status != fs65StatusOk)
{
return status;
}

/* Get actual LFSR state. */
status = FS65_WD_ReadChallengeToken(&wdSeed);
if (status != fs65StatusOk)
{
return status;
}

/* Prepare release word. */
switch (fsOutput)
{
case fs65ReleaseFs0b:
writeData = (uint8_t)fs65ReleaseFs0b;
writeData |= (wdSeed & (1U << 4U) ? 0x00U : 0x01U);
writeData |= (wdSeed & (1U << 3U) ? 0x00U : 0x02U);
writeData |= (wdSeed & (1U << 2U) ? 0x00U : 0x04U);
writeData |= (wdSeed & (1U << 1U) ? 0x00U : 0x08U);
writeData |= (wdSeed & (1U << 0U) ? 0x00U : 0x10U);
break;
#ifdef FS65_FEATURE_FS1B
case fs65ReleaseFs1b:
writeData = (uint8_t)fs65ReleaseFs1b;
writeData |= (wdSeed & (1U << 7U) ? 0x00U : 0x01U);
writeData |= (wdSeed & (1U << 6U) ? 0x00U : 0x02U);
writeData |= (wdSeed & (1U << 5U) ? 0x00U : 0x04U);
writeData |= (wdSeed & (1U << 4U) ? 0x00U : 0x08U);
writeData |= (wdSeed & (1U << 3U) ? 0x00U : 0x10U);
break;
case fs65ReleaseFs0bFs1b:
writeData = (uint8_t)fs65ReleaseFs0bFs1b;
writeData |= (wdSeed & (1U << 7U) ? 0x00U : 0x01U);
writeData |= (wdSeed & (1U << 6U) ? 0x00U : 0x02U);
writeData |= (wdSeed & (1U << 2U) ? 0x00U : 0x04U);
writeData |= (wdSeed & (1U << 1U) ? 0x00U : 0x08U);
writeData |= (wdSeed & (1U << 0U) ? 0x00U : 0x10U);
break;
#endif
default:
return fs65StatusError;
}

return FS65_WriteRegister(FS65_FS_RELEASE_FSXB_ADDR, writeData, NULL);
}

在原帖中查看解决方案

14 回复数
4,007 次查看
guoweisun
NXP TechSupport
NXP TechSupport

HI 

 

我没办法粘贴图片,从normal 状态转换到release FSXB 需要满足下面的的条件:

1:FLT_err_count=0
2:ABISTx ok
3:FS_OUT ok 

你这个背景是第一次release FSXB还是说遇到了fault以后FSXB拉低了然后你想把他置高?

0 项奖励
回复
3,999 次查看
witness248
Contributor II

hi,

我是第一次release FS0B。此外FS寄存器配置如下:

INIT_FS1B_TIMING_ADR, 0x65
BIST_ADR, 0x65
INIT_SUPERVISOR_ADR, 0x0C
INIT_FAULT_ADR, 0x0C
INIT_FSSM_ADR, 0x0C
INIT_SF_IMPACT_ADR, 0x0C
WD_WINDOW_ADR, 0xf3
SF_OUTPUT_REQUEST_ADR, 0x0C
INIT_VCORE_OVUV_IMPACT_ADR,0x0C
INIT_VCCA_OVUV_IMPACT_ADR, 0x0C
INIT_VAUX_OVUV_IMPACT_ADR, 0x0C
 
FS1B未使用,为悬空状态。
0 项奖励
回复
3,991 次查看
guoweisun
NXP TechSupport
NXP TechSupport

1:FLT_err_count=0
2:ABISTx ok
3:FS_OUT ok 

这些状态都对吗?上面的这些状态?

0 项奖励
回复
3,985 次查看
witness248
Contributor II

1:FLT_err_count=0

这个count,只在第一次喂狗前,为0,后续都是不为0。所以我的release FS0B只能被调用一次(放到了喂狗函数里)。
2:ABISTx ok

这个是OK的
3:FS_OUT ok 

怎么判断OK?是通过读取RELEASE_FSxB吗?

0 项奖励
回复
3,938 次查看
guoweisun
NXP TechSupport
NXP TechSupport

影响faulterrorcounter的因素看附件我列出来了,需要你一个个排查。

0 项奖励
回复
3,907 次查看
witness248
Contributor II

hi,吴工

感谢回复。我现在的进展是Fault error count为0了,然后写入RELEASE_FSxB_ADR,读出来的值确是0x8F81, 为SPI ERR,这个可能的原因有哪些?

0 项奖励
回复
3,832 次查看
guoweisun
NXP TechSupport
NXP TechSupport

RELEASE FSXB的步骤再确认下,看起来像这一步没有做对,我们有这种参考程序:

fs65_status_t FS65_ReleaseFSx(fs65_fsxb_release_t fsOutput)
{
fs65_status_t status = fs65StatusOk; /* Status variable. */
uint8_t writeData; /* Data to be written. */
uint8_t wdSeed; /* Watchdog seed value. */

FS_ASSERT((fsOutput == fs65ReleaseFs0b) || (fsOutput == fs65ReleaseFs1b) || \
(fsOutput == fs65ReleaseFs0bFs1b));

#ifdef FS65_FEATURE_FS1B
status = FS65_CheckFS1B();
if (status != fs65StatusOk)
{
return status;
}
#endif

status = FS65_CheckVAUX();
if (status != fs65StatusOk)
{
return status;
}

/* Get actual LFSR state. */
status = FS65_WD_ReadChallengeToken(&wdSeed);
if (status != fs65StatusOk)
{
return status;
}

/* Prepare release word. */
switch (fsOutput)
{
case fs65ReleaseFs0b:
writeData = (uint8_t)fs65ReleaseFs0b;
writeData |= (wdSeed & (1U << 4U) ? 0x00U : 0x01U);
writeData |= (wdSeed & (1U << 3U) ? 0x00U : 0x02U);
writeData |= (wdSeed & (1U << 2U) ? 0x00U : 0x04U);
writeData |= (wdSeed & (1U << 1U) ? 0x00U : 0x08U);
writeData |= (wdSeed & (1U << 0U) ? 0x00U : 0x10U);
break;
#ifdef FS65_FEATURE_FS1B
case fs65ReleaseFs1b:
writeData = (uint8_t)fs65ReleaseFs1b;
writeData |= (wdSeed & (1U << 7U) ? 0x00U : 0x01U);
writeData |= (wdSeed & (1U << 6U) ? 0x00U : 0x02U);
writeData |= (wdSeed & (1U << 5U) ? 0x00U : 0x04U);
writeData |= (wdSeed & (1U << 4U) ? 0x00U : 0x08U);
writeData |= (wdSeed & (1U << 3U) ? 0x00U : 0x10U);
break;
case fs65ReleaseFs0bFs1b:
writeData = (uint8_t)fs65ReleaseFs0bFs1b;
writeData |= (wdSeed & (1U << 7U) ? 0x00U : 0x01U);
writeData |= (wdSeed & (1U << 6U) ? 0x00U : 0x02U);
writeData |= (wdSeed & (1U << 2U) ? 0x00U : 0x04U);
writeData |= (wdSeed & (1U << 1U) ? 0x00U : 0x08U);
writeData |= (wdSeed & (1U << 0U) ? 0x00U : 0x10U);
break;
#endif
default:
return fs65StatusError;
}

return FS65_WriteRegister(FS65_FS_RELEASE_FSXB_ADDR, writeData, NULL);
}

3,946 次查看
guoweisun
NXP TechSupport
NXP TechSupport

1:你好像是有fault一直,所以faulterrorcounter不是0.

 

2:the "FS_OUT write OK" means, that the right command was sent to the RELEASE_FSxB register. If the right command was sent there by the MCU, the FS0B is released. Same for the FS1B if the FS6500 have this pin.

 

 

 

 

 

0 项奖励
回复
3,557 次查看
dbddbd
Contributor I

你好,我遇到了同样的问题,请问你是如何解决的,我检查了上述表格中造成错误计数器增加的可能性,但是通过读寄存器结果全是无错误,但是此时读错误寄存器的值,是1,不是0,长时间的争取喂狗,也没有消除。

0 项奖励
回复
3,491 次查看
witness248
Contributor II

你好,如下条件需要满足

•ABIST2_FS1B_OK=1 if part number with FS1B
•ABIST2_VAUX_OK=1 except if VAUX_FS_OV_1:0=VAUX_FS_UV_1:0=”00”
•Fault is removed
•Fault error counter must be at ’0’
•Close the S1 switch if FS1B backup delay was engaged (FS1B_DLY_DRV bit = 1)
•RELEASE_FSxB register must be filled with the right value

0 项奖励
回复
3,465 次查看
dbddbd
Contributor I

你好,非常感谢回复,电源芯片中我未使用FS1B和VAUX,VAUX通过INIT_VAUX_OVUV_IMPACT和REG_MODE这两个寄存器关闭其功能,并且通过读取BIST寄存器发现,LBIST_OK、ABIST2_FS1B_OK、ABIST2_VAUX_OK、ABIST1_OK,都显示OK,但此时错误计数器的值一直为1,并且读到VAUX一直欠压,手册也明确表示当VAUX未使用时,Vaux_UVflag is set and cannot be cleared。所以一直没找到办法去消除错误计数器。如果方便的话可以给我您的例程代码吗?非常感谢!

0 项奖励
回复
3,392 次查看
witness248
Contributor II

你好,你当前设置窗口狗的窗口长度是多少?喂狗周期多少?断开调试和连接调试器,现象都是一样的吗?附件是我之前找的例程,供参考。

0 项奖励
回复
3,377 次查看
dbddbd
Contributor I
  • 你好,感谢回复,这个代码我正在使用,但还是无法实现释放FS0B的效果,喂狗窗口长度是512ms,喂狗时间是在它的4分之3处,debug下也不行,调试下如果定时喂狗,发现错误计数器的值一直在加,最后到6,不定时喂狗,错误计数器的值为0,但是BIST中的ABIST2_VAUX_OK一直是错的,FS0B也一直是低电平。感觉跟想像的不一样。您那边最后是怎么消除那个错误计数器的值呢
0 项奖励
回复
3,369 次查看
witness248
Contributor II

1) 首先BIST中的ABIST2_VAUX_OK一直都是错的,这个需要排查下,我的BIST_ADR配置的是0x65.

2) 我是在喂狗函数里,读取DIAG_SF_ERR,当FLT_ERR_2:0为0时,再去释放FS0B。每连续7次喂狗,错误count会递减。

witness248_0-1743052169108.png

 

0 项奖励
回复
%3CLINGO-SUB%20id%3D%22lingo-sub-2056732%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EFS6513%20FS0B%E6%97%A0%E6%B3%95%E9%87%8A%E6%94%BE%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2056732%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E5%97%A8%EF%BC%8C%E4%B8%93%E5%AE%B6%E4%BB%AC%3C%2FP%3E%3CP%3E%E7%8E%B0%E5%9C%A8%E6%88%91%E4%BB%AC%E7%9A%84ECU%E4%BD%BF%E7%94%A8%E7%9A%84%E6%98%AFS32K324%26amp%3BFS6513%EF%BC%8C%E4%BD%86%E6%98%AF%E8%99%BD%E7%84%B6%E6%88%91%E4%BB%AC%E8%B0%83%E7%94%A8%E4%BA%86%E9%87%8A%E6%94%BE%E5%87%BD%E6%95%B0%EF%BC%8C%E4%BD%86%E6%98%AFFS6513%E7%9A%84FS0B%E5%A7%8B%E7%BB%88%E5%A4%84%E4%BA%8E%E4%BD%8E%E4%BD%8D%E3%80%82%E6%88%91%E5%B7%B2%E7%BB%8F%E6%A3%80%E6%9F%A5%E4%BA%86%E4%BB%A5%E4%B8%8B%E6%83%85%E5%86%B5%E3%80%82%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22witness248_0-1741238896134.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22witness248_0-1741238896134.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F326932iAB5717D063BDB0F7%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22witness248_0-1741238896134.png%22%20alt%3D%22witness248_0-1741238896134.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%E8%AF%BB%E5%8F%96%E7%9B%B8%E5%BA%94%E5%AF%84%E5%AD%98%E5%99%A8%EF%BC%9A%3C%2FP%3E%3CP%3E%E5%AF%84%E5%AD%98%E5%99%A8%3CSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%26nbsp%3B%3C%2FSPAN%3E%E8%AF%BB%E5%8F%96%E7%9A%84%E5%80%BC%3C%2FP%3E%3CP%3E%3CSTRONG%3EDIAG_SF_ERR%200xF00%3C%2FSTRONG%3E%3C%2FP%3E%3CP%3E%3CSTRONG%3ESF_OUTPUT_REQUEST%200xF81%3C%2FSTRONG%3E%3C%2FP%3E%3CP%3E%3CSTRONG%3E%E5%86%85%E5%BB%BA%E8%87%AA%E6%B5%8B%E8%AF%95%200xF0F%3C%2FSTRONG%3E%3C%2FP%3E%3CP%3E%E4%BD%A0%E6%9C%89%E4%BB%80%E4%B9%88%E6%83%B3%E6%B3%95%E5%90%97%EF%BC%9F%3C%2FP%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2069172%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%3ERe%3A%20FS6513%20FS0B%20can%20not%20be%20released%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2069172%22%20slang%3D%22zh-CN%22%20mode%3D%22CREATE%22%3E%3CUL%3E%3CLI%3E%E4%BD%A0%E5%A5%BD%EF%BC%8C%E6%84%9F%E8%B0%A2%E5%9B%9E%E5%A4%8D%EF%BC%8C%E8%BF%99%E4%B8%AA%E4%BB%A3%E7%A0%81%E6%88%91%E6%AD%A3%E5%9C%A8%E4%BD%BF%E7%94%A8%EF%BC%8C%E4%BD%86%E8%BF%98%E6%98%AF%E6%97%A0%E6%B3%95%E5%AE%9E%E7%8E%B0%E9%87%8A%E6%94%BEFS0B%E7%9A%84%E6%95%88%E6%9E%9C%EF%BC%8C%E5%96%82%E7%8B%97%E7%AA%97%E5%8F%A3%E9%95%BF%E5%BA%A6%E6%98%AF512ms%EF%BC%8C%E5%96%82%E7%8B%97%E6%97%B6%E9%97%B4%E6%98%AF%E5%9C%A8%E5%AE%83%E7%9A%844%E5%88%86%E4%B9%8B3%E5%A4%84%EF%BC%8Cdebug%E4%B8%8B%E4%B9%9F%E4%B8%8D%E8%A1%8C%EF%BC%8C%E8%B0%83%E8%AF%95%E4%B8%8B%E5%A6%82%E6%9E%9C%E5%AE%9A%E6%97%B6%E5%96%82%E7%8B%97%EF%BC%8C%E5%8F%91%E7%8E%B0%E9%94%99%E8%AF%AF%E8%AE%A1%E6%95%B0%E5%99%A8%E7%9A%84%E5%80%BC%E4%B8%80%E7%9B%B4%E5%9C%A8%E5%8A%A0%EF%BC%8C%E6%9C%80%E5%90%8E%E5%88%B06%EF%BC%8C%E4%B8%8D%E5%AE%9A%E6%97%B6%E5%96%82%E7%8B%97%EF%BC%8C%E9%94%99%E8%AF%AF%E8%AE%A1%E6%95%B0%E5%99%A8%E7%9A%84%E5%80%BC%E4%B8%BA0%EF%BC%8C%E4%BD%86%E6%98%AFBIST%E4%B8%AD%E7%9A%84ABIST2_VAUX_OK%E4%B8%80%E7%9B%B4%E6%98%AF%E9%94%99%E7%9A%84%EF%BC%8CFS0B%E4%B9%9F%E4%B8%80%E7%9B%B4%E6%98%AF%E4%BD%8E%E7%94%B5%E5%B9%B3%E3%80%82%E6%84%9F%E8%A7%89%E8%B7%9F%E6%83%B3%E5%83%8F%E7%9A%84%E4%B8%8D%E4%B8%80%E6%A0%B7%E3%80%82%E6%82%A8%E9%82%A3%E8%BE%B9%E6%9C%80%E5%90%8E%E6%98%AF%E6%80%8E%E4%B9%88%E6%B6%88%E9%99%A4%E9%82%A3%E4%B8%AA%E9%94%99%E8%AF%AF%E8%AE%A1%E6%95%B0%E5%99%A8%E7%9A%84%E5%80%BC%E5%91%A2%3C%2FLI%3E%3C%2FUL%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2066962%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%E5%9B%9E%E5%A4%8D%EF%BC%9AFS6513%20FS0B%20%E6%97%A0%E6%B3%95%E5%8F%91%E5%B8%83%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2066962%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%EF%BC%8C%E5%A6%82%E4%B8%8B%E6%9D%A1%E4%BB%B6%E9%9C%80%E8%A6%81%E6%BB%A1%E8%B6%B3%3C%2FP%3E%3CP%3E%E2%80%A2%E5%A6%82%E6%9E%9C%E9%9B%B6%E4%BB%B6%E7%BC%96%E5%8F%B7%E4%B8%BA%20FS1B%EF%BC%8C%E5%88%99%20ABIST2_FS1B_OK%3D1%3CBR%20%2F%3E%20%E2%80%A2ABIST2_VAUX_OK%3D1%EF%BC%8C%E9%99%A4%E9%9D%9E%20VAUX_FS_OV_1%3A0%3DVAUX_FS_UV_1%3A0%3D%E2%80%9D00%E2%80%9D%3CBR%20%2F%3E%20%E2%80%A2%E6%95%85%E9%9A%9C%E5%B7%B2%E6%8E%92%E9%99%A4%3CBR%20%2F%3E%E2%80%A2%E6%95%85%E9%9A%9C%E9%94%99%E8%AF%AF%E8%AE%A1%E6%95%B0%E5%99%A8%E5%BF%85%E9%A1%BB%E4%B8%BA%E2%80%9C0%E2%80%9D%3CBR%20%2F%3E%20%E2%80%A2%E5%A6%82%E6%9E%9C%20FS1B%20%E5%A4%87%E4%BB%BD%E5%BB%B6%E8%BF%9F%E5%B7%B2%E5%90%AF%E7%94%A8%EF%BC%88FS1B_DLY_DRV%20%E4%BD%8D%20%3D%201%EF%BC%89%EF%BC%8C%E5%88%99%E5%85%B3%E9%97%AD%20S1%20%E5%BC%80%E5%85%B3%3CBR%20%2F%3E%E2%80%A2RELEASE_FSxB%20%E5%AF%84%E5%AD%98%E5%99%A8%E5%BF%85%E9%A1%BB%E5%A1%AB%E5%85%85%E6%AD%A3%E7%A1%AE%E7%9A%84%E5%80%BC%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2058348%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%E5%9B%9E%E5%A4%8D%EF%BC%9AFS6513%20FS0B%20%E6%97%A0%E6%B3%95%E5%8F%91%E5%B8%83%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2058348%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%3CSPAN%3ERELEASE%20FSXB%E7%9A%84%E6%AD%A5%E9%AA%A4%E5%86%8D%E7%A1%AE%E8%AE%A4%E4%B8%8B%EF%BC%8C%E7%9C%8B%E8%B5%B7%E6%9D%A5%E5%83%8F%E8%BF%99%E4%B8%80%E6%AD%A5%E6%B2%A1%E6%9C%89%E5%81%9A%E5%AF%B9%EF%BC%8C%E6%88%91%E4%BB%AC%E6%9C%89%E8%BF%99%E7%A7%8D%E5%8F%82%E8%80%83%E7%A8%8B%E5%BA%8F%EF%BC%9A%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3Efs65_status_t%20FS65_ReleaseFSx%EF%BC%88fs65_fsxb_release_t%20fsOutput%EF%BC%89%3CBR%20%2F%3E%20%7B%3CBR%20%2F%3E%20fs65_status_t%20status%20%3D%20fs65StatusOk%3B%20%2F*%20%E7%8A%B6%E6%80%81%E5%8F%98%E9%87%8F%E3%80%82*%2F%3CBR%20%2F%3E%20uint8_t%20writeData%3B%20%2F*%20%E8%A6%81%E5%86%99%E5%85%A5%E7%9A%84%E6%95%B0%E6%8D%AE%E3%80%82*%2F%3CBR%20%2F%3E%20uint8_t%20wdSeed%3B%20%2F*%20%E7%9C%8B%E9%97%A8%E7%8B%97%E7%A7%8D%E5%AD%90%E5%80%BC%E3%80%82*%2F%3C%2FP%3E%0A%3CP%3EFS_ASSERT((fsOutput%20%3D%3D%20fs65ReleaseFs0b)%20%7C%7C%20(fsOutput%20%3D%3D%20fs65ReleaseFs1b)%20%7C%7C%20%5C%3CBR%20%2F%3E%20%EF%BC%88fsOutput%20%3D%3D%20fs65ReleaseFs0bFs1b%EF%BC%89%EF%BC%89%EF%BC%9B%3C%2FP%3E%0A%3CP%3E%23ifdef%20FS65_FEATURE_FS1B%3CBR%20%2F%3Estatus%20%3D%20FS65_CheckFS1B()%3B%3CBR%20%2F%3Eif%20(status%20!%3D%20fs65StatusOk)%3CBR%20%2F%3E%7B%3CBR%20%2F%3Ereturn%20status%3B%3CBR%20%2F%3E%7D%3CBR%20%2F%3E%23endif%3C%2FP%3E%0A%3CP%3Estatus%20%3D%20FS65_CheckVAUX()%3B%3CBR%20%2F%3Eif%20(status%20!%3D%20fs65StatusOk)%3CBR%20%2F%3E%7B%3CBR%20%2F%3Ereturn%20status%3B%3CBR%20%2F%3E%7D%3C%2FP%3E%0A%3CP%3E%2F*%20%E8%8E%B7%E5%8F%96%E5%AE%9E%E9%99%85%E7%9A%84%20LFSR%20%E7%8A%B6%E6%80%81%E3%80%82*%2F%3CBR%20%2F%3E%E7%8A%B6%E6%80%81%20%3D%20FS65_WD_ReadChallengeToken(%26amp%3BwdSeed)%3B%3CBR%20%2F%3E%E5%A6%82%E6%9E%9C%EF%BC%88%E7%8A%B6%E6%80%81%EF%BC%81%3D%20fs65StatusOk%EF%BC%89%3CBR%20%2F%3E%20%7B%3CBR%20%2F%3E%E8%BF%94%E5%9B%9E%E7%8A%B6%E6%80%81%EF%BC%9B%3CBR%20%2F%3E%20%7D%3C%2FP%3E%0A%3CP%3E%2F*%20%E5%87%86%E5%A4%87%E5%8F%91%E5%B8%83%E8%AF%8D%E3%80%82*%2F%3CBR%20%2F%3E%E5%BC%80%E5%85%B3%EF%BC%88fsOutput%EF%BC%89%3CBR%20%2F%3E%20%7B%3CBR%20%2F%3E%E6%A1%88%E4%BE%8B%20fs65ReleaseFs0b%EF%BC%9A%3CBR%20%2F%3E%E5%86%99%E5%85%A5%E6%95%B0%E6%8D%AE%3D%EF%BC%88uint8_t%EF%BC%89fs65ReleaseFs0b%EF%BC%9B%3CBR%20%2F%3E%E5%86%99%E5%85%A5%E6%95%B0%E6%8D%AE%20%7C%3D%20(wdSeed%20%26amp%3B%20(1U%20%26lt%3B%26lt%3B%204U)%20%3F0x00U%20%3A%200x01U)%3B%3CBR%20%2F%3E%E5%86%99%E5%85%A5%E6%95%B0%E6%8D%AE%20%7C%3D%20(wdSeed%20%26amp%3B%20(1U%20%26lt%3B%26lt%3B%203U)%20%3F0x00U%20%3A%200x02U)%3B%3CBR%20%2F%3E%E5%86%99%E5%85%A5%E6%95%B0%E6%8D%AE%20%7C%3D%20(wdSeed%20%26amp%3B%20(1U%20%26lt%3B%26lt%3B%202U)%20%3F0x00U%20%3A%200x04U)%3B%3CBR%20%2F%3E%E5%86%99%E5%85%A5%E6%95%B0%E6%8D%AE%20%7C%3D%20(wdSeed%20%26amp%3B%20(1U%20%26lt%3B%26lt%3B%201U)%20%3F0x00U%20%3A%200x08U)%3B%3CBR%20%2F%3E%E5%86%99%E5%85%A5%E6%95%B0%E6%8D%AE%20%7C%3D%20(wdSeed%20%26amp%3B%20(1U%20%26lt%3B%26lt%3B%200U)%20%3F0x00U%20%3A%200x10U)%3B%3CBR%20%2F%3E%E4%BC%91%E6%81%AF%3B%3CBR%20%2F%3E%20%23ifdef%20FS65_FEATURE_FS1B%3CBR%20%2F%3E%E6%A1%88%E4%BE%8B%20fs65ReleaseFs1b%EF%BC%9A%3CBR%20%2F%3E%E5%86%99%E5%85%A5%E6%95%B0%E6%8D%AE%3D%EF%BC%88uint8_t%EF%BC%89fs65ReleaseFs1b%EF%BC%9B%3CBR%20%2F%3E%E5%86%99%E5%85%A5%E6%95%B0%E6%8D%AE%20%7C%3D%20(wdSeed%20%26amp%3B%20(1U%20%26lt%3B%26lt%3B%207U)%20%3F0x00U%20%3A%200x01U)%3B%3CBR%20%2F%3E%E5%86%99%E5%85%A5%E6%95%B0%E6%8D%AE%20%7C%3D%20(wdSeed%20%26amp%3B%20(1U%20%26lt%3B%26lt%3B%206U)%20%3F0x00U%20%3A%200x02U)%3B%3CBR%20%2F%3E%E5%86%99%E5%85%A5%E6%95%B0%E6%8D%AE%20%7C%3D%20(wdSeed%20%26amp%3B%20(1U%20%26lt%3B%26lt%3B%205U)%20%3F0x00U%20%3A%200x04U)%3B%3CBR%20%2F%3E%E5%86%99%E5%85%A5%E6%95%B0%E6%8D%AE%20%7C%3D%20(wdSeed%20%26amp%3B%20(1U%20%26lt%3B%26lt%3B%204U)%20%3F0x00U%20%3A%200x08U)%3B%3CBR%20%2F%3E%E5%86%99%E5%85%A5%E6%95%B0%E6%8D%AE%20%7C%3D%20(wdSeed%20%26amp%3B%20(1U%20%26lt%3B%26lt%3B%203U)%20%3F0x00U%20%3A%200x10U)%3B%3CBR%20%2F%3E%E4%BC%91%E6%81%AF%3B%3CBR%20%2F%3E%E6%A1%88%E4%BE%8B%20fs65ReleaseFs0bFs1b%EF%BC%9A%3CBR%20%2F%3E%E5%86%99%E5%85%A5%E6%95%B0%E6%8D%AE%3D%EF%BC%88uint8_t%EF%BC%89fs65ReleaseFs0bFs1b%EF%BC%9B%3CBR%20%2F%3E%E5%86%99%E5%85%A5%E6%95%B0%E6%8D%AE%20%7C%3D%20(wdSeed%20%26amp%3B%20(1U%20%26lt%3B%26lt%3B%207U)%20%3F0x00U%20%3A%200x01U)%3B%3CBR%20%2F%3E%E5%86%99%E5%85%A5%E6%95%B0%E6%8D%AE%20%7C%3D%20(wdSeed%20%26amp%3B%20(1U%20%26lt%3B%26lt%3B%206U)%20%3F0x00U%20%3A%200x02U)%3B%3CBR%20%2F%3E%E5%86%99%E5%85%A5%E6%95%B0%E6%8D%AE%20%7C%3D%20(wdSeed%20%26amp%3B%20(1U%20%26lt%3B%26lt%3B%202U)%20%3F0x00U%20%3A%200x04U)%3B%3CBR%20%2F%3E%E5%86%99%E5%85%A5%E6%95%B0%E6%8D%AE%20%7C%3D%20(wdSeed%20%26amp%3B%20(1U%20%26lt%3B%26lt%3B%201U)%20%3F0x00U%20%3A%200x08U)%3B%3CBR%20%2F%3E%E5%86%99%E5%85%A5%E6%95%B0%E6%8D%AE%20%7C%3D%20(wdSeed%20%26amp%3B%20(1U%20%26lt%3B%26lt%3B%200U)%20%3F0x00U%20%3A%200x10U)%3B%3CBR%20%2F%3E%E4%BC%91%E6%81%AF%3B%3CBR%20%2F%3E%20%23%E7%BB%93%E6%9D%9F%3CBR%20%2F%3E%E9%BB%98%E8%AE%A4%EF%BC%9A%3CBR%20%2F%3E%E8%BF%94%E5%9B%9E%20fs65StatusError%EF%BC%9B%3CBR%20%2F%3E%20%7D%3C%2FP%3E%0A%3CP%3E%E8%BF%94%E5%9B%9E%20FS65_WriteRegister(FS65_FS_RELEASE_FSXB_ADDR%EF%BC%8C%20writeData%EF%BC%8C%20NULL)%3B%3CBR%20%2F%3E%20%7D%3C%2FP%3E%3C%2FLINGO-BODY%3E