Semidrive E3 MCAL3.0&FusaLib PTG1.1 功能安全開發(一)

關鍵字 :SemidriveE3MCAL3.0&FusaLib PTG1.1

一、概述

1、FusLib 系統流程如下

不可恢復錯誤:Err Inject -> Fusa manager -> Verifier -> Reactor;

可恢復錯誤:Err Inject -> Fusa manager -> Verifier -> recorder;

2、FusaLib 系統結構圖:


 圖 (1)


        Fusa Manager:Fusa Manager 通過遍歷 CPU Resource List 驗證每個 Component;根據系統啟動的不同階段,支持配置多個 Resource List。

        Stage0 Resource List:(典型的,包含 CPU/TCM/Cache/IRAM)用於在客戶 Application 剛啟動階段,以便於驗證最小系統的功能安全。

        Stage1 Resource List:(典型的,包含 Clock/Reset/SCR/Fuse/DMA/Interrupt 等 infrastructure)用於進一步驗證系統的功能安全。

Stage2 Resource List:(典型的,包含系統將會使用的 Peripheral 和 Memory)用於驗證完整系統的功能安全。

Fusa 中保證的 Fusa Componment 功能安全:


圖 (2)

       Fusa Verifier:每個 Verifier 為一個 API,負責對某一具體的安全機制進行驗證,Fusalib 運行其 Verifier API 並更新 Error code bits,驗證過的資源會標記為已驗證。

       Fusa Reactor:默認 Reactor Function 將錯誤 ID 記錄到 Fusa Recorder 中;用戶在初始化階段調用 Fusa_SetReactorFunc 函數設置自定義的 Reactor Function,提供一些列默認 action 供用戶選擇或者使用用戶自定義的 action。

       Fusa Recorder:用於對功能安全實踐進行記錄,支持將事件 /Err 記錄至 RTC mermory(24 words in RTC domain,non-volatile if RTC powered)。

3、不可恢復錯誤注入及故障反應流程:注入錯誤成功 -> 注入錯誤對應中斷位置 1,其他位清除 -> 配置 reactor -> 硬體可觀察現象;


4、不可恢復錯誤注入及故障反應框圖:

 

圖 (3)

故障反應 reactor,E3 硬體行為觀察需要兩個條件:

        4.1、INT_STATUS_x 中該模塊(例 sgpio)對應的中斷狀態位置 1 觸發中斷;

        4.2、INT_ENABLE_x1 中該模塊(例 sgpio:INT_ENABLE_21)對應的中斷反應使能位置 1 使能中斷;程序中是在 Reactor.c 中 948-1074 行進行初始化 Fusa_InitReactor。


5、手動注錯流程:注入錯誤 -> 產生中斷 -> 對應中斷位置 1 -> E3 可以檢測到故障 -> OK;

       
        6、代碼追蹤流程:Fusa_Gpio.c (FusaLib\FusaLib\Verifier\Fusa_Gpio.c\)-> Gpio_Ip.c (FusaLib\FusaLib\Driver\Gpio\Gpio_Ip.c\)。


二、FusaLib 組入 Mcal

1、Fusalib 組入 MCAL3.0 後,Fusalib 工程如下所示:


圖(4)


2、將 Test 工程加入到 Fusalib 子文件夾下;並在 iar 環境中加入 Test:


圖 (5)



圖 (6)


3、加入頭文件路徑和宏定義:

 

圖 (7)


4、shell cmd:run one testcase,please input case order


圖 (8)



5、上電自動注錯入口關閉

圖 (9)

先把自動注錯入口關閉,第三章會先進行手動注錯。



6、串口可以看到 Fusalib_Runcase 命令


圖 (10)


三、成功注入錯誤



圖 (11)



圖 (12)



圖 (13)



圖 (14)


四、不可恢復錯誤注入驗證

1、修改 debug 等級


圖 (15)


2、EB 中配置時鐘與 Fusa_Config.c 中資源一致,若是客戶工程,與客戶工程中的 Fusa_Config.c 中資源一致。



圖 (16)



圖 (17)


3、mcu clock 和 reset 要正確配置



圖 (18)



圖 (19)



4、錯誤清除注釋



圖 (20)

單位 us;reactor 後延時 3s。



圖 (21)

對清除錯誤進行講解:

當注釋掉“錯誤清除”時:錯誤沒有被清除,log 列印 fail。

當未注釋掉“錯誤清除”時:錯誤被清除,log 列印 pass。


5、Part_Config.h 資源配置見《Semidrive E3 MCAL3.0&FusaLib PTG1.1 功能安全開發(一)》第三章問題 3。



6、現象:log 列印 pass,錯誤被正確清除。



圖 (22)

log 列印中斷號的位置:



圖 (23)


圖 (24)

i<288:i 中斷號,INT_Status 是 0~8,32*9=288 位。



7、Fusa Verifier 後若初始化 reactor,程序調用及配置步驟如下:


圖 (25)


圖 (26)


圖 (27)


圖 (28)


圖 (29)

配置 Fusa_Config.c 中 pad,SEM 的狀態進一步會被反映到 SEM_FAULT 管腳:

 

參數

意義

err_divider

0~255

SEM_FAULT 管腳的波形頻率、分頻值=2^err_divider

err_wave_sel

0

1

nominal 輸出 waveA,recoverable 輸出 WaveB

nominal 輸出 WaveB,recoverable 輸出 WaveA,B 波形是 A 波形頻率的 1/16

fatal_highlow_sel

0

1

Fatal 狀態輸出電平 low level

Fatal 輸出電平 high level

level_cfg[0]

0

1

nominal 輸出 Low level

nominal 輸出 high level

level_cfg[1]

0

1

recoverable 輸出 low level

recoverable 輸出 high level

level_en[0]

0

1

level disable

level able

level_en[1]

0

1

level disable

level able

表 (1)

level_en[0]:nominal 是否使能;

level_en[1]:recoverable 是否使能;

        如果 level_en[0] 配置為 1,level_cfg[0] 配置為 0,norminal 不輸出電平而由 err_wave_sel 控制輸出方波。

 

五、參考資料:

       《FusaLib 培訓資料 PPT》

 

 歡迎在博文下方留言評論,我們會及時回復您的問題。

如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com   
作者:Rita Liu / 劉倩


更多資訊,請掃碼關注我們!


★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論