洪偉鴻 鄧天軍
(廣東美的暖通設(shè)備有限公司,廣東 佛山 528311)
淺談微電子故障校驗(yàn)
洪偉鴻 鄧天軍
(廣東美的暖通設(shè)備有限公司,廣東 佛山 528311)
本文詳細(xì)介紹了軟件安全認(rèn)證中微電子故障校驗(yàn)原理,并舉例說明微電子故障校驗(yàn)的方法,提升家用電器安全性能。
軟件安全認(rèn)證;IEC60730;微電子故障;微控制器MCU
微電子故障校驗(yàn)主要是針對(duì)微控制器MCU本身內(nèi)部微電子故障的校驗(yàn)或檢測(cè),包括:RAM,ROM,Stack,register,A/D,interrupt,clock等校驗(yàn),但微控制器出現(xiàn)了微電子故障時(shí),最有效的操作是將微控制器復(fù)位,關(guān)閉有可能造成人員傷害的器件。下面以NEC單片機(jī)為例,對(duì)微電故障校驗(yàn)做一個(gè)詳細(xì)的說明
1.1 RAM校驗(yàn)。其一,在上電是對(duì)整個(gè)RAM區(qū)域進(jìn)行校驗(yàn)。一是將RAM分為3個(gè)區(qū)域:0xfb00~0fcff,0xfd00~0xfe1f,0xfe20~0xfedf。二是分別對(duì)這3個(gè)區(qū)域進(jìn)行校驗(yàn),需要注意的是:由于我們用到的堆棧是在0xfd00~0xfe1f這個(gè)區(qū)域,而校驗(yàn)的過程中單片機(jī)又需要使用堆棧區(qū),所以在校驗(yàn)這個(gè)區(qū)域的之前,需要將堆棧指針重新制定到已經(jīng)校驗(yàn)合格的區(qū)域上去(例如0xfb00~0fcff),在校驗(yàn)完該區(qū)域后,重新將堆棧指針恢復(fù)為0xfe20,再進(jìn)行第三區(qū)域(0xfe20~0xfedf)的校驗(yàn)。三是校驗(yàn)的步驟如下:①將校驗(yàn)區(qū)域的RAM清零。②由低地址開始,比較RAM是否為0,如果是,將RAM改寫為0xffff,繼續(xù)下一單元的校驗(yàn),否則報(bào)錯(cuò)。③由低地址開始,比較RAM是否為0xffff,如果是,將RAM改寫為0x0,繼續(xù)下一單元的校驗(yàn),否則報(bào)錯(cuò)。④由低地址開始,比較RAM是否為0,如果是,將RAM改寫為0xaaaa,繼續(xù)下一單元的校驗(yàn),否則報(bào)錯(cuò)。⑤由低地址開始,比較RAM是否為0xaaaa,如果是,將RAM改寫為0x5555,繼續(xù)下一單元的校驗(yàn),否則報(bào)錯(cuò)。⑥由低地址開始,比較RAM是否為0x5555,如果是,將RAM改寫為0x0,繼續(xù)下一單元的校驗(yàn),否則報(bào)錯(cuò)。一旦發(fā)現(xiàn)RAM有錯(cuò),單片機(jī)復(fù)位。其二,在主循環(huán),分次校驗(yàn)RAM,采用非破壞性的March X校驗(yàn),保證在安全時(shí)間內(nèi),可以將整個(gè)RAM區(qū)域校驗(yàn)完(目前為9s完成整個(gè)RAM區(qū)域校驗(yàn))。其三,一旦發(fā)現(xiàn)校驗(yàn)不合格,則MCU復(fù)位。
1.2 ROM校驗(yàn)。在上電是對(duì)整個(gè)ROM區(qū)域進(jìn)行CRC校驗(yàn)。一是在主循環(huán),分次校驗(yàn)ROM,保證在安全時(shí)間內(nèi),可以將整個(gè)ROM區(qū)域校驗(yàn)完(目前為19s完成整個(gè)ROM區(qū)域校驗(yàn)。二是一旦發(fā)現(xiàn)校驗(yàn)不合格,則MCU復(fù)位。
1.3 Stack校驗(yàn)。假定堆棧的范圍為0xfd80~0xfe1f,在初始化時(shí),在0xfd70~0xfd7f寫入一串帶CRC16校驗(yàn)的字符。在主循環(huán)中,周期性的對(duì)0xfd70~0xfd7f進(jìn)行校驗(yàn),如果堆棧溢出,則該區(qū)域的信息必定改變,CRC16校驗(yàn)和將被改變,一旦發(fā)現(xiàn)堆棧溢出,單片機(jī)將復(fù)位。
1.4 Register校驗(yàn)。周期性對(duì)通用寄存器AX,BC,DE,HL進(jìn)行校驗(yàn),如果校驗(yàn)不通過,則MCU復(fù)位。寄存器校驗(yàn)的方法可采用如下方法:一是將0xAAAA寫入AX。二是比較AX的值是否為0xAAAA。(3)如果為0xAAAA,則繼續(xù),否則寄存器有故障。四是將0x5555寫入AX。五是比較AX的值是否為0x5555。六是如果為0x5555,則繼續(xù),否則寄存器有故障。七是寄存器BC,DE和HL的校驗(yàn)方法和AX的一樣。八是認(rèn)證要求在初始化和主循環(huán)時(shí)都要對(duì)寄存器進(jìn)行校驗(yàn)。
1.5 A/D校驗(yàn)。其一,確保A/D轉(zhuǎn)換正確。增加一個(gè)A/D電路檢測(cè)端口的電壓值,正常情況下是在2.5V左右,為了滿足+/-4F的要求(略高于UL+/-5F的要求),我們會(huì)一直檢測(cè)該電路的電壓,加入電壓不在2.4V~2.6V范圍內(nèi),則代表檢測(cè)A/D檢測(cè)出現(xiàn)了問題,MCU需要作出相應(yīng)的保護(hù)動(dòng)作,我們選擇的是復(fù)位。其二,確保A/D通道選擇不會(huì)出錯(cuò)。由于大部分微控制器內(nèi)部都只有一個(gè)或者兩個(gè)A/D轉(zhuǎn)換器,通過選擇不同的A/D通道來讀取不同A/D轉(zhuǎn)換引腳的A/D轉(zhuǎn)換結(jié)果,確保A/D通道選擇正確的最簡(jiǎn)單方法就是在每次A/D通道切換后,對(duì)A/D通道寄存器在進(jìn)行一次校驗(yàn)即可,如果A/D通道寄存器不是我們所希望的值,則表示A/D通道切換出現(xiàn)了問題,微控制器需要作出相應(yīng)的保護(hù)動(dòng)作
1.6 Interrupt校驗(yàn)。Interrupt校驗(yàn)主要是針對(duì)定時(shí)中斷的校驗(yàn),必須確保定時(shí)中斷能夠進(jìn)入:設(shè)置一個(gè)標(biāo)志,在進(jìn)入定時(shí)中斷時(shí),將這個(gè)標(biāo)志設(shè)為1,利用軟件看門狗的復(fù)位功能,在喂狗之前,判斷該標(biāo)志是否為1,如果不為1,則不進(jìn)行喂狗,系統(tǒng)在一段時(shí)間內(nèi)不喂狗,MCU將復(fù)位,流程圖如下:
1.7 Clock。只要能夠確保軟件在半頻和倍頻的情況下,機(jī)器不會(huì)造成人員傷害,同時(shí)在安全時(shí)間內(nèi)能夠確保所有safety functions都能夠順利校驗(yàn)一遍。最常用的辦法有過零檢測(cè),對(duì)比內(nèi)置晶振,對(duì)比外置RC電路,利用外部通訊等辦法。
當(dāng)對(duì)微控制器MCU的微電子故障進(jìn)行有效校驗(yàn)后,即使微控制器MCU內(nèi)部出現(xiàn)問題,微控制器還可以有效的關(guān)閉有可能造成危害的器件,使得家電的安全性進(jìn)一步提高。
[1]王新潔.淺談程控交換機(jī)故障排除的方法[J].機(jī)械信息,2012(1).
TN407
A
1671-0037(2014)07-82-1
洪偉鴻(1979.1-),本科,研究方向:電機(jī)控制。