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

?

DSP錯(cuò)誤檢測(cè)與糾正功能在基站中的應(yīng)用

2014-03-12 18:10:11鄭曉東楊潤(rùn)豐卞建勇盧蕓
現(xiàn)代電子技術(shù) 2014年5期

鄭曉東 楊潤(rùn)豐 卞建勇 盧蕓

摘 要: 通信系統(tǒng)要求高穩(wěn)定性,但外部惡劣的電磁環(huán)境會(huì)導(dǎo)致基帶板所使用DSP中的存儲(chǔ)器發(fā)生單粒子翻轉(zhuǎn)(SEU),從而導(dǎo)致系統(tǒng)異常復(fù)位。針對(duì)該問(wèn)題,著重介紹了如何應(yīng)用DSP的錯(cuò)誤檢測(cè)與糾正(EDAC)功能,以及如何解決EDAC應(yīng)用與cache操作之間的沖突。通過(guò)實(shí)際應(yīng)用,基站出現(xiàn)SEU異常的機(jī)率明顯降低,系統(tǒng)穩(wěn)定性得到提高。

關(guān)鍵詞: 錯(cuò)誤檢測(cè)與糾正; 單粒子翻轉(zhuǎn); 基帶板; 高速緩存

中圖分類號(hào): TN710?34; TP368.1 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2014)05?0047?03

0 引 言

目前無(wú)線通信應(yīng)用極為廣泛,為了提高通信質(zhì)量和覆蓋區(qū)域,需要在不同的地區(qū)建立基站。在一些電磁環(huán)境比較惡劣的地點(diǎn)[1],或者受外部輻射影響[2],基站中的一些大規(guī)模集成電路常常會(huì)受到干擾,導(dǎo)致不能正常工作。德州儀器(TI)C64x+DSP在通信系統(tǒng)的基帶單板上具有廣泛應(yīng)用,在實(shí)際使用中,基帶板偶爾會(huì)出現(xiàn)異常復(fù)位,通過(guò)排查發(fā)現(xiàn)其中有些復(fù)位的原因是由于程序空間或數(shù)據(jù)空間的某個(gè)位發(fā)生了翻轉(zhuǎn),導(dǎo)致指令改寫或是所使用的數(shù)據(jù)錯(cuò)誤,最終導(dǎo)致程序跑飛或資源沖突異常而復(fù)位。為了能夠?qū)ξ诲e(cuò)誤的異常進(jìn)行檢測(cè)和處理,引入了EDAC功能來(lái)提高系統(tǒng)的可靠性。

本文TI公司生產(chǎn)的C64x+系列DSP中的EDAC基本原理與其他芯片EDAC的實(shí)現(xiàn)原理相類似,均是以漢明碼為基礎(chǔ)實(shí)現(xiàn)糾檢錯(cuò)功能[2?6],但也具有其自身的特點(diǎn),首先對(duì)該DSP芯片的EDAC功能做一個(gè)簡(jiǎn)要介紹。

1 C64x+EDAC功能說(shuō)明

EDAC是TI C64x+DSP提供的用來(lái)對(duì)L1P和L2空間進(jìn)行錯(cuò)誤檢測(cè)和糾正的一項(xiàng)功能,該功能主要用來(lái)保護(hù)程序空間和不經(jīng)常更新的數(shù)據(jù)空間。當(dāng)對(duì)L1P、L2空間進(jìn)行讀操作時(shí),可以通過(guò)該功能來(lái)檢查此次讀取的數(shù)據(jù)是否發(fā)生某位錯(cuò)誤的異常。如果發(fā)生了,則該功能可以對(duì)L1P空間的1位翻轉(zhuǎn)進(jìn)行檢測(cè);對(duì)L2 空間的1位的翻轉(zhuǎn)進(jìn)行檢測(cè)與糾正,但多位的翻轉(zhuǎn)無(wú)法進(jìn)行糾正,但是可以通過(guò)中斷事件通知CPU,CPU采取相應(yīng)的策略來(lái)降低基帶單板復(fù)位的風(fēng)險(xiǎn)。

在DSP上電時(shí)EDAC功能是未使能的。當(dāng)錯(cuò)誤檢測(cè)邏輯未使能時(shí),對(duì)L1P、L2的寫操作將導(dǎo)致相關(guān)的有效位(valid bit)被清0??梢酝ㄟ^(guò)對(duì)寄存器設(shè)置來(lái)使能L1P、L2的錯(cuò)誤檢測(cè)功能,同時(shí)也可以設(shè)置檢測(cè)L2空間的范圍。使能后,在寫操作的地址為256 b對(duì)齊,且數(shù)據(jù)長(zhǎng)度為256 b時(shí),將更新位于L2 RAM中存儲(chǔ)的校驗(yàn)位和有效位,如果寫操作的數(shù)據(jù)小于256 b,則更新校驗(yàn)位RAM空間相應(yīng)的有效位表明為“無(wú)效校驗(yàn)位” [7?8]。

DSP通過(guò)漢明碼來(lái)檢查256 b內(nèi)的多位錯(cuò)誤和糾正單位錯(cuò)誤。在使能了EDAC功能后,CPU每次在對(duì)L1P、L2空間進(jìn)行讀操作時(shí),都會(huì)進(jìn)行錯(cuò)誤檢測(cè),并且所有的讀操作都是256 b對(duì)齊。但在通過(guò)DMA/IDMA對(duì)L1P進(jìn)行讀操作時(shí),只有當(dāng)讀取的數(shù)據(jù)大小為256 b或256 b的整數(shù)倍時(shí),才會(huì)進(jìn)行EDAC的檢測(cè)。圖1是錯(cuò)誤檢測(cè)的邏輯,從該邏輯圖中可以看到,錯(cuò)誤檢測(cè)時(shí)先將讀到的256 b數(shù)據(jù)進(jìn)行逐位異或計(jì)算的校驗(yàn)位與寫操作時(shí)保存在L2 RAM中的校驗(yàn)位進(jìn)行異或比較,然后與有效位進(jìn)行與操作,即最終的結(jié)果是由有效位和校驗(yàn)位來(lái)共同決定的。

當(dāng)在進(jìn)行讀取或DMA/IDMA讀訪問(wèn)時(shí)檢測(cè)到位翻轉(zhuǎn)異常,則會(huì)輸出相應(yīng)的異常。L1P產(chǎn)生一種異常,L2空間能夠產(chǎn)生兩種異常,通過(guò)中斷處理器交給CPU進(jìn)行異常處理。

2 EDAC功能實(shí)現(xiàn)

在調(diào)試EDAC功能的過(guò)程中,發(fā)現(xiàn)會(huì)發(fā)生SEU錯(cuò)誤誤報(bào)的問(wèn)題,通過(guò)定位和分析,確定與L2 cache 一致性(coherence)操作有關(guān),通過(guò)與TI溝通,確認(rèn)芯片的EDAC存在一個(gè)缺陷,最終TI發(fā)布了勘誤表并給出了具體的原因和規(guī)避方法。

產(chǎn)生該問(wèn)題的原因是:當(dāng)L2在進(jìn)行cache 一致性操作時(shí),如果在操作完成之前,CPU的操作產(chǎn)生L1d cache victim,那么L1d victim操作會(huì)錯(cuò)誤地將L1d EDAC的有效位置為1,導(dǎo)致CPU在從L1d進(jìn)行讀操作時(shí)EDAC會(huì)對(duì)L1d空間進(jìn)行檢測(cè),而之前L1d空間并沒(méi)有生成校驗(yàn)數(shù)據(jù),從而使得EDAC錯(cuò)誤的上報(bào)EDAC檢測(cè)到異常(雖然EDAC文檔中說(shuō)其不監(jiān)測(cè)L1D空間,但是EDAC相關(guān)的有效位,校驗(yàn)位仍存在,只是沒(méi)有去使用)。如果在cache操作的過(guò)程中存在CPU的操作,或者在cache操作的時(shí)候有中斷發(fā)生而進(jìn)入中斷響應(yīng)函數(shù),這些都會(huì)導(dǎo)致產(chǎn)生L1d cache victim[9]。

2.1 EDAC缺陷的規(guī)避方法

根據(jù)TI提供的解決方法和DSP使用cache的實(shí)際情況,通過(guò)以下方法來(lái)進(jìn)行規(guī)避。首先在所有的cache操作之前進(jìn)行中斷屏蔽,其次使用cache操作的匯編函數(shù)來(lái)避免cache操作本身產(chǎn)生L1d victim。在使用中斷屏蔽時(shí),要注意cache操作的數(shù)據(jù)長(zhǎng)度,如果數(shù)據(jù)長(zhǎng)度過(guò)長(zhǎng)的話,為了避免中斷屏蔽時(shí)間過(guò)長(zhǎng),需要對(duì)cache維護(hù)的空間進(jìn)行分段cache操作,然后對(duì)各個(gè)小段進(jìn)行中斷屏蔽,這樣其他的中斷仍可以在各個(gè)小段之間被響應(yīng)。

2.2 EDAC功能初始化

在初始化過(guò)程中,基本過(guò)程為:

(1) 使用IDMA來(lái)擦除(scrub) L2 RAM空間,目的是將該空間對(duì)應(yīng)的EDAC有效位設(shè)為0(因?yàn)榇藭r(shí)EDAC功能還沒(méi)有開(kāi)啟);

(2) 清除L1p、L2的EDAC錯(cuò)誤狀態(tài);

(3) 使能EDAC,并且設(shè)置EDAC監(jiān)測(cè)的L2 RAM范圍;

(4) 再次通過(guò)IDMA來(lái)擦除L2 RAM空間,目的是生成有效位和校驗(yàn)位,第一次進(jìn)行的操作由于還沒(méi)有使能EDAC功能,因此有效位為0,這樣就能保證EDAC使能后,第二次scrub操作時(shí),由于有效位為0而不會(huì)進(jìn)行EDAC的檢測(cè)。如果僅僅是在EDAC使能后進(jìn)行scrub操作,那么可能會(huì)由于某些地址的有效位為1(第一次為隨機(jī)值)而產(chǎn)生校驗(yàn)錯(cuò)誤。

(5) 再次清除EDAC錯(cuò)誤狀態(tài);

注意:scrub的時(shí)候不要對(duì)L2 cache空間進(jìn)行操作,同時(shí)配置檢測(cè)空間時(shí)也不要配置L2 cache空間,cache空間EDAC會(huì)自動(dòng)進(jìn)行維護(hù),不需要軟件介入。

在初始化過(guò)程中可以利用TI CSL庫(kù)中提供的EDAC相關(guān)的函數(shù),例如CSL_edcDisable()、CSL_edcEnable()、CSL_edcPageEnable()等函數(shù)來(lái)提高軟件開(kāi)發(fā)速度。

2.3 EDAC中斷處理

對(duì)于EDAC中斷響應(yīng)函數(shù)。EDAC會(huì)產(chǎn)生三種類型的事件,如表1所示,分別是L1p 1位翻轉(zhuǎn),L2 1位翻轉(zhuǎn)以及L2 多位翻轉(zhuǎn),這三個(gè)事件可以通過(guò)ECM路由到同一個(gè)中斷,或者每個(gè)事件直接路由到某個(gè)可屏蔽中斷。這個(gè)可以根據(jù)實(shí)時(shí)性需要,以及當(dāng)前剩余可用可屏蔽中斷個(gè)數(shù)來(lái)決定。

下面說(shuō)明各種類型EDAC異常的處理方式。

(1) 對(duì)于L2 多位翻轉(zhuǎn)(機(jī)率很低),EDAC也無(wú)能為力,遇到這種情況,可以直接上報(bào)嚴(yán)重告警,并復(fù)位DSP來(lái)解決。

(2) 對(duì)于L1p 的1 b翻轉(zhuǎn),糾正過(guò)程是:首先清除掉EDAC的所有錯(cuò)誤狀態(tài)的標(biāo)志位;然后進(jìn)行糾正,由于通常L1p全部設(shè)置為cache空間,所以對(duì)于L1p的糾正,只需要進(jìn)行cache的invalidate操作即可,即從L2的代碼段空間重新讀取正確的代碼數(shù)據(jù),invalidate操作的起始地址為EDAC檢測(cè)到的錯(cuò)誤地址,長(zhǎng)度為L(zhǎng)1p cache line。

(3)對(duì)于L2的1 b翻轉(zhuǎn),糾正過(guò)程是:首先清除掉EDAC的所有錯(cuò)誤狀態(tài)的標(biāo)志位,如果對(duì)DSP代碼段進(jìn)行了內(nèi)存保護(hù),而糾正過(guò)程會(huì)有回寫糾正的操作,則需要在糾正代碼段之前先將當(dāng)前檢測(cè)到的錯(cuò)誤地址所在頁(yè)(page)的內(nèi)存保護(hù)取消,然后進(jìn)行糾正,糾正的操作很簡(jiǎn)單只要對(duì)錯(cuò)誤地址進(jìn)行“讀—回寫”操作,EDAC硬件模塊就會(huì)自動(dòng)完成,例如:EdacAddr是檢測(cè)到的錯(cuò)誤地址,32字節(jié)對(duì)齊的,則可以使用IDMA進(jìn)行讀寫操作來(lái)進(jìn)行糾正。

中斷響應(yīng)函數(shù)處理的速度越快越好,如果ISR消耗的時(shí)間過(guò)長(zhǎng),可能會(huì)對(duì)后續(xù)代碼的運(yùn)行造成影響。對(duì)于1位的錯(cuò)誤其實(shí)完全可以不進(jìn)中斷來(lái)糾正原始的代碼,因?yàn)樵谧x取的時(shí)候發(fā)現(xiàn)的1位翻轉(zhuǎn)在交給CPU的時(shí)候已經(jīng)是糾正后正確的值了,如果需要糾正L2中的數(shù)據(jù),那么可以在中斷中post一個(gè)信號(hào)量,然后在CPU空閑的時(shí)候來(lái)糾正L2原始數(shù)據(jù)。

3 結(jié) 語(yǔ)

隨著芯片集成度的增加,以及各類電子系統(tǒng)工作的電磁環(huán)境的日益惡化,各類芯片發(fā)生單粒子翻轉(zhuǎn)錯(cuò)誤的可能性也在增加。因此越來(lái)越多的高性能DSP提供了EDAC功能,但之前并未見(jiàn)應(yīng)用DSP EDAC功能應(yīng)用的介紹。該文針對(duì)TI DSP的EDAC功能給出了具體使用方法,并且對(duì)TI DSP EDAC功能的缺陷給出了規(guī)避方法。目前該功能已正式在基站的基帶板中應(yīng)用,在1 000多個(gè)基站出現(xiàn)SEU異常的次數(shù)由原來(lái)的每月1~2例,減少到6個(gè)月未發(fā)現(xiàn)1例,系統(tǒng)穩(wěn)定性得到提高。

參考資料

[1] 李飛,張志敏,王巖飛.錯(cuò)誤檢測(cè)與糾正電路的設(shè)計(jì)與實(shí)現(xiàn)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2003(2):34?39.

[2] 張路,賀興華,盧煥章.空間DSP加載系統(tǒng)可靠性設(shè)計(jì)[J].計(jì)算機(jī)工程,2010,36(5):15?17.

[3] 龔銳,陳微,劉芳,等.FT51:一種容軟錯(cuò)誤高可靠微控制器[J].計(jì)算機(jī)學(xué)報(bào),2007,30(10):1662?1673.

[4] 薛挺,張開(kāi)峰,張哲.基于漢明碼的32位數(shù)據(jù)糾錯(cuò)電路設(shè)計(jì)[J].空間電子技術(shù),2010(2):67?70.

[5] 林博.存儲(chǔ)芯片糾檢錯(cuò)電路設(shè)計(jì)與FPGA實(shí)現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2007.

[6] 陳微.高可靠性微處理器設(shè)計(jì)關(guān)鍵技術(shù)研究與實(shí)現(xiàn)[D].長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué),2006.

[7] Texas Instruments. Error detection and correction (EDC) mechanism of C64x+ memories [M]. USA: Texas Instruments, 2010.

[8] Texas Instruments. TMS320C66x DSP CorePac user′s guide [EB/OL]. [[2011?07?07].] http://www.ti.com/lit/ug/sprugw0b/sprugw0b.

[9] Texas Instruments. TMS320TCI6487/8 digital signal processor silicon revisions 2.1, 2.0, 1.3, 1.2, 1.1, 1.0 [EB/OL]. [2011?03?12].http://www.ti.com/lit/er/sprz248h/sprz248h.pdf.

(5) 再次清除EDAC錯(cuò)誤狀態(tài);

注意:scrub的時(shí)候不要對(duì)L2 cache空間進(jìn)行操作,同時(shí)配置檢測(cè)空間時(shí)也不要配置L2 cache空間,cache空間EDAC會(huì)自動(dòng)進(jìn)行維護(hù),不需要軟件介入。

在初始化過(guò)程中可以利用TI CSL庫(kù)中提供的EDAC相關(guān)的函數(shù),例如CSL_edcDisable()、CSL_edcEnable()、CSL_edcPageEnable()等函數(shù)來(lái)提高軟件開(kāi)發(fā)速度。

2.3 EDAC中斷處理

對(duì)于EDAC中斷響應(yīng)函數(shù)。EDAC會(huì)產(chǎn)生三種類型的事件,如表1所示,分別是L1p 1位翻轉(zhuǎn),L2 1位翻轉(zhuǎn)以及L2 多位翻轉(zhuǎn),這三個(gè)事件可以通過(guò)ECM路由到同一個(gè)中斷,或者每個(gè)事件直接路由到某個(gè)可屏蔽中斷。這個(gè)可以根據(jù)實(shí)時(shí)性需要,以及當(dāng)前剩余可用可屏蔽中斷個(gè)數(shù)來(lái)決定。

下面說(shuō)明各種類型EDAC異常的處理方式。

(1) 對(duì)于L2 多位翻轉(zhuǎn)(機(jī)率很低),EDAC也無(wú)能為力,遇到這種情況,可以直接上報(bào)嚴(yán)重告警,并復(fù)位DSP來(lái)解決。

(2) 對(duì)于L1p 的1 b翻轉(zhuǎn),糾正過(guò)程是:首先清除掉EDAC的所有錯(cuò)誤狀態(tài)的標(biāo)志位;然后進(jìn)行糾正,由于通常L1p全部設(shè)置為cache空間,所以對(duì)于L1p的糾正,只需要進(jìn)行cache的invalidate操作即可,即從L2的代碼段空間重新讀取正確的代碼數(shù)據(jù),invalidate操作的起始地址為EDAC檢測(cè)到的錯(cuò)誤地址,長(zhǎng)度為L(zhǎng)1p cache line。

(3)對(duì)于L2的1 b翻轉(zhuǎn),糾正過(guò)程是:首先清除掉EDAC的所有錯(cuò)誤狀態(tài)的標(biāo)志位,如果對(duì)DSP代碼段進(jìn)行了內(nèi)存保護(hù),而糾正過(guò)程會(huì)有回寫糾正的操作,則需要在糾正代碼段之前先將當(dāng)前檢測(cè)到的錯(cuò)誤地址所在頁(yè)(page)的內(nèi)存保護(hù)取消,然后進(jìn)行糾正,糾正的操作很簡(jiǎn)單只要對(duì)錯(cuò)誤地址進(jìn)行“讀—回寫”操作,EDAC硬件模塊就會(huì)自動(dòng)完成,例如:EdacAddr是檢測(cè)到的錯(cuò)誤地址,32字節(jié)對(duì)齊的,則可以使用IDMA進(jìn)行讀寫操作來(lái)進(jìn)行糾正。

中斷響應(yīng)函數(shù)處理的速度越快越好,如果ISR消耗的時(shí)間過(guò)長(zhǎng),可能會(huì)對(duì)后續(xù)代碼的運(yùn)行造成影響。對(duì)于1位的錯(cuò)誤其實(shí)完全可以不進(jìn)中斷來(lái)糾正原始的代碼,因?yàn)樵谧x取的時(shí)候發(fā)現(xiàn)的1位翻轉(zhuǎn)在交給CPU的時(shí)候已經(jīng)是糾正后正確的值了,如果需要糾正L2中的數(shù)據(jù),那么可以在中斷中post一個(gè)信號(hào)量,然后在CPU空閑的時(shí)候來(lái)糾正L2原始數(shù)據(jù)。

3 結(jié) 語(yǔ)

隨著芯片集成度的增加,以及各類電子系統(tǒng)工作的電磁環(huán)境的日益惡化,各類芯片發(fā)生單粒子翻轉(zhuǎn)錯(cuò)誤的可能性也在增加。因此越來(lái)越多的高性能DSP提供了EDAC功能,但之前并未見(jiàn)應(yīng)用DSP EDAC功能應(yīng)用的介紹。該文針對(duì)TI DSP的EDAC功能給出了具體使用方法,并且對(duì)TI DSP EDAC功能的缺陷給出了規(guī)避方法。目前該功能已正式在基站的基帶板中應(yīng)用,在1 000多個(gè)基站出現(xiàn)SEU異常的次數(shù)由原來(lái)的每月1~2例,減少到6個(gè)月未發(fā)現(xiàn)1例,系統(tǒng)穩(wěn)定性得到提高。

參考資料

[1] 李飛,張志敏,王巖飛.錯(cuò)誤檢測(cè)與糾正電路的設(shè)計(jì)與實(shí)現(xiàn)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2003(2):34?39.

[2] 張路,賀興華,盧煥章.空間DSP加載系統(tǒng)可靠性設(shè)計(jì)[J].計(jì)算機(jī)工程,2010,36(5):15?17.

[3] 龔銳,陳微,劉芳,等.FT51:一種容軟錯(cuò)誤高可靠微控制器[J].計(jì)算機(jī)學(xué)報(bào),2007,30(10):1662?1673.

[4] 薛挺,張開(kāi)峰,張哲.基于漢明碼的32位數(shù)據(jù)糾錯(cuò)電路設(shè)計(jì)[J].空間電子技術(shù),2010(2):67?70.

[5] 林博.存儲(chǔ)芯片糾檢錯(cuò)電路設(shè)計(jì)與FPGA實(shí)現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2007.

[6] 陳微.高可靠性微處理器設(shè)計(jì)關(guān)鍵技術(shù)研究與實(shí)現(xiàn)[D].長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué),2006.

[7] Texas Instruments. Error detection and correction (EDC) mechanism of C64x+ memories [M]. USA: Texas Instruments, 2010.

[8] Texas Instruments. TMS320C66x DSP CorePac user′s guide [EB/OL]. [[2011?07?07].] http://www.ti.com/lit/ug/sprugw0b/sprugw0b.

[9] Texas Instruments. TMS320TCI6487/8 digital signal processor silicon revisions 2.1, 2.0, 1.3, 1.2, 1.1, 1.0 [EB/OL]. [2011?03?12].http://www.ti.com/lit/er/sprz248h/sprz248h.pdf.

(5) 再次清除EDAC錯(cuò)誤狀態(tài);

注意:scrub的時(shí)候不要對(duì)L2 cache空間進(jìn)行操作,同時(shí)配置檢測(cè)空間時(shí)也不要配置L2 cache空間,cache空間EDAC會(huì)自動(dòng)進(jìn)行維護(hù),不需要軟件介入。

在初始化過(guò)程中可以利用TI CSL庫(kù)中提供的EDAC相關(guān)的函數(shù),例如CSL_edcDisable()、CSL_edcEnable()、CSL_edcPageEnable()等函數(shù)來(lái)提高軟件開(kāi)發(fā)速度。

2.3 EDAC中斷處理

對(duì)于EDAC中斷響應(yīng)函數(shù)。EDAC會(huì)產(chǎn)生三種類型的事件,如表1所示,分別是L1p 1位翻轉(zhuǎn),L2 1位翻轉(zhuǎn)以及L2 多位翻轉(zhuǎn),這三個(gè)事件可以通過(guò)ECM路由到同一個(gè)中斷,或者每個(gè)事件直接路由到某個(gè)可屏蔽中斷。這個(gè)可以根據(jù)實(shí)時(shí)性需要,以及當(dāng)前剩余可用可屏蔽中斷個(gè)數(shù)來(lái)決定。

下面說(shuō)明各種類型EDAC異常的處理方式。

(1) 對(duì)于L2 多位翻轉(zhuǎn)(機(jī)率很低),EDAC也無(wú)能為力,遇到這種情況,可以直接上報(bào)嚴(yán)重告警,并復(fù)位DSP來(lái)解決。

(2) 對(duì)于L1p 的1 b翻轉(zhuǎn),糾正過(guò)程是:首先清除掉EDAC的所有錯(cuò)誤狀態(tài)的標(biāo)志位;然后進(jìn)行糾正,由于通常L1p全部設(shè)置為cache空間,所以對(duì)于L1p的糾正,只需要進(jìn)行cache的invalidate操作即可,即從L2的代碼段空間重新讀取正確的代碼數(shù)據(jù),invalidate操作的起始地址為EDAC檢測(cè)到的錯(cuò)誤地址,長(zhǎng)度為L(zhǎng)1p cache line。

(3)對(duì)于L2的1 b翻轉(zhuǎn),糾正過(guò)程是:首先清除掉EDAC的所有錯(cuò)誤狀態(tài)的標(biāo)志位,如果對(duì)DSP代碼段進(jìn)行了內(nèi)存保護(hù),而糾正過(guò)程會(huì)有回寫糾正的操作,則需要在糾正代碼段之前先將當(dāng)前檢測(cè)到的錯(cuò)誤地址所在頁(yè)(page)的內(nèi)存保護(hù)取消,然后進(jìn)行糾正,糾正的操作很簡(jiǎn)單只要對(duì)錯(cuò)誤地址進(jìn)行“讀—回寫”操作,EDAC硬件模塊就會(huì)自動(dòng)完成,例如:EdacAddr是檢測(cè)到的錯(cuò)誤地址,32字節(jié)對(duì)齊的,則可以使用IDMA進(jìn)行讀寫操作來(lái)進(jìn)行糾正。

中斷響應(yīng)函數(shù)處理的速度越快越好,如果ISR消耗的時(shí)間過(guò)長(zhǎng),可能會(huì)對(duì)后續(xù)代碼的運(yùn)行造成影響。對(duì)于1位的錯(cuò)誤其實(shí)完全可以不進(jìn)中斷來(lái)糾正原始的代碼,因?yàn)樵谧x取的時(shí)候發(fā)現(xiàn)的1位翻轉(zhuǎn)在交給CPU的時(shí)候已經(jīng)是糾正后正確的值了,如果需要糾正L2中的數(shù)據(jù),那么可以在中斷中post一個(gè)信號(hào)量,然后在CPU空閑的時(shí)候來(lái)糾正L2原始數(shù)據(jù)。

3 結(jié) 語(yǔ)

隨著芯片集成度的增加,以及各類電子系統(tǒng)工作的電磁環(huán)境的日益惡化,各類芯片發(fā)生單粒子翻轉(zhuǎn)錯(cuò)誤的可能性也在增加。因此越來(lái)越多的高性能DSP提供了EDAC功能,但之前并未見(jiàn)應(yīng)用DSP EDAC功能應(yīng)用的介紹。該文針對(duì)TI DSP的EDAC功能給出了具體使用方法,并且對(duì)TI DSP EDAC功能的缺陷給出了規(guī)避方法。目前該功能已正式在基站的基帶板中應(yīng)用,在1 000多個(gè)基站出現(xiàn)SEU異常的次數(shù)由原來(lái)的每月1~2例,減少到6個(gè)月未發(fā)現(xiàn)1例,系統(tǒng)穩(wěn)定性得到提高。

參考資料

[1] 李飛,張志敏,王巖飛.錯(cuò)誤檢測(cè)與糾正電路的設(shè)計(jì)與實(shí)現(xiàn)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2003(2):34?39.

[2] 張路,賀興華,盧煥章.空間DSP加載系統(tǒng)可靠性設(shè)計(jì)[J].計(jì)算機(jī)工程,2010,36(5):15?17.

[3] 龔銳,陳微,劉芳,等.FT51:一種容軟錯(cuò)誤高可靠微控制器[J].計(jì)算機(jī)學(xué)報(bào),2007,30(10):1662?1673.

[4] 薛挺,張開(kāi)峰,張哲.基于漢明碼的32位數(shù)據(jù)糾錯(cuò)電路設(shè)計(jì)[J].空間電子技術(shù),2010(2):67?70.

[5] 林博.存儲(chǔ)芯片糾檢錯(cuò)電路設(shè)計(jì)與FPGA實(shí)現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2007.

[6] 陳微.高可靠性微處理器設(shè)計(jì)關(guān)鍵技術(shù)研究與實(shí)現(xiàn)[D].長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué),2006.

[7] Texas Instruments. Error detection and correction (EDC) mechanism of C64x+ memories [M]. USA: Texas Instruments, 2010.

[8] Texas Instruments. TMS320C66x DSP CorePac user′s guide [EB/OL]. [[2011?07?07].] http://www.ti.com/lit/ug/sprugw0b/sprugw0b.

[9] Texas Instruments. TMS320TCI6487/8 digital signal processor silicon revisions 2.1, 2.0, 1.3, 1.2, 1.1, 1.0 [EB/OL]. [2011?03?12].http://www.ti.com/lit/er/sprz248h/sprz248h.pdf.

陇川县| 伽师县| 崇左市| 寿光市| 珠海市| 高淳县| 龙里县| 洪洞县| 彝良县| 安远县| 辰溪县| 玉溪市| 广宗县| 台安县| 安阳市| 金门县| 黔南| 乃东县| 进贤县| 化隆| 金川县| 宜春市| 宿松县| 突泉县| 遂宁市| 房产| 临沭县| 科尔| 宿州市| 阆中市| 庄浪县| 自治县| 营口市| 即墨市| 甘肃省| 黔南| 阿拉尔市| 浦城县| 婺源县| 绥棱县| 黄陵县|