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次,發文人進小黑屋喔~

評論