一種C2000係列芯片的RAM在線診斷實現方法
發布時間:2020-05-15 來源:China Central FAE Sam Zhang 責任編輯:wenwei
【導讀】suizheyuelaiyueduodegongyeyingyongduichanpindekekaoxingheanquanxingyaoqiuyuelaiyuegao,womenzaizuochanpinshejideshihoubujinyaozhengquedeshixianchanpingongneng,tongshiyexuyaotongguoyixiegongnenganquanrenzheng,birujiadianxingyedeIEC60730等或者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
熱門搜索



