Semidrive E3 MCAL3.0&FusaLib PTG1.1 功能安全开发(二)

本文介绍三个章节:

  • 可恢复错误注入验证
  • 状态机自动注错演示
  • 开发过程中常见问题

一、    可恢复错误注入验证

可恢复错误发生时需要进行 recorder,与不可恢复错误配置的不同之处:把 reactor.c 和 Fusa_Config.c 重新配置。


图 (1)

接口函数:Fusa_ReactorMainFunction。


图 (2)



图 (3)



图 (4)


图 (5)


Pad0/Pad1 与 SEM 状态Mapping:

PAD1

PAD0

Chip Situation

0(没有相应 err status 置起来)

0

Norminal

0

1(有相应 err status 置起来)

Recoverable Error

1

X(Do not care)

Fatal


表 (1)


图 (6)

        如果不观察硬件行为,那么 “Framework_Test.c/Fusalib_InitReactor();”依旧关闭,保证 log pass 即可。

        依旧根据中断号(例 gpio uncorr/corr中断号: 88)来验证注错。


图 (7)



图 (8)


此图包含各模块安全机制和各机制可恢复错误中断号的信息。



图 (9)

根据图(8)中的内容来确定各机制的 shell 命令。

 


二、    状态机自动注错演示

FusaLib 状态迁移图如下所示:


图 (10)

用户通过调用 FusaLib_MainFunction 完成状态迁移:


图 (11)


图 (12)


图 (13)


图 (14)

上电状态机自动运行,跑完后自动 PwROFF。


三、    开发过程中常见问题

1、EB 验证、生成后出现错误:


                                                                                                              图 (15)

在 iar 中看看有没有包含这个文件:(已包含)

图 (16)

对比此版与 EB 生成前(fusalib-all)的不同:

图 (17)

引起错误的模块:Mcal_Cfg,全部替换为 fusalib-all 的内容;其他的不同没有影响。

Mcal_Cfg\E3_ref_gateway_E3640\config xdm 全部替换 fusalib-all 的内容,xdm 只影响资源配置。

        Mcal_Cfg\E3_ref_gateway_E3640\output\include Dio_Cfg.h 中GPIO MAXCHANNEL 和 GPIO MAXPORT 没有定义,替换为 fusalib-all 内容。



图 (18)

Mcal_Cfg\E3_ref_gateway_E3640\output\src\Mcu_ClkCfg.c 由于 EB 的配置与重新生成出现较大的不同,主要体现在 pll的开关,总线时钟的配置,外设的时钟速率。



图 (19)


图 (20)


图 (21)

Mcu_RstCfg.c 也有较大不同。


图 (22)

        总结:EB 重新配置生成导致 Mcal_Cfg\E3_ref_gateway_E3640\config 与 Mcal_Cfg\E3_ref_gateway_E3640\output 的不同造成编译错误。


图 (23)

没有错误。



2、IDE环境中的 Test 的路径造成的验证失败:


图 (24)

        参考《Semidrive E3 MCAL3.0&FusaLib PTG1.1 功能安全开发(一)》第二章图(6),编译不出错,log 打印 pass。



3、修改 Part_Config.h,出现编译错误:


                                                                                                                                             图 (25)


        因为 LIN 通过 UART 发出,Part_Config.h 中 LIN 不配置导致 Fusa_Chip.c 出现错误,已修改:


图 (26)

修改后编译通过。


4、log 卡住,Sem_fault 灯亮一下后灭掉:


                                                                                                                                                图(27)

对比之前跑通 log 并成功打印 pass 的工程;


                                                                                                                                               图 (28)

        关掉 Framework_Test.c/Fusa_InitReactor,log pass;sem_fault 灯不亮,硬件没有可供观察的现象。

        如果不做 reactor,这个 log 的显示的信息就可以完成注错的目的。



                                                                                                                                                      图 (29)


5、如果配置没问题,log 一直打印 “Failed!” 请重新上电。

6、如果编译时遇到“缺少一个标识符”错误,检查程序符号及其他地方。

 

参考资料:

        《FusaLib 培训资料 PPT》


欢迎在博文下方留言评论,我们会及时回复您的问题。如有更多需求,欢迎联系大联大世平集团 ATU 部门:atu.sh@wpi-group.com

作者:Rita Liu / 刘倩

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论