国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

TMS570的ECC邏輯自診斷機制與實現(xiàn)方法

2017-11-24 11:53,
關(guān)鍵詞:寄存器校驗比特

,

(南京康尼機電股份有限公司,南京 210018)

TMS570的ECC邏輯自診斷機制與實現(xiàn)方法

劉騁程,宗凱

(南京康尼機電股份有限公司,南京 210018)

對TMS570的RAM ECC校驗邏輯、Flash ECC校驗邏輯、FMC ECC校驗邏輯和FEE ECC校驗邏輯設(shè)計了自診斷流程并給出了詳細實現(xiàn)方法,通過操作芯片內(nèi)部寄存器來故意制造ECC錯誤進行邏輯自診斷。在多種型號芯片上進行了在線測試與觀察,證明檢測成功,能夠有效地提高程序、數(shù)據(jù)的正確性和完整性,確保產(chǎn)品的安全性。

MCU;TMS570;ECC;自診斷;安全關(guān)鍵系統(tǒng)

引 言

安全關(guān)鍵系統(tǒng)(Safety Critical Systems,SCS)是指系統(tǒng)功能一旦失效將引起生命、財產(chǎn)的重大損失以及環(huán)境可能遭到嚴重破壞的系統(tǒng)。這類系統(tǒng)廣泛存在于航空航天、國防、交通運輸、核電能源和醫(yī)療衛(wèi)生等諸多安全關(guān)鍵領(lǐng)域中[1]。為了能夠保護SCS 的“大腦”MCU的程序和數(shù)據(jù),TMS570芯片使用了ECC校驗邏輯,而確保這些校驗邏輯的正確性成了最關(guān)鍵的問題。

國內(nèi)關(guān)于TMS570安全性能開發(fā)與設(shè)計的論文資料較匱乏,高校教材也都以TMS320系列芯片作為研究對象,近期筆者參與了高安全性產(chǎn)品(EN50128標準SIL4安全等級)的開發(fā),對TMS570芯片中的ECC校驗功能和自診斷邏輯進行了探究、測試以及實際運用,經(jīng)過測試,該自診斷流程可以識別、判斷芯片內(nèi)部ECC校驗邏輯是否正常,從而防患于未然,提高SCS產(chǎn)品的安全性能。

1 TMS570、位翻轉(zhuǎn)和ECC

1.1 TMS570

美國德州儀器(Texas Instruments,TI)是世界上知名的DSP芯片生產(chǎn)廠商,其產(chǎn)品應用也非常廣泛,TI公司生產(chǎn)的TMS320系列DSP芯片廣泛應用于很多領(lǐng)域。在國內(nèi)大部分企業(yè)都以TMS320LS28335/2812作為產(chǎn)品的主控芯片。隨著科技進步,系統(tǒng)復雜度越來越高[2],嵌入式產(chǎn)品的安全性能要求也更加被重視。2012年TI推出的HerculesTMS570安全微控制器可最大限度地提升故障檢測和緩解能力,其組件符合業(yè)界安全性標準,系統(tǒng)設(shè)計更容易通過 ISO 26262 和 IEC 61508 認證[3]。

1.2 位翻轉(zhuǎn)

位翻轉(zhuǎn)(Bit Flip)現(xiàn)象是指芯片最小存儲區(qū)的電平進行了跳變,一般是由高強度的集成電路電磁輻射造成的[4]。當FLASH比特位的電平錯誤跳變,程序運行將無法被預測,產(chǎn)品功能將受到影響[5]。

1.3 TMS570系列的ECC

一般芯片的數(shù)據(jù)錯誤校驗機制有兩種:奇偶校驗(Parity)和ECC(Error Correction Code),前者需要額外插入比特而且只能檢測單比特錯誤,而后者能糾正單比特錯誤和檢測雙比特錯誤[6],SECDED(Single Error Correction and Double Error Detection)是由硬件實現(xiàn)的能夠糾正單比特錯誤和檢測雙比特錯誤的模塊[7]。

2 ECC自檢測功能實現(xiàn)方法

2.1 檢測RAM的ECC校驗邏輯

執(zhí)行該操作時,RAM的硬件初始化已經(jīng)完成,RAM ECC的校驗需要被使能。

檢測TCRAM(Tightly Coupled RAM)的ECC校驗功能是否正常,其實就是檢測當RAM中某個數(shù)值和其對應的ECC碼不一致時,ECC邏輯是否能將錯誤檢測到并改正(單比特錯誤)。

由于無論RAM ECC是否使能,改變RAM區(qū)域的值,對應的ECC都會隨之更新,因此只能通過保持RAM值不變、篡改ECC的值來造成不一致。

測試單比特糾錯功能時,關(guān)閉ECC功能后,使能RAM ECC區(qū)域?qū)懭?,將某個ECC的值改變一個比特,然后重新使能ECC校驗邏輯,此時從對應的RAM區(qū)域讀數(shù)據(jù),如果ECC邏輯有效的話,錯誤狀態(tài)寄存器(RAMERRSTATUS)會檢測出單比特錯誤,并且錯誤的ECC碼將會自動被糾正。

與單比特邏輯檢測類似,雙比特錯誤檢測邏輯測試時,更改ECC碼的兩個比特位,然后讀取對應RAM,此時會造成data abort,程序跳轉(zhuǎn)回來之后可以查看錯誤狀態(tài)寄存器是否發(fā)現(xiàn)了雙比特錯誤(不可糾正錯誤),但是雙比特錯誤不像單比特錯誤,無法被自動糾正,為了后續(xù)程序的正常運行,需要手動將雙比特錯誤的ECC碼恢復。

RamB0單比特錯誤會被ESM組1的26通道捕獲到,多比特錯誤會直接進入異常中斷。RamB1單比特錯誤會被ESM組1的28通道捕獲到,多比特錯誤會直接進入異常中斷。

需要注意以下幾點:①RAM ECC必須要以64位方式訪問;②在ESM通道中斷處理函數(shù)中,需要每次將RAMOCCUR的值清0;③RAMERRSTATUS寄存器的BIT0:SERR每次也需要被寫1清除,否則后續(xù)單比特中斷錯誤無法產(chǎn)生;④可以將dabort.asm里面的str r2,[r1, #0x10]和str r2, [r12]注釋掉,這兩句代碼分別清除RAM錯誤狀態(tài)寄存器和ESM模塊不可糾正RAM ECC錯誤標志;⑤由于雙比特錯誤沒法被糾正,因此需要手動將改變過的ECC值恢復,并且在測試程序結(jié)尾需要將正確的數(shù)據(jù)重新寫入到RAM上。

2.2 CPU對FLASH訪問的ECC錯誤檢測邏輯自測試

檢查CPU內(nèi)的ECC邏輯是否正常,CPU內(nèi)的ECC邏輯檢測有7種模式:ECC數(shù)據(jù)糾正模式(模式1)、ECC校驗子報告模式(模式2)、ECC故障測試模式1(模式3)、ECC故障測試模式2(模式4)、地址標簽測試寄存器模式(模式5)、預留(模式6)和ECC數(shù)據(jù)糾正診斷模式(模式7)。

推薦使用閃存接口模塊的第7種診斷模式來制造一個單比特和雙比特的錯誤,故意制造ECC錯誤的機制是通過設(shè)置奇偶校驗重載(FPAR_OVR)寄存器里面DAT_INV_PAR字段(bit 0~7)的值來產(chǎn)生單比特或雙比特錯誤。在該診斷模式下,CPU會將正確的ECC校驗碼與DAT_INV_PAR進行異或運算并將結(jié)果返回。如果DAT_INV_PAR為0x01,從閃存的映像中讀取數(shù)據(jù)(一般從起始地址0x2000 0000U)會造成ECC單比特的錯誤。如果DAT_INV_PAR為0x03,則雙比特的錯誤會產(chǎn)生。

該自檢測函數(shù)同樣也是故意制造錯誤之后,查看錯誤狀態(tài)寄存器FEDACSTATUS,如果錯誤被檢測出來,說明CPU內(nèi)的ECC邏輯功能完好。同時ESM通道的狀態(tài)也會被檢測,如果ECC錯誤無法正確通知ESM,程序需要記錄這種故障。

需要注意以下幾點:

① FLASH的程序段和其對應的ECC碼分別存在兩個區(qū)域,ECC碼并不會自動生成,如果使能了ECC校驗而沒有生成ECC碼,程序?qū)⒃赺coreEnableFlashEcc_后,當執(zhí)行_errata_CORTEXR4_66_時跳轉(zhuǎn)到prefetch abort,因此需要勾選auto ecc generation選項。如果使用F021函數(shù)燒錄APP程序(Bootloader功能),在使用Fapi_issueProgrammingCommand庫函數(shù)燒錄程序時,第6個參數(shù)必須選Fapi_AutoEccGeneration,該枚舉值會對提供的程序自動計算生成對應的ECC值并且寫入到FLASH中。

② 從閃存上面讀取數(shù)據(jù)造成的雙比特錯誤將會產(chǎn)生數(shù)據(jù)終止的異常。數(shù)據(jù)終止的處理函數(shù)中會仔細尋找異常源,然后返回到造成該終止的代碼處繼續(xù)執(zhí)行后續(xù)代碼。此時為了后續(xù)程序的運行,str r2, [r1, #0x1C]和str r2, [r12]這兩個語句需要被注釋掉。

③ 為了保護程序段的數(shù)據(jù)在測試中不受影響,閃存映像區(qū)域在測試中會被使用。

④ 狀態(tài)寄存器FEDACSTATUS每次都需要被清0,否則錯誤事件會再次被觸發(fā),且由于該寄存器在內(nèi)部重置時不變,只有重新上電才會改變,所以在自檢測函數(shù)的最開始對其清0,進入主函數(shù)之前也需要對其清0。

2.3 檢查 FMC 內(nèi)的 ECC 邏輯

在閃存的OTP里面,有一段數(shù)據(jù)專門用來測試FMC的ECC功能。這些數(shù)據(jù)都是只讀的,地址段為F008 03F0h~F008 03FFh。FMC的ECC功能設(shè)置寄存器如圖1所示。

圖1 FMC的ECC功能設(shè)置寄存器

ECC會根據(jù)0x1234 5678 9ABC DEF0(校驗基準數(shù)據(jù))計算出ECC校驗碼,然后從地址讀取第一個64比特的數(shù)據(jù):0x1234 5678 9ABC DEF1,這個數(shù)據(jù)跟校驗基準數(shù)據(jù)只相差一個比特,所以讀取數(shù)據(jù)的時候,F(xiàn)MC應該會認為出現(xiàn)1比特ECC錯誤,這個比特應該是0但是讀出來是1,所以FEDACSTATUS寄存器的ERR_ZERO_ FLG字段會被置1,如果FMC沒有發(fā)現(xiàn)此錯誤,則認為FMC的ECC檢測單比特邏輯有問題,它喪失了校驗功能。后64比特的數(shù)據(jù)是0x1234 5678 9ABC DEF3,這個數(shù)據(jù)跟校驗基準數(shù)據(jù)相差了兩個比特,此時從該地址段讀取數(shù)據(jù),F(xiàn)MC應該會認為出現(xiàn)1比特ECC錯誤,如果FMC沒有發(fā)現(xiàn)比錯誤,則認為FMC的ECC檢測雙邏輯有問題,它喪失了校驗功能,此時自檢測模塊會觸發(fā)一個中斷。

注意執(zhí)行此檢測時,如果FMC中的ECC邏輯能檢測出單比特錯誤,ESM狀態(tài)寄存器組1通道6的標志會被設(shè)置,如果發(fā)現(xiàn)該標志沒有被設(shè)置,自檢測模塊會觸發(fā)一個中斷,當單比特檢測成功后,會執(zhí)行雙比特邏輯的檢測,如果錯誤不能被檢測出,自檢測模塊會觸發(fā)一個中斷。而ECC邏輯能檢測出錯誤,ESM狀態(tài)寄存器組3通道7的標志會被設(shè)置,如果發(fā)現(xiàn)標志沒有被設(shè)置,自檢測模塊會觸發(fā)一個中斷。注意如果此時使能了ESM中對應通道的中斷,中斷服務程序會被進入。一般在執(zhí)行自檢測時,ESM中斷未被使能。需要注意FlashECC只能以8位和16位方式訪問。

2.4 檢測FEE的ECC功能

推薦使用ECC數(shù)據(jù)糾錯模式(診斷模式1)來檢測FLASH模擬EEPROM的ECC校驗邏輯是否正常,在此模式下,F(xiàn)EE數(shù)據(jù)寄存器保存了64位FEE數(shù)據(jù),F(xiàn)EE地址寄存器保存了19位的FEE地址,F(xiàn)EE ECC碼寄存器保存了8位的ECC碼。當數(shù)據(jù)和地址寄存器的值被改寫的時候,ECC碼寄存器里面的值會被更新,意味著新的ECC碼會被計算出來并保存在ECC碼寄存器里面。開發(fā)人員可以將某個數(shù)據(jù)的ECC碼保存下來(記為正確的ECC碼),然后改變數(shù)據(jù)寄存器里面的某一位,此時新的ECC碼已經(jīng)更新,然后將正確的ECC碼寫入該寄存器,此時數(shù)據(jù)和ECC碼對應的數(shù)據(jù)正好相差了一個比特,此時觸發(fā)診斷,F(xiàn)EE的ECC邏輯根據(jù)數(shù)據(jù)和地址計算出ECC碼,然后跟ECC碼寄存器里面的碼比較,由于故意改寫ECC碼,兩個現(xiàn)在是不匹配的,狀態(tài)寄存器(EE_STATUS)的EE_ERR_PRF_FLG字段將會置1,此時可以得知ECC邏輯可以檢測出FEE上面的單比特錯誤。雙比特錯誤同理。

首先通過配置EEPROM模擬錯誤糾正控制寄存器2(EE_CTRL2)的值為1,來設(shè)定ESM中斷(組1通道35)產(chǎn)生前允許出現(xiàn)SEC (single error correction)的閾值。當其為0時,中斷永遠不會被觸發(fā),此時其值被設(shè)置成1,這樣每當EEPROM上面檢測出一個單比特ECC錯誤時,ESM中斷就會被處罰,依此類推。

接下來,通過配置EEPROM模擬錯誤糾正控制寄存器1(EECTRL1)的EE_EPEN(bit8)為1,來使能EEPROM模擬錯誤剖析模式。

之后通過配置3個寄存器來產(chǎn)生與EEPROM對應的ECC碼。將EEPROM(bank7)的起始地址(0xF020 0000U)賦值給EEPROM模擬地址寄存器(FEMU_ADDR),將數(shù)據(jù)MSW寄存器(FEMU_DMSW)和數(shù)據(jù)LSW寄存器(FEMU_DLSW)清空。將產(chǎn)生的ECC碼從ECC寄存器(FEMU_ECC)中讀取出來,并將FEMU_DLSW改寫成1,這樣可以人為地造成單比特錯誤。

將診斷控制寄存器(FDIAGCTRL)中的DIAG_MODE字段設(shè)置成1,這樣診斷模式就處于ECC數(shù)據(jù)糾錯模式,將DIAG_ECC_SEL(12~14)字段設(shè)置成5h,選擇FEE 的SECDED邏輯來做診斷測試。然后通過將DIAG_EN_KEY(16~19)的值設(shè)置為5h來使能診斷模式,將DIAG_TRIG(bit 24)的值置1來激活診斷邏輯。

通過以上配置,此時錯誤狀態(tài)寄存器(EE_STATUS)的EE_ERR_PRF_FLG(bit 0)字段應該為1,表示一個可糾正的錯誤被檢測出。反之證明EEPROM的ECC功能失效。如果EEPROM的ECC能檢測到這個錯誤,則ESM狀態(tài)寄存器(組1通道35)會被查看,來判斷EEPROM單比特錯誤的信號能否被ESM捕獲。如果不能,則認為該ECC邏輯失效無法通知ESM。到此單比特檢測就全部結(jié)束了,EE_STATUS(錯誤狀態(tài)寄存器)的錯誤狀態(tài)比特需要被寫1來清除,寫0沒有效果,因此在自檢測的時候,可以將該寄存器的值直接賦值給該寄存器。

雙比特檢測與上面步驟基本相似,除了將FEMU_DLSW賦值為3,而同樣如果ESM(組1通道36)的雙比特錯誤的信號不能被捕獲,則認為該ECC邏輯失效,無法通知ESM。不可糾正錯誤地址寄存器(EE_UNC_ERR_ADD)將會記錄錯誤的地址。

需要注意以下幾點:

① 每種錯誤都有兩個錯誤標志字段,當單比特錯誤能被檢測出來時,狀態(tài)寄存器的EE_ERR_PRF_FLG和EE_D_COR_ERR字段都被置1,而根據(jù)將數(shù)據(jù)的比特位從0改成1或者從1改成0,EE_ERR_ZERO_FLG和EE_ERR_ONE_FLG分別會被置1,而對于雙比特錯誤,EE_UNC_ERR和EE_D_UNC_ERR字段會被置1。

② 發(fā)生單比特錯誤時,診斷觸發(fā)之后,ECC碼會被改正,但是發(fā)生雙比特錯誤時,ECC碼無法自動糾正、必須將地址、數(shù)據(jù)、ECC碼寄存器恢復到初始值,這個操作必須在退出診斷模式之后進行。

③ ECC碼是根據(jù)數(shù)據(jù)和地址計算出來的,每當數(shù)據(jù)高低寄存器被改寫的時候,F(xiàn)lash wrapper會返回正確的ECC碼到ECC寄存器,地址寄存器也會被加入計算,地址寄存器要在數(shù)據(jù)寄存器之前賦值。

④ 可糾正錯誤位置寄存器EECORRERRPOS和可糾正錯誤地址寄存器EECORRERRADD分別表示當前單比特錯誤發(fā)生在哪一位和數(shù)據(jù)的地址,同樣不可糾正錯誤地址寄存器也能表示出多比特錯誤發(fā)生的地址。

結(jié) 語

[1] 楊仕平,熊光澤,桑楠.安全關(guān)鍵系統(tǒng)的防危性技術(shù)研究[J].電子科技大學學報,2003,32(2):164-168.

[2] Y S V B Nicolescu.Software detection mechanisms providing full coverage against single bit-flip faults[J].IEEE TRANSACTIONS ON NUCLEAR SCIENCE,2004(12):3510-3518.

[3] TI推出新型Hercules TMS570 ARM安全微控制器[J].單片機與嵌入式系統(tǒng)應用,2012(12):88.

[4] TP Ma,PV Dussendorfer.Ionizing Radiation Effects in MOS Devices[J].Materialsence,1989.

[5] HYPERLINK Eighth IEEE International On-line Testing Workshop,2002:117.

[6] TEXAS INSTRUMENTS.ECC Handling in TMSx70-Based Microcontrollers,2011.

[7] TEXAS INSTRUMENTS.TMS570LS09x/07x 16/32-Bit RISC Flash Microcontroller Technical Reference Manual,2014.

ECCLogicSelf-diagnosisMechanismandRealizationMethodBasedonTMS570

LiuChengcheng,ZongKai

(Nanjing Kangni Mechanicaland Electronical Co.,Ltd.,Nanjing 210018,China)

A self-diagnosis procedure of ECC detection logic and protection mechanism targeting TMS570 is designed,which included RAM, Flash,FMC and FEE regions.By configuring the MCU internal registers,ECC error can be created intentionally.Then,the logic can be self-diagnosed.This approach is proved to be effective by online test and observation.This method can dramatically improve the validity and integrity of program and data,in addition,the safety of product can be guaranteed.

MCU;TMS570;ECC;self-diagnosis;safety critical systems

TP311.1

A

2017-07-27)

猜你喜歡
寄存器校驗比特
STM32和51單片機寄存器映射原理異同分析
Lite寄存器模型的設(shè)計與實現(xiàn)
爐溫均勻性校驗在鑄鍛企業(yè)的應用
比特幣還能投資嗎
比特幣分裂
比特幣一年漲135%重回5530元
大型電動機高阻抗差動保護穩(wěn)定校驗研究
基于加窗插值FFT的PMU校驗方法
鍋爐安全閥在線校驗不確定度評定
多個超導磁通量子比特的可控耦合