一種C2000係列芯片的RAM在線診斷實現方法
發布時間:2020-05-15 來源:China Central FAE Sam Zhang 責任編輯:wenwei
【導讀】隨(sui)著(zhe)越(yue)來(lai)越(yue)多(duo)的(de)工(gong)業(ye)應(ying)用(yong)對(dui)產(chan)品(pin)的(de)可(ke)靠(kao)性(xing)和(he)安(an)全(quan)性(xing)要(yao)求(qiu)越(yue)來(lai)越(yue)高(gao),我(wo)們(men)在(zai)做(zuo)產(chan)品(pin)設(she)計(ji)的(de)時(shi)候(hou)不(bu)僅(jin)要(yao)正(zheng)確(que)的(de)實(shi)現(xian)產(chan)品(pin)功(gong)能(neng),同(tong)時(shi)也(ye)需(xu)要(yao)通(tong)過(guo)一(yi)些(xie)功(gong)能(neng)安(an)全(quan)認(ren)證(zheng),比(bi)如(ru)家(jia)電(dian)行(xing)業(ye)的(de)IEC60730等或者ISO13849等(deng)。一(yi)般(ban)的(de)係(xi)統(tong)故(gu)障(zhang)可(ke)以(yi)通(tong)過(guo)設(she)計(ji)的(de)迭(die)代(dai)和(he)嚴(yan)格(ge)測(ce)試(shi)來(lai)避(bi)免(mian),但(dan)是(shi)硬(ying)件(jian)的(de)隨(sui)機(ji)失(shi)效(xiao)理(li)論(lun)上(shang)是(shi)無(wu)法(fa)完(wan)全(quan)消(xiao)除(chu)的(de),所(suo)以(yi)要(yao)想(xiang)提(ti)高(gao)硬(ying)件(jian)隨(sui)機(ji)失(shi)效(xiao)的(de)診(zhen)斷(duan)覆(fu)蓋(gai)率(lv),就(jiu)需(xu)要(yao)軟(ruan)硬(ying)件(jian)診(zhen)斷(duan)機(ji)製(zhi)來(lai)保(bao)障(zhang)。
作為係統的核心控製部分,MCU主平台的診斷機製就是最關鍵的部分。針對一般通用的MCU,以Piccolo C2000係列為例,硬件上提供了一些診斷或者校驗機製,如下所示:

同時TI也提供了一些軟件診斷方案,如MSP430 IEC60730 Software Package和C2000 SafeTI 60730 SW Packages軟件庫等,可以提供很多的診斷測試功能,例如CPU、時鍾、外設、RAM等的診斷,已經可以滿足一部分的需求。如下圖所示為C2000 SafeTI 60730 SW Packages中的功能和資源消耗。
然而在實際的應用中,有些安全標準要求對RAM進行周期性的在線診斷,同時不能影響程序的正常運行。但是程序在運行過程中存儲在RAM中的數據會實時的變化,而RAM的診斷往往會破壞這些存儲的數據,比如電機控製類的實時性要求較高的場合。所以在沒有ECC的情況下,如何對RAM進行實時在線的診斷是一個值得討論的問題。

下麵以電機控製為例,討論硬件校驗的實現,尤其是RAM在線檢測的過程。
1. 係統軟件流程
非破壞性的診斷可以放在背景循環裏麵進行,這些軟件診斷不會對實時性中斷造成影響,例如看門狗測試,內部晶振測試,FLASH CRC校驗,靜態變量RAM CRC校驗,堆棧溢出判斷,以及GPIO口診斷等。另外一些破壞性的或者對實時控製有影響的診斷,可以放到主中斷中進行,如RAM March校驗,ALU診斷以及CPU寄存器診斷等。具體流程圖如下所示:

2. RAM診斷的方法
以C2000 SafeTI 60730 SW Packages為例,主要提供了兩種RAM檢測方式。
一種是CRC檢測STL_CRC_TEST_testRam,此功能用於測試RAM的位錯誤。該測試以0和1的交替模式填充被測RAM區域,並使用PSA計算RAM的CRC。對於給定的RAM存儲器區域,如果RAM存儲器中沒有任何stuck bit,則CRC值應始終相同。並行串行分析器(PSA)是c28x器件中的一個模塊,可用於生成40位給定存儲區域上的CRC。 PSA多項式為Y = x40 + x21 + x19 + x2 + 1。PSA通過監視數據讀取數據總線(DRDB)來計算CRC值。 一旦激活就會監控Data Read Data Bus (DRDB),當CPU通過DRDB讀取數據時,PSA每個時鍾周期會為DRDB上的數據生成一個CRC。由於此測試具有破壞性,因此需要將要測試的RAM內容保存到單獨的RAM位置。

當然也可以使用軟件CRC的方式,使用起來更靈活,並且可以選擇非破壞性的方式來計算CRC,對一些靜態常量存儲的區域可以考慮這種CRC方式。另外一點是軟件CRC算法可以更方便的進行代碼評估,以滿足不同安全標準的要求。
另一種是MARCH檢測STL_MARCH_TEST_testRam,此功能直接對RAM進行32bit的讀寫測試,可以選擇進行MarchC 13N或者MarchC-測試。由於此測試具有破壞性,因此也需要將要測試的RAM內容保存到單獨的RAM位置。

3. RAM在線檢測的實現
由於需要周期性的RAM檢測,以電機控製為例,可以將RAM檢測放到主中斷裏麵執行。同時關鍵是不能影響控製程序的運行和實時性,所以主要考慮兩點:
第一是主中斷時間有限,要盡可能減小RAM檢測的時間,所以可以將RAM分成多個小段進行檢測,每段RAM越小,占用中斷的時間越小,但是所有RAM檢測一遍的時間會變長,這個需要綜合考慮。
第二是不能破壞RAM中的變量值,所以在檢測是之前將RAM段中的內容保存到專門區域,戴檢測完成並且通過之後,再將保存好的數據恢複過來,使用memCopy來提高效率。
具體實現方法如下:
首先定義好各個RAM區間的地址範圍,可以參考具體的數據手冊,如下所示:

然後定義好檢測的範圍和每次檢測的數據長度:

注意由於STL_MARCH_TEST_testRam函數執行32位讀/寫測試,而在測試RAM單元陣列時,由於RAM單元的16位體係結構,所以要求起始地址為偶數,結束地址為奇數,可以測試的最大內存範圍限製為65535個32位字。所以要求測試長度也需要為奇數。
在主中斷裏麵的RAM在線檢測函數裏,首先將要檢測區域的RAM值保存下來:
if ((gStructSTLMonitor.NowRamAddrStart >= MARCH_RAM_START)
&& (gStructSTLMonitor.NowRamAddrStart <= (MARCH_RAM_END-RAM_CHK_NUM)))
{
gStructSTLMonitor.NowRamAddrEnd = gStructSTLMonitor.NowRamAddrStart + RAM_CHK_NUM;
memCopy((uint16_t *)gStructSTLMonitor.NowRamAddrStart,(uint16_t *)
gStructSTLMonitor.NowRamAddrEnd,(uint16_t *)MARCH_RAM_BK);
}
然後進行檢測:
gStructSTLMonitor.status = STL_MARCH_TEST_testRam((uint32_t *)
gStructSTLMonitor.NowRamAddrStart,(uint32_t *)gStructSTLMonitor.NowRamAddrEnd);
if(gStructSTLMonitor.status != SIG_RAM_MARCH_TEST)
{
STL_SetFail();
}
else
{
memCopy((uint16_t *)MARCH_RAM_BK,(uint16_t *)(MARCH_RAM_BK + RAM_CHK_NUM),
(uint16_t *)gStructSTLMonitor.NowRamAddrStart);
gStructSTLMonitor.NowRamAddrStart = gStructSTLMonitor.NowRamAddrEnd + 1;
gStructSTLMonitor.gTestStep++;
}
注意檢測成功之後馬上恢複當前區域的RAM值,並為下一次檢測做好準備。如果檢測發現故障,則進入故障處理函數。
參考文檔:
1. IEC60730 Safety Library for TMS320F2806x USER’S GUIDE
2. Safety Manual for C2000™ MCUs in IEC60730 Safety Applications (SPRUHI3A)
推薦閱讀:
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 一秒檢測,成本降至萬分之一,光引科技把幾十萬的台式光譜儀“搬”到了手腕上
- AI服務器電源機櫃Power Rack HVDC MW級測試方案
- 突破工藝邊界,奎芯科技LPDDR5X IP矽驗證通過,速率達9600Mbps
- 通過直接、準確、自動測量超低範圍的氯殘留來推動反滲透膜保護
- 從技術研發到規模量產:恩智浦第三代成像雷達平台,賦能下一代自動駕駛!
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
微波功率管
微波開關
微波連接器
微波器件
微波三極管
微波振蕩器
微電機
微調電容
微動開關
微蜂窩
位置傳感器
溫度保險絲
溫度傳感器
溫控開關
溫控可控矽
聞泰
穩壓電源
穩壓二極管
穩壓管
無焊端子
無線充電
無線監控
無源濾波器
五金工具
物聯網
顯示模塊
顯微鏡結構
線圈
線繞電位器
線繞電阻


