SMU模塊是Aurix芯片自帶的一個(gè)功能安全硬件模塊,它能夠收集其他模塊(PMS, MTU, SCU, CCU, e.g.)由于硬件功能安全機(jī)制產(chǎn)生的報(bào)警(Alarm),然后,SMU模塊通過(guò)用戶(hù)配置能夠產(chǎn)生內(nèi)部或者外部的動(dòng)作/響應(yīng),也可以不產(chǎn)生任何動(dòng)作。本文將詳細(xì)介紹SMU模塊。
01
SMU功能概述
SMU 是安全架構(gòu)的核心組件,提供通用接口,用于管理存在故障的微控制器的行為。SMU 集中所有與不同的硬件和軟件安全機(jī)制相關(guān)的警報(bào)信號(hào)。每個(gè)警報(bào)都可以單獨(dú)配置為觸發(fā)內(nèi)部操作和/或通過(guò)故障信號(hào)協(xié)議(FSP, Fault Signaling Protocol)向外部通知存在故障。每一報(bào)警的嚴(yán)重程度應(yīng)根據(jù)安全應(yīng)用的需要進(jìn)行配置:默認(rèn)情況下,除看門(mén)狗超時(shí)報(bào)警外,每一報(bào)警反應(yīng)都被禁用。為了進(jìn)行調(diào)試和診斷,報(bào)警信號(hào)設(shè)置了一個(gè)粘滯位(sticky bit),該粘滯位可適應(yīng)應(yīng)用程序或系統(tǒng)重置。SMU 還實(shí)施了一些與專(zhuān)用安全機(jī)制的管理和測(cè)試相關(guān)的內(nèi)務(wù)管理(housekeeping functions)功能??梢允褂锰厥鉁y(cè)試模式測(cè)試 SMU 本身,以檢測(cè)潛在故障。除了寄存器訪問(wèn)保護(hù)外, SMU 還實(shí)施了配置鎖定機(jī)制(configuration locking mechanism)。此外,為了緩解(mitigate)潛在的常見(jiàn)原因故障, SMU 分為兩部分:
SMU_core:位于core domain.
SMU_stdby:位于stand-by domain.
SMU_CORE 和 SMU_Stdby 的設(shè)計(jì)方式和時(shí)間安排各不相同。SMU 的兩個(gè)部分之間存在物理隔離。它們位于不同的時(shí)鐘和電源域中。這允許 SMU 處理任何傳入的報(bào)警,而不管用于生成此報(bào)警的時(shí)鐘頻率如何。此外,在 fSPB (或衍生產(chǎn)品)上生成的報(bào)警事件將由 SMU_CORE 處理,而在 fBACK 上生成的報(bào)警事件將由 SMU_Stdby 處理。這樣,所有時(shí)鐘活動(dòng)監(jiān)視器警報(bào)都將在生成時(shí)鐘域中處理。此外,與功率和溫度有關(guān)的報(bào)警也以不同的方式處理,因?yàn)樗鼈冇?SMU_CORE 和 SMU_Stdby 處理??梢栽?SMU_CORE 或 SMU_Stdby 中配置對(duì)這些報(bào)警的一個(gè)或多個(gè)反應(yīng)(Actions)。
此外,為了檢測(cè) SMU_CORE 中的錯(cuò)誤,將從 SMU_core 向 SMU_Stdby 發(fā)送警報(bào) SMU_core_alive。對(duì)這些警報(bào)的反應(yīng)(Actions)可在兩個(gè)域中配置。但是,對(duì)于 SMU_Stdby ,只有無(wú)反應(yīng)(no reaction)或?qū)?Errorpins 配置為高阻抗?fàn)顟B(tài)作為報(bào)警反應(yīng)。
SMU 與嵌入式安全機(jī)制相結(jié)合,可以在容錯(cuò)時(shí)間間隔內(nèi)檢測(cè)并報(bào)告超過(guò) 99%的微控制器嚴(yán)重故障模式??稍?SMU 中配置容錯(cuò)時(shí)間間隔的計(jì)時(shí)特性。
1.1SMU架構(gòu)
1.2SMU_core
核心域 SMU (也稱(chēng)為 SMU_core)從安全概念定義的硬件監(jiān)視器(hardware monitors)的安全機(jī)制收集大多數(shù)警報(bào)信號(hào)。報(bào)警映射(Alarm Mapping)部分(后面的章節(jié))指定報(bào)警接口(alarm interface)并將其分類(lèi)為報(bào)警組(alarm group)。報(bào)警組定義邏輯映射,用于將報(bào)警信號(hào)映射到內(nèi)部狀態(tài)寄存器?!皥?bào)警處理”部分描述了配置選項(xiàng)。配置選項(xiàng)指定檢測(cè)到報(bào)警事件時(shí) SMU_core的行為。警報(bào)事件可以觸發(fā)內(nèi)部操作和/或激活錯(cuò)誤針腳,以指示外部環(huán)境存在故障。SMU_CORE Control Interface 部分指定了軟件如何控制 SMU_CORE 以及硬件操作的相關(guān)性。故障信號(hào)協(xié)議(FSP)部分描述了外部故障信號(hào)協(xié)議的屬性,這些屬性定義了錯(cuò)誤針腳(ErrorPin)的計(jì)時(shí)和邏輯屬性。
1.3 SMU_stdby
備用域 SMU (也稱(chēng)為 SMU_Stdby)從檢測(cè)時(shí)鐘(無(wú)時(shí)鐘),電源(電壓過(guò)低/過(guò)高)和溫度故障(溫度過(guò)低/過(guò)高)的模塊收集警報(bào)。SMU_Stdby 還會(huì)收集 SMU_Alive 報(bào)警信號(hào),當(dāng) SMU_CORE 在報(bào)警升高后未觸發(fā)反應(yīng)時(shí),該信號(hào)會(huì)發(fā)出通知。此外, SMU_Stdby 實(shí)現(xiàn)了內(nèi)置自檢功能,允許用戶(hù)測(cè)試 SMU_Stdby 對(duì)報(bào)警信號(hào)的反應(yīng)以及從次級(jí)電壓監(jiān)視器到 SMU_Stdby 的完整報(bào)警路徑。有關(guān)輔助監(jiān)視器和 SMU_Stdby 內(nèi)置自檢的詳細(xì)信息,請(qǐng)參閱電源管理系統(tǒng)一章。
“報(bào)警映射”部分指定報(bào)警接口,并將它們分為兩個(gè)報(bào)警組?!皥?bào)警處理”部分描述了可以指定的配置選項(xiàng)。配置選項(xiàng)指定檢測(cè)到報(bào)警事件時(shí) SMU_Stdby 的行為。警報(bào)事件可以觸發(fā)啟動(dòng) ErrorPins (錯(cuò)誤針腳),該 ErrorPins (錯(cuò)誤針腳)表示外部環(huán)境存在故障。
02
SMU功能詳述
2.1SMU_core
2.1.1 Reset類(lèi)型
SMU_CORE 需要多種Reset類(lèi)型。Reset類(lèi)型在系統(tǒng)控制單元中完全指定。SMU_CORE 要求的重置類(lèi)型為:
Power-on Reset
System Reset
Debug Reset
Application Reset
下表指定了每個(gè)重置(Reset)類(lèi)型的范圍,這些重置類(lèi)型的配置和邏輯是SMU_core 控的。
2.1.2接口(Interfaces)概述
這一章描述SMU_core和其他模塊之間的接口信號(hào)。
2.1.2.1SMU_core到SCU的接口
與系統(tǒng)控制單元連接的警報(bào)事件所導(dǎo)致的內(nèi)部操作。接口信號(hào)為:
Emergency Stop Request
Reset Request
NMI Request
CPU Reset Request
2.1.2.2 SMU_core到IR的接口
與中斷路由模塊相連的報(bào)警事件導(dǎo)致的內(nèi)部操作。接口信號(hào)為:
SMU Interrupt Service Request 0
SMU Interrupt Service Request 1
SMU Interrupt Service Request 2
SMU 中斷服務(wù)請(qǐng)求到中斷路由(IR)中斷節(jié)點(diǎn)的映射可在中斷路由器一章(SRC_SMUy, y=0.2)中找到。
AGC.IGCSx , x={0, 1 , 2 } 寄存器字段提供了軟件接口來(lái)控制 SMU 如何觸發(fā)中斷路由器的中斷請(qǐng)求。
每個(gè)AGC.IGCSx是一個(gè)3-bits的位域信號(hào):
AGC.IGCSx[0] shall be set to ‘1’ to trigger SMU Interrupt Service Request 0
AGC.IGCSx[1] shall be set to ‘1’ to trigger SMU Interrupt Service Request 1
AGC.IGCSx[2] shall be set to ‘1’ to trigger SMU Interrupt Service Request 2
AGC.IGCSx的使用在Alarm Configuration章節(jié)描述。
2.1.2.3SMU_core到Ports(ErrorPin)的接口
通用端口結(jié)構(gòu)如下圖所示。
端口引腳(Port Pin)可以通過(guò) ALTx 輸出線路連接到外圍設(shè)備。這是開(kāi)機(jī)重置后端口的默認(rèn)狀態(tài) 。SMU_CORE 使用 HW_DIR , AlTIN , HW_EN , HW_OUT 信號(hào)連接到端口。當(dāng) HW_EN 端口輸入由 SMU_CORE 驅(qū)動(dòng)時(shí), SMU_CORE 將完全控制該端口,繞過(guò)與 ALTx 輸入使用相關(guān)的任何其他軟件配置。
下圖提供了端口結(jié)構(gòu)的更詳細(xì)概述,并突出顯示了 SMU_CORE 連接中涉及的信號(hào)。
SMU_FSP0(也就是上圖中的FSP [0])由硬件控制。FSP_DIR和FSP_EN由軟件控制,控制寄存器如下:
PCTL.HWDIR直接驅(qū)動(dòng)FSP_DIR輸出。
PCTL.HWEN直接驅(qū)動(dòng)FSP_EN輸出。
PCTL.HWDIR和PCTL.HWEN同時(shí)也會(huì)控制SMU_FSP1.
PCTL. PCS 位域,與 P33_PCSR.SEL 位字段配合使用,使軟件能夠更改 FSP [0]的 PAD 控制。借助 P33_PCSR. SEL , PCTL HWDIR , HWEN 和 PCS 字段,軟件可以控制 FPSP [0] PAD 所有權(quán)從 GPIO 過(guò)渡到 SMU 硬件完全控制。
SMU_FSP1 PAD 不在 SMU_CORE 的控制下。通過(guò)軟件配置PCTL PCS 字段,不能更改 SMU_FSP1 的 PAD 控制。但是, PCTL HWDIR 和 HWEN 字段可用于超控(overrule) PAD 配置。
PCTL 寄存器的內(nèi)容被KEYS寄存器鎖定,并且只能通過(guò)開(kāi)機(jī)重置(power-on reset)進(jìn)行重置,因此即使存在應(yīng)用程序或系統(tǒng)重置, PAD 配置也將保持不變。此外, PCTL 寄存器使用安全觸發(fā)器安全機(jī)制實(shí)施,該機(jī)制在運(yùn)行時(shí)檢測(cè)隨機(jī)硬件故障引起的任何位變化。
參考SMU_core Integration Guidelines章節(jié),描述了使用ErrorPin時(shí)的SMU和PORT模塊的配置步驟。
2.1.2.4SMU_core到寄存器監(jiān)控的接口
寄存器監(jiān)視器控制(RMCTL),寄存器監(jiān)視器錯(cuò)誤標(biāo)志寄存器(RMEF)和寄存器監(jiān)視器自檢狀態(tài)寄存器(RMSTS)之間的接口指定如下:
RMCTL.TE[31:0]
-將 RMCTL.TE[i]設(shè)置為 1 將對(duì)給定模塊的安全觸發(fā)保護(hù)寄存器啟動(dòng)自檢(請(qǐng)參閱表 523)。
-在自檢結(jié)束時(shí),必須將這些位設(shè)置回0。
RMEF.EF [31:0]
-無(wú)論 RMTL.TE[i]的狀態(tài)如何,只要在給定模塊的安全觸發(fā)保護(hù)寄存器中檢測(cè)到故障, RMEF.EF[i]就會(huì)設(shè)置為 1 (參見(jiàn)表 524)。
RMSTS.STS [31:0]
-RMSTS.STS[i]在安全觸發(fā)自檢序列結(jié)束時(shí)設(shè)置為1 (參見(jiàn)表525)
安全觸發(fā)器自檢條件
為了防止自檢期間出現(xiàn)意外行為,應(yīng)滿(mǎn)足以下條件:
必須啟用要測(cè)試的模塊的時(shí)鐘
自檢期間不得修改自檢所涉及模塊的時(shí)鐘和時(shí)鐘比率
自檢序列中所涉及模塊的時(shí)鐘比率應(yīng)以特定方式設(shè)置。有關(guān)更多詳細(xì)信息,請(qǐng)參閱安全觸發(fā)相關(guān)章節(jié)
執(zhí)行自檢時(shí),微控制器不應(yīng)設(shè)置為重置,休眠或調(diào)試狀態(tài)
2.1.2.5SMU_core到SMU_stdby的接口
如果發(fā)生故障, SMU_CORE 會(huì)向 SMU_Stdby 生成信號(hào) SMU_core_alive。
如果滿(mǎn)足以下條件之一,將生成 SMU_core_alive 信號(hào):
當(dāng) SMU_CORE 處于運(yùn)行(RUN)或故障(FAULT)狀態(tài),且 SMU_CORE 活動(dòng)監(jiān)視器(SCAM)檢測(cè)到 SMU_CORE 未生成反應(yīng)時(shí),會(huì)發(fā)生警報(bào)事件。
當(dāng) SMU_CORE 處于啟動(dòng)(START)狀態(tài),且SCAM檢測(cè)到 SMU_CORE 未生成響應(yīng)時(shí),會(huì)發(fā)生監(jiān)視程序或恢復(fù)計(jì)時(shí)器警報(bào)事件。
發(fā)送SMU_ActivateFSP或SMU_ActivatePES命令,但SMU_CORE不會(huì)生成相應(yīng)的響應(yīng)
在處理此報(bào)警時(shí),報(bào)警的配置會(huì)發(fā)生變化
SMU_core_alive 信號(hào)可以通過(guò)發(fā)送 SMU_AliveTest 命令來(lái)測(cè)試。
事實(shí)上,發(fā)送 SMU_AliveTest 命令將觸發(fā)SCAM引發(fā)故障并將 SMU_core_alive 警報(bào)轉(zhuǎn)發(fā)給 SMU_Stdby。無(wú)論是否啟用 SMU_Stdby (請(qǐng)參閱Interdependency Between SMU_core and SMU_stdby),都可以在 AG2i_STDBY (i=1)中讀取 SMU_core_Alive 報(bào)警標(biāo)志??梢酝ㄟ^(guò)使用不同的參數(shù)發(fā)送 SMU_AliveTest 命令來(lái)禁用SCAM錯(cuò)誤注入(請(qǐng)參閱表 531)。但是,當(dāng)真正的故障生成 SMU_core_alive 報(bào)警時(shí), SMU_AliveTest 命令無(wú)法清除該報(bào)警。要清除 SMU_core_alive 警報(bào),至少需要重置應(yīng)用程序。
對(duì)于 TC39xB 和 TC38x ,當(dāng) SMU_CORE 處于啟動(dòng)(START)狀態(tài)時(shí),在處理“恢復(fù)計(jì)時(shí)器 1 ”超時(shí)警報(bào)時(shí)發(fā)生故障將不會(huì)生成 SMU_core_alive 警報(bào)。
2.1.3 SMU_core集成指導(dǎo)
本章通過(guò)提供有關(guān)錯(cuò)誤針腳(故障信號(hào)協(xié)議(FSP))與微控制器的其他輸入/輸出(GPIO)功能以及故障信號(hào)協(xié)議(FSP)配置的更多信息,擴(kuò)展了接口概述部分。
在power-on reset期間, ErrorPin 處于高阻態(tài):the pull devices are disabled.
power-on reset后,ErrorPin連接到的端口(PORT)的默認(rèn)模式為GPIO.
在將 PAD 的所有權(quán)更改為 SMU 之前,軟件應(yīng)配置端口寄存器,包括:
如果未使用GPIO,請(qǐng)disable the pull devices.
通過(guò)軟件編程GPIO寄存器,將ErrorPin強(qiáng)驅(qū)動(dòng)輸出低電平.
設(shè)置P33_PCSR.SEL8為1
設(shè)置P33_PCSR.SEL10為0.
要使 SMU 能夠控制 ErrorPin PAD ,軟件應(yīng)激活 PAD 配置保護(hù)處理(configuration safeguarding process)。
-保護(hù)處理需要一個(gè)軟件操作,包括在 PCTL.PCS 字段中寫(xiě)入 1。只有從0到 1 的第一個(gè)上升沿會(huì)使得保護(hù)處理生效。新的端口配置以及從0到 1 的 PCTL.PCS 的新轉(zhuǎn)換對(duì)硬件沒(méi)有影響。
此外,需要按照以下步驟重新配置故障信號(hào)協(xié)議(FSP)設(shè)置:
-當(dāng)處于無(wú)故障狀態(tài)(Fault Free State)且正在使用時(shí)間切換(Time Switching)或Dual Rail協(xié)議(時(shí):
通過(guò)將FSP設(shè)置為Bi-stable協(xié)議模式(FSP.MODE= 00B)來(lái)禁用時(shí)間切換(Time Switching)或Dual Rail協(xié)議
等待Bi-stable協(xié)議模式激活(讀取FSP寄存器兩次)
寫(xiě)入想寫(xiě)入的值到PRE1, PRE2或者TFSP_HIGH.
切換FSP.MODE到想要的協(xié)議
當(dāng)處于無(wú)故障狀態(tài)且正在使用Bi-stable協(xié)議時(shí):
寫(xiě)入想寫(xiě)入的值到PRE1, PRE2或者TFSP_HIGH.
切換FSP.MODE到想要的協(xié)議
2.1.4報(bào)警映射(Alarm Mapping)
其他外設(shè)模塊產(chǎn)生的Alarm都幾種映射到SMU模塊。為此,定義了報(bào)警組。報(bào)警組索引 ALM< n >[index]信號(hào)與報(bào)警配置和狀態(tài)寄存器(AG< n >[index])之間存在一對(duì)一關(guān)系。一個(gè)組由多達(dá) 32 個(gè)警報(bào)組成。
TC37x模塊擁有Alarm Group 0-11, Group 20, Group 21共14組Alarm,每組Group有32個(gè)Alarm.
2.1.4.1SMU_core內(nèi)部Alarms
下表描述了 SMU_CORE 生成的警報(bào)。
2.1.5Alarm處理
2.1.5.1Alarm協(xié)議
每個(gè)安全機(jī)制都應(yīng)使用預(yù)定義的協(xié)議與 SMU_CORE 連接。該協(xié)議允許以可靠的方式跨越時(shí)鐘域。協(xié)議的操作對(duì)軟件層沒(méi)有影響。
2.1.5.2Alarm配置
收到報(bào)警事件后, SMU_CORE 會(huì)對(duì)要執(zhí)行的操作進(jìn)行解碼。該操作可以分為內(nèi)部行為和外部行為??梢詾槊總€(gè)報(bào)警配置內(nèi)部和外部行為。
外部行為與故障信號(hào)協(xié)議相關(guān)(請(qǐng)參閱故障信號(hào)協(xié)議(FSP))。外部行為通過(guò)以下寄存器配置:
AGiFSP (i=0-11)
SMU 在出現(xiàn)報(bào)警時(shí)的內(nèi)部行為通過(guò)以下寄存器進(jìn)行控制:
AGiCFj (i=0-11;j=0-2)
內(nèi)部行為由 3 位代碼指定,如下所示:
Code = SMU_AGCF2. SMU_AGCF1. SMU_AGCF0, n=0...11
三個(gè)bit組成0x0 – 0x7共8種組合。
2.1.5.3 Alarm操作
每當(dāng)檢測(cè)到輸入報(bào)警事件且 SMU_CORE 狀態(tài)機(jī)器處于運(yùn)行(RUN)或故障(FAULT)狀態(tài)時(shí), SMU 會(huì)同時(shí)檢查要為內(nèi)部操作和 FSP 執(zhí)行的相應(yīng)操作。如果檢測(cè)到輸入報(bào)警事件,但未指定報(bào)警的操作,則相應(yīng)的狀態(tài)位也應(yīng)設(shè)置為 1 ,但不會(huì)發(fā)生任何操作。
傳入報(bào)警事件的處理過(guò)程如下所示:
同時(shí)掃描所有報(bào)警組(Alarm Group)和每個(gè)報(bào)警。
掛起的報(bào)警(Alarm)的執(zhí)行是同時(shí)進(jìn)行的。
報(bào)警組內(nèi)的報(bào)警處理可能需要幾個(gè) fSPB 周期。
如果完成了故障處理,則會(huì)在 SMU_AEX 寄存器中設(shè)置相應(yīng)的位。只要設(shè)置了位,相應(yīng)的故障處理就會(huì)被阻止。故障處理完成后,此位需要由 SW 重置。
如果SMU_AEX寄存器中與掛起報(bào)警相關(guān)的報(bào)警執(zhí)行位已設(shè)置,則報(bào)警事件被忽略,但狀態(tài)位和相應(yīng)的報(bào)警錯(cuò)過(guò)事件位已設(shè)置。
如果與報(bào)警事件相關(guān)的狀態(tài)標(biāo)志已設(shè)置為1,則報(bào)警事件將被忽略。
無(wú)論何時(shí)處理報(bào)警事件,AG寄存器中的硬件都會(huì)將相應(yīng)的狀態(tài)位設(shè)置為1。如果配置并執(zhí)行了內(nèi)部SMU_core動(dòng)作,則AFCNT寄存器中的動(dòng)作計(jì)數(shù)器(ACNT)遞增。
2.1.5.4Alarm狀態(tài)寄存器
表529規(guī)定了根據(jù)SMU_core狀態(tài)機(jī)狀態(tài)在AG報(bào)警組狀態(tài)寄存器上可能的軟件操作。
在START狀態(tài)下,軟件可以通過(guò)在AG地址寫(xiě)入來(lái)“模擬”輸入報(bào)警事件的發(fā)生。如有必要,軟件應(yīng)讀回AG寄存器,以確保操作完成。此外,在清除警報(bào)后,軟件應(yīng)重新檢查警報(bào)狀態(tài)位(針對(duì)清除時(shí)間窗口期間發(fā)生的警報(bào))。
要清除各個(gè)報(bào)警標(biāo)志,請(qǐng)僅使用32位寫(xiě)入。
2.1.5.5Alarm診斷寄存器
報(bào)警診斷寄存器使應(yīng)用程序能夠改進(jìn)對(duì)導(dǎo)致故障的根本原因的診斷。在這種情況下,如果應(yīng)用程序允許,它們可能有助于實(shí)施恢復(fù)策略。當(dāng)出現(xiàn)以下情況時(shí),SMU_ADx診斷寄存器應(yīng)生成SMU_AGx寄存器的快照:
當(dāng)SMU處于RUN(運(yùn)行)或FAULT(故障)狀態(tài)時(shí),SMU要執(zhí)行的動(dòng)作是復(fù)位
發(fā)生將SMU_core狀態(tài)機(jī)(SSMSSM)切換到FAULT狀態(tài)(RUN->FAULT,F(xiàn)AULT->FAULT)的條件,由SMU硬件或軟件命令控制
SMU_ADx寄存器只有在power-on reset后才會(huì)被清除。
注:在觸發(fā)SMU對(duì)SMU_AGx寄存器進(jìn)行快照的每個(gè)條件之后,SMU_ADx診斷寄存器將被當(dāng)前SMU_AGx寄存器值覆蓋。如果SMU已經(jīng)處于FAULT(故障)狀態(tài),并且FSP再次激活,則這也是有效的。
2.1.5.6Port緊急停止
Port緊急停止功能可強(qiáng)制Pad進(jìn)入通用輸入模式(General Purpose Input Mode)。SCU的端口緊急停止請(qǐng)求可通過(guò)以下任何情況激活:
SMU_ActivatePES()軟件命令。
SMU_AG< x >FSP 啟用且 FSP 啟用的報(bào)警事件。
在 SMU_AGCFX 寄存器中配置了內(nèi)部操作且為該操作啟用了 SMU_AGC.PES 的警報(bào)事件。
2.1.5.7 Recovery Timer
恢復(fù)計(jì)時(shí)器(RT)可用于監(jiān)控通過(guò)警報(bào), NMI 或中斷操作激活的持續(xù)時(shí)間或內(nèi)部錯(cuò)誤處理程序。在當(dāng)前 SMU_CORE 實(shí)現(xiàn)中有兩個(gè)獨(dú)立實(shí)例(RT0和 RT1)可用。恢復(fù)計(jì)時(shí)器持續(xù)時(shí)間(所有實(shí)例相同)在寄存器 RTC 中配置??梢詥⒂没蚪妹總€(gè)實(shí)例,但默認(rèn)情況下,這兩個(gè)實(shí)例都已啟用,因?yàn)椴僮?CPU 監(jiān)視程序時(shí)需要使用它們(另請(qǐng)參閱Watchdog Alarms)。除了 RTC 之外,每個(gè)恢復(fù)計(jì)時(shí)器實(shí)例還可以使用附加配置寄存器(RTC00, RTC01 , RTC10和 RTC11)來(lái)配置警報(bào)映射。
警報(bào)映射由一對(duì)參數(shù){GIDi, ALIDi} (i = 0..3)組成,其中 GIDi 是組標(biāo)識(shí)符,而 ALIDi 是屬于組的警報(bào)標(biāo)識(shí)符。每個(gè)恢復(fù)計(jì)時(shí)器實(shí)例可以配置四個(gè) { GIDi , ALIDi } 對(duì)??梢远啻闻渲孟嗤慕M標(biāo)識(shí)符。如果需要將少于四個(gè)報(bào)警映射到恢復(fù)計(jì)時(shí)器,則應(yīng)多次配置相同的{GIDi, ALIDi}。
注:只有當(dāng)內(nèi)部操作是中斷或 NMI 時(shí),才可以使用恢復(fù)計(jì)時(shí)器。然而,沒(méi)有進(jìn)行硬件檢查,而是由軟件以適當(dāng)?shù)姆绞脚渲肧MU_core.
如果已啟用恢復(fù)計(jì)時(shí)器,并且任何{ GIDi , ALIDi } 對(duì)都將發(fā)生警報(bào)事件,并且配置了內(nèi)部操作導(dǎo)致內(nèi)部操作(警報(bào)狀態(tài)應(yīng)清除),則恢復(fù)計(jì)時(shí)器將由硬件自動(dòng)啟動(dòng)。這種情況稱(chēng)為恢復(fù)計(jì)時(shí)器事件。無(wú)內(nèi)部操作的報(bào)警不應(yīng)啟動(dòng)恢復(fù)計(jì)時(shí)器。
一旦發(fā)生恢復(fù)計(jì)時(shí)器事件,恢復(fù)計(jì)時(shí)器將啟動(dòng)并計(jì)數(shù),直到軟件使用 SMU_RTStop()停止它。如果計(jì)時(shí)器超時(shí),將發(fā)出內(nèi)部 SMU 報(bào)警(恢復(fù)計(jì)時(shí)器超時(shí))。在恢復(fù)計(jì)時(shí)器運(yùn)行期間,請(qǐng)求恢復(fù)計(jì)時(shí)器的任何其他操作都將被忽略。如果發(fā)生此類(lèi)事件, STS 寄存器中的硬件將位 RTME (恢復(fù)計(jì)時(shí)器未接來(lái)電事件)設(shè)置為 ‘1 ’。RTME bit 只能通過(guò)軟件清除。在恢復(fù)計(jì)時(shí)器運(yùn)行期間, STS 寄存器中的硬件將 RTS bit (恢復(fù)計(jì)時(shí)器狀態(tài))設(shè)置為 ‘1 ’:從計(jì)時(shí)器激活到收到 SMU_RTStop()或計(jì)時(shí)器過(guò)期。收到 SMU_RTStop()或計(jì)時(shí)器到期時(shí),硬件將清除該位 RTS。
如果在恢復(fù)計(jì)時(shí)器未處于活動(dòng)狀態(tài)時(shí)收到 SMU_RTStop()命令,該命令將返回錯(cuò)誤響應(yīng)。
注:如果應(yīng)寫(xiě)入 RTC.RTD ,請(qǐng)確保沒(méi)有運(yùn)行恢復(fù)計(jì)時(shí)器(恢復(fù)計(jì)時(shí)器狀態(tài)由 STS 寄存器中的 BITS RTS0和 RTS1 指示)。
2.1.5.8看門(mén)狗Alarms
如果看門(mén)狗(WDT)不是由軟件或固件提供服務(wù),則需要對(duì)監(jiān)視狗(WDT)超時(shí)警報(bào)進(jìn)行特殊處理,以確保微控制器行為正確。應(yīng)確保微控制器在預(yù)警階段后重置,在此階段,軟件仍可以執(zhí)行一些關(guān)鍵操作。
每個(gè)超時(shí)警報(bào)都應(yīng)激活NMI
恢復(fù)計(jì)時(shí)器0應(yīng)配置為為安全WDT,CPU0 WDT,CPU1 WDT和CPU2 WDT的WDT超時(shí)警報(bào)提供服務(wù)
恢復(fù)計(jì)時(shí)器1應(yīng)配置為為維修CPU3 WDT的WDT超時(shí)警報(bào),CPU4 WDT和CPU5 WDT
應(yīng)將恢復(fù)計(jì)時(shí)器0和恢復(fù)計(jì)時(shí)器 1 超時(shí)警報(bào)配置為發(fā)出重置請(qǐng)求并激活故障信號(hào)協(xié)議。
上述屬性作為監(jiān)視程序超時(shí)警報(bào)以及恢復(fù)計(jì)時(shí)器0和 1 的重置值實(shí)現(xiàn)。
圖中僅顯示 RTAC 0和相關(guān)的四個(gè) WDT 的示例。同樣, RTAC 1 與相關(guān) WDT3 , WDT4 和 WDT5 的設(shè)置方式也是如此。
由于也需要從 CPU 執(zhí)行的第一個(gè)指令中檢測(cè)看門(mén)狗超時(shí), SMU 應(yīng)在啟動(dòng)狀態(tài)期間處理任何看門(mén)狗超時(shí)警報(bào)。
注:如果所有 WDT 警報(bào)都需要相同的行為,建議使用實(shí)施邏輯或所有 WDT 超時(shí)警報(bào)的全局 WDT 超時(shí)警報(bào),從而釋放 RTC00, RTC01 , RTC10和 RTC11 中的某些{GIDi , ALIDi } 配置對(duì),以用于其他用途。
2.1.6 SMU_core控制接口
通過(guò)控制接口引入SMU_CORE 的核心功能。控制接口定義了軟件如何控制 SMU_CORE ,如表 530所示??刂平涌谥苯舆B接到 SMU_CORE 狀態(tài)機(jī)(SSM)中所述的 SMU_CORE 狀態(tài)機(jī)(SSM)操作和故障信號(hào)協(xié)議(FSP)中所述的故障信號(hào)協(xié)議(FSP)??刂平涌谟?CMD 寄存器使用 CMD 和 ARG 字段實(shí)現(xiàn)。命令完成狀態(tài)可通過(guò) STS 寄存器獲取。
注:如果參數(shù)不符合命令規(guī)范,則該命令將被忽略并返回錯(cuò)誤代碼。
下表提供了執(zhí)行命令的合法條件。條件取決于 SMU_CORE 狀態(tài)機(jī)器(SSM)狀態(tài)(參見(jiàn) SMU_CORE 狀態(tài)機(jī)器)。任何未指定的情況都會(huì)導(dǎo)致錯(cuò)誤代碼。
2.1.7 SMU_core狀態(tài)機(jī)
圖 163 和圖 164 描述了 SMU_CORE 狀態(tài)機(jī)(SSM)的行為。
Fault Counter
SMU 實(shí)現(xiàn)了一個(gè)故障計(jì)數(shù)器(AFCNT),該計(jì)數(shù)計(jì)數(shù)了從運(yùn)行狀態(tài)到故障狀態(tài)的轉(zhuǎn)換次數(shù)。故障計(jì)數(shù)器寄存器只能通過(guò)熱啟動(dòng)重置來(lái)重置。
2.1.8故障信號(hào)協(xié)議(Fault Signaling Protocol, FSP)
故障信號(hào)協(xié)議使微控制器能夠向外部安全控制器設(shè)備報(bào)告緊急情況,以控制安全系統(tǒng)的安全狀態(tài)。
2.1.8.1簡(jiǎn)介
故障信號(hào)協(xié)議通過(guò) FSP 命令寄存器進(jìn)行配置。FSP 狀態(tài)由 STS 寄存器中的 FSP 標(biāo)志指示。FSP有三種狀態(tài):
開(kāi)機(jī)重置狀態(tài)。在熱啟動(dòng)重置(warm power-on reset)后, SMU 與端口斷開(kāi)連接(請(qǐng)參閱 SMU_CORE Integration Guidelines)。在熱啟動(dòng)重置后, SMU FSP 輸出應(yīng)為故障狀態(tài)。
無(wú)故障狀態(tài)。無(wú)故障狀態(tài)由一個(gè)定時(shí)器控制,定時(shí)器被稱(chēng)為 TFSP_FFS ,并由 FSP 寄存器控制。
故障狀態(tài)。故障狀態(tài)的時(shí)間由 FSP 寄存器控制。最小活動(dòng)故障狀態(tài)時(shí)間稱(chēng)為 TFSP_FS。
無(wú)故障和故障狀態(tài)行為可以使用以下協(xié)議進(jìn)行配置:
Bi-stable protocol (default)
Dynamic dual-rail protocol
Time-switching protocol
FSP 可通過(guò)以下方式控制:
軟件方式,通過(guò)CMD寄存器使用SMU_ActivateFSP()和SMU_ReleaseFSP()命令。
硬件方式,通過(guò)AGiFSP(I = 0-11)配置寄存器。
為避免意外報(bào)警,僅當(dāng) SMU 未處于故障狀態(tài)且 FSP 處于雙穩(wěn)定協(xié)議模式(FSP 模式= 00B)時(shí),才可執(zhí)行 PRE1 , PRE2 或 TFSP_HIGH 字段的配置。模式切換和配置不應(yīng)使用相同的寫(xiě)入訪問(wèn)權(quán)限來(lái)注冊(cè) FSP。如果應(yīng)寫(xiě)入 FSP.PRE1字段,請(qǐng)確保沒(méi)有運(yùn)行恢復(fù)計(jì)時(shí)器(恢復(fù)計(jì)時(shí)器狀態(tài)由 STS 寄存器中的 BITS RTS0和 RTS1 指示)。
圖 165 指定了生成 TFSP_FFS 和 TFSP_FS 計(jì)時(shí)的中間時(shí)鐘。
2.1.8.2 Bi-stable fault signaling protocol
操作
在通電重置過(guò)程中, FSP[0] =0 (故障狀態(tài))。
通電后重置 FSP[0]保持故障狀態(tài)。
FSP[0]必須設(shè)置為每個(gè)軟件的無(wú)故障狀態(tài)(SMU_ReleaseFSP ())。
在檢測(cè)到配置為激活 FSP 的報(bào)警事件時(shí), FSP [0]會(huì)進(jìn)入故障狀態(tài)并保持此狀態(tài),直到收到 SMU_ReleaseFSP ()命令,并且滿(mǎn)足 TFS_FS 或發(fā)生開(kāi)機(jī)重置。
在故障狀態(tài)下,如果收到配置為激活 FSP 的新警報(bào)事件,但尚未達(dá)到 TFSP_FS ,則應(yīng)重新啟動(dòng) TFSP_FS 計(jì)時(shí)。
在故障狀態(tài)下,如果收到配置為激活 FSP 的新報(bào)警事件,并且已經(jīng)達(dá)到 TFSP_FS ,則應(yīng)啟動(dòng) TFSP_FS 計(jì)時(shí)。
2.1.8.3Timed dual rail
操作
雙軌編碼是對(duì)位進(jìn)行編碼的另一種方法。雙軌代碼使用兩個(gè)信號(hào)來(lái)定義邏輯狀態(tài)。
在通電重置過(guò)程中, FSP[1:0]=2'B00 (故障狀態(tài))?通電重置后, FSP[1:0]保持故障狀態(tài)。
FSP[1:0]必須設(shè)置為每個(gè)軟件的無(wú)故障狀態(tài)(SMU_ReleaseFSP ())。
故障無(wú)狀態(tài)由 FSP[1:0]在 2'B01 和 2'B10之間振蕩定義,其定義頻率通過(guò) FSP 寄存器配置,占空比為 50% (參見(jiàn)圖 167)。
在檢測(cè)到配置為激活FSP的報(bào)警事件時(shí),F(xiàn)SP [1:0]會(huì)立即進(jìn)入故障狀態(tài),并保持此狀態(tài),直到收到SMU_ReleaseFSP ()命令且TFS_FS滿(mǎn)足或啟動(dòng)
重置發(fā)生。
2.1.8.4 Time switching protocol
使用定義的頻率在邏輯級(jí)別0和邏輯級(jí)別 1 之間切換 FP[0]。當(dāng) SMU_CORE 進(jìn)入故障狀態(tài)時(shí),將違反此頻率調(diào)制協(xié)議。
在通電重置過(guò)程中, FSP[0] =0 (故障狀態(tài))。
加電后重置 FSP[0]保持故障狀態(tài)。
FSP[0]必須設(shè)置為每個(gè)軟件的無(wú)故障狀態(tài)(SMU_ReleaseFSP ())。
在無(wú)故障狀態(tài)下,使用通過(guò) FSP 寄存器配置的頻率, FSP[0]在邏輯級(jí)別0和邏輯級(jí)別 1 之間振蕩(參見(jiàn)圖 168)。
在檢測(cè)到配置為激活 FSP 的報(bào)警事件時(shí), FSP [0]會(huì)立即進(jìn)入故障狀態(tài),并保持此狀態(tài),直到收到 SMU_ReleaseFSP ()命令且 TFS_FS 滿(mǎn)足或啟動(dòng)要求重置發(fā)生。
2.1.8.5FSPFault State
當(dāng)警報(bào)配置為激活 FSP 時(shí), SMU_CORE 會(huì)自動(dòng)切換到故障狀態(tài)。在此期間,安全相關(guān)軟件還可以嘗試分析根本原因(當(dāng)微控制器仍在運(yùn)行時(shí)),并確定錯(cuò)誤的嚴(yán)重程度。由于 FSP 至少對(duì) TFSP_FS 處于活動(dòng)狀態(tài),因此可以確保通過(guò)獨(dú)立于微控制器的外部機(jī)制(除了 FSP 本身)輸入系統(tǒng)的安全狀態(tài)。在 TFSP_FS FSP 處于故障狀態(tài)期間,軟件可能已斷定故障不嚴(yán)重,并決定發(fā)SMU_ReleaseFSP ()命令,通知 SMU_CORE 它可以返回到運(yùn)行狀態(tài)(軟件錯(cuò)誤處理程序的運(yùn)行時(shí)間與 TFSP_FS 的持續(xù)時(shí)間沒(méi)有直接關(guān)聯(lián),在實(shí)踐中應(yīng)該要短得多)。
應(yīng)謹(jǐn)慎使用此功能,當(dāng) SMU 報(bào)告的故障被評(píng)估為不嚴(yán)重時(shí),強(qiáng)烈建議重置微控制器以重新啟動(dòng)安全功能的操作。因此,默認(rèn)情況下,此功能處于禁用狀態(tài),應(yīng)使用 AGC 寄存器中的 EFRST (啟用故障到運(yùn)行狀態(tài)轉(zhuǎn)換)字段進(jìn)行配置。
2.1.8.6 FSP and SMU_core START State
圖 170顯示了一個(gè)典型的使用案例,其中 FSP 在故障狀態(tài)和無(wú)故障狀態(tài)之間的轉(zhuǎn)換由軟件使用 SMU_ReleaseFSP()和 SMU_ActivateFSP()命令進(jìn)行控制。
使用條件:
軟件應(yīng)確保 FSP 處于無(wú)故障狀態(tài),然后使用 SMU_Start()命令輸入運(yùn)行狀態(tài)。
2.2 SMU_stdby
概念和SMU_core基本一樣,參考芯片手冊(cè)。
03
SMU配置
和其他硬件模塊一樣,理解了模塊的原理和基本概念后,模塊配置就是按照項(xiàng)目的需求配置模塊相關(guān)的寄存器,只不過(guò)提供了圖形化的配置工具。
3.1SMUGeneral配置
SMU General主要配置一些全局的屬性,以及是否使能一些SMU的功能,是否要使能一些API.
3.2SmuConfigSet配置
3.2.1General
3.2.2 SmuCoreRT0Alarm
3.2.3 SmuCoreAlarmGroup
3.2.3 SmuStdbyAlarmGroup
04
總結(jié)
SMU模塊是Aurix芯片自帶的一個(gè)功能安全硬件模塊,它能夠收集其他模塊(PMS, MTU, SCU, CCU, e.g.)由于硬件功能安全機(jī)制產(chǎn)生的報(bào)警(Alarm),然后,SMU模塊通過(guò)用戶(hù)配置能夠產(chǎn)生內(nèi)部或者外部的動(dòng)作/響應(yīng),也可以不產(chǎn)生任何動(dòng)作。對(duì)于使用SMU的用戶(hù)而言,外部響應(yīng)一般都很少使用,主要就是查對(duì)應(yīng)芯片手冊(cè),知道哪一個(gè)硬件模塊可以產(chǎn)生一個(gè)對(duì)應(yīng)SMU的Alarm,然后配置該Alarm產(chǎn)生后需要執(zhí)行的動(dòng)作即可。
審核編輯:黃飛
-
微控制器
+關(guān)注
關(guān)注
48文章
7658瀏覽量
152183 -
寄存器
+關(guān)注
關(guān)注
31文章
5369瀏覽量
121274 -
路由器
+關(guān)注
關(guān)注
22文章
3746瀏覽量
114542 -
SMU
+關(guān)注
關(guān)注
1文章
59瀏覽量
17335 -
GPIO
+關(guān)注
關(guān)注
16文章
1217瀏覽量
52434
原文標(biāo)題:TC3xx芯片SMU模塊詳解
文章出處:【微信號(hào):談思實(shí)驗(yàn)室,微信公眾號(hào):談思實(shí)驗(yàn)室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
英飛凌TC3XX系列多核MCU學(xué)習(xí)筆記(1)
![英飛凌<b class='flag-5'>TC3XX</b>系列多核MCU學(xué)習(xí)筆記(1)](https://file1.elecfans.com/web2/M00/A5/17/wKgaomUI_fmAHg66AAC6wo472ro368.jpg)
TC3xx芯片時(shí)鐘系統(tǒng)的鎖相環(huán)PLL詳解
![<b class='flag-5'>TC3xx</b><b class='flag-5'>芯片</b>時(shí)鐘系統(tǒng)的鎖相環(huán)PLL詳解](https://file1.elecfans.com/web2/M00/B2/1D/wKgaomVpOUSAdIZJAAAVWUvVLsA023.png)
TC3XX寄存器讀寫(xiě)時(shí)間過(guò)長(zhǎng)怎么解決?
TC3xx系列怎么禁用trap?
請(qǐng)問(wèn)TC3XX WDT 的check access應(yīng)該如何使用?
TC3xx系列是否支持RTC功能?
TC3xx的HSM中有沒(méi)有單調(diào)計(jì)數(shù)器?
TC3XX系列IOM模塊ECMSELR寄存器中的CTS和CES有什么區(qū)別?
AUTOSAR MCAL-基于Infineon TC3xx芯片的ADC模塊
AURIX? TC3xx NVM是非易失性存儲(chǔ)器學(xué)習(xí)筆記
![AURIX? <b class='flag-5'>TC3xx</b> NVM是非易失性存儲(chǔ)器學(xué)習(xí)筆記](https://file1.elecfans.com/web2/M00/8A/08/wKgaomSPq26ADVgLAAA37poSRds418.png)
TC3xx芯片DMU介紹
![<b class='flag-5'>TC3xx</b><b class='flag-5'>芯片</b>DMU介紹](https://file1.elecfans.com/web2/M00/A2/70/wKgaomTwLzKAFA9oAAAzEsYV888714.png)
TC3xx芯片的MPU功能詳解
![<b class='flag-5'>TC3xx</b><b class='flag-5'>芯片</b>的MPU功能詳解](https://file1.elecfans.com/web2/M00/A3/B5/wKgZomUJGniAWMcGAABvIJ3pGu8491.jpg)
評(píng)論