宋桃桃,杜長剛,邱 翔,薛治綱,李園利
(中國空間技術(shù)研究院西安分院,西安710000)
隨著小衛(wèi)星技術(shù)的發(fā)展與成熟,小衛(wèi)星在航天應(yīng)用上正在向全方位擴(kuò)展,使用CPU處理器實(shí)現(xiàn)復(fù)雜邏輯與控制功能越來越必要[1]。但是傳統(tǒng)的宇航級(jí)處理器價(jià)格昂貴且體積大,不適用于體積小、質(zhì)量輕、成本低的小衛(wèi)星系統(tǒng)。惡劣的空間環(huán)境對(duì)處理器的選擇也提出了嚴(yán)格的要求。體積小、功耗低、價(jià)格低、性能高、可靠性高的處理器是小衛(wèi)星星載控制設(shè)備的理想選擇。TMS570LS3X是一款針對(duì)安全領(lǐng)域應(yīng)用的高性能微處理器。體積小、價(jià)格低、低功耗及高性能等特點(diǎn)[2]使其在小型化、產(chǎn)品化的小衛(wèi)星星載設(shè)備上具有一定應(yīng)用前景。選取具有低軌飛行經(jīng)歷的TI公司高性能微控制器TMS570LS3X,但是由于其等級(jí)為工業(yè)級(jí)芯片,在空間環(huán)境中可靠性無法保障,且現(xiàn)有文獻(xiàn)中并未提出對(duì)該類處理器的有效加固措施。因此提出一種通過采用軟件設(shè)計(jì)提升處理器可靠性的方法,并在硬件平臺(tái)上進(jìn)行了驗(yàn)證。
TMS570LS3X是針對(duì)安全領(lǐng)域應(yīng)用的高性能汽車級(jí)微處理器,上電自檢、以鎖步模式運(yùn)行的雙核處理器及內(nèi)嵌ECC(error correction code)功能都為其使用中的安全性提供了保障。高達(dá)180 MHz的工作時(shí)鐘可滿足較復(fù)雜邏輯控制功能的性能要求, 3 MB片內(nèi)程序閃存和256 KB片內(nèi)RAM及高達(dá)128 MB的SDRAM空間和3個(gè)16 MB的EMIF外部存儲(chǔ)空間可滿足星上處理軟件存儲(chǔ)及運(yùn)行要求。TMS570LS3X器件集成了ARMCortex-R4F浮點(diǎn)CPU,可提供高效的1.66 DMIPS/MHz。當(dāng)以180 MHz時(shí)鐘運(yùn)行時(shí)可提供高達(dá)298 DMIPS的運(yùn)算能力。處理器功能框圖如圖1所示[2-3]。
圖1 功能框圖Fig.1 Functional block diagram
處理器上電后PC指針指向0x00000000片內(nèi)FLASH地址空間,因此可執(zhí)行文件須放在此地址段[4]。但是該FLASH沒有抗輻射指標(biāo),在復(fù)雜的空間環(huán)境下可能造成FLASH中程序文件的損壞,導(dǎo)致軟件功能無法正常運(yùn)行,繼而影響系統(tǒng)任務(wù)執(zhí)行[5-6]。星載軟件可靠性至關(guān)重要,因此通過軟件架構(gòu)設(shè)計(jì)確??臻g飛行狀態(tài)下,片內(nèi)FLASH中可執(zhí)行文件的正確加載及運(yùn)行,是文章要研究及解決的問題。
Cortex-R4F CPU 使用32 bit地址總線可尋址4 GB的存儲(chǔ)空間,該空間被劃分為多個(gè)不同區(qū)域。主要存儲(chǔ)空間分配如圖2所示,片內(nèi)有3 MB FLASH程序存儲(chǔ)空間和256 KB RAM數(shù)據(jù)存儲(chǔ)空間,均支持糾1檢2的ECC校驗(yàn),每64 bit數(shù)據(jù)對(duì)應(yīng)8 bit的校驗(yàn)數(shù)據(jù)。外部存儲(chǔ)器接口EMIF支持4個(gè)片選信號(hào),可以外掛3個(gè)16 MB大小的異步存儲(chǔ)器和1個(gè)128 MB的SDRAM,支持8位或16位寬的數(shù)據(jù)總線[3]。
圖2 主要存儲(chǔ)空間地址映射Fig.2 The main memory map
通常,基于TMS570LS3X開發(fā)的程序?qū)⒂诚裎募?text段存儲(chǔ)并運(yùn)行于片內(nèi)FLASH,而數(shù)據(jù)段運(yùn)行于片內(nèi)RAM[7-8]。但考慮到單粒子及其他空間輻射的影響,存儲(chǔ)在片內(nèi)FLASH中的映像文件有可能會(huì)被損壞,映像文件越大被損壞的可能性就越高[9-10],所以考慮在外部存儲(chǔ)空間上掛接可靠性高的高等級(jí)FLASH芯片,且將應(yīng)用程序映像文件以主備份冗余形式存儲(chǔ)于片外FLASH中,片內(nèi)FLASH僅存儲(chǔ)精簡的Bootloader程序,實(shí)現(xiàn)硬件基本初始化、可執(zhí)行程序加載及PC指針跳轉(zhuǎn),降低片內(nèi)FLASH中文件損壞的風(fēng)險(xiǎn),提高軟件的可靠性。高等級(jí)FLASH發(fā)生位錯(cuò)誤的概率很低,因此僅對(duì)應(yīng)用程序映像文件采用主備份方式。軟件設(shè)計(jì)如圖3所示。
圖3 軟件架構(gòu)設(shè)計(jì)Fig.3 Software structure design
Bootloader首先實(shí)現(xiàn)基本的硬件初始化,包括中斷向量表、內(nèi)部寄存器、堆棧空間、時(shí)鐘、管腳映射及外部存儲(chǔ)器SDRAM和FLASH初始化等[4,11];然后從片外FLASH讀取并加載映像文件,當(dāng)主份數(shù)據(jù)讀出時(shí)若CRC校驗(yàn)發(fā)生錯(cuò)誤,則利用備份數(shù)據(jù)完成加載,并對(duì)主份數(shù)據(jù)進(jìn)行正確數(shù)據(jù)的回寫。Bootloader將映像文件的.text搬移到片內(nèi)RAM,數(shù)據(jù)段搬移到片外SDRAM,以提高代碼的執(zhí)行速度和可靠性。映像文件在燒寫到片外FLASH前需進(jìn)行一定處理,增加文件頭校驗(yàn)及區(qū)段長度等信息。Bootloader實(shí)現(xiàn)框圖如圖4所示。
圖4 Bootloader實(shí)現(xiàn)框圖Fig.4 Bootloader implementation block diagram
另一方面通過寄存器設(shè)置,將片內(nèi)FLASH及片內(nèi)RAM的ECC功能置為“使能”狀態(tài),當(dāng)軟件在軌發(fā)生單比特錯(cuò)誤時(shí)ECC可自動(dòng)糾正數(shù)據(jù),保證總線上數(shù)據(jù)的正確性,亦可在一定程度上降低單粒子翻轉(zhuǎn)造成軟件異常的風(fēng)險(xiǎn),所以在底層硬件初始化時(shí)應(yīng)打開ECC校驗(yàn)。
本小節(jié)對(duì)Bootloader中關(guān)鍵的程序模塊進(jìn)行說明。
3.1.1 ECC功能初始化
在_c_init00函數(shù)中加入以下語句將片內(nèi)FLASH和RAM的ECC校驗(yàn)功能設(shè)置為“使能”狀態(tài)[12]。
3.1.2時(shí)鐘配置
TMS570LS3X處理器有7個(gè)可供選擇的時(shí)鐘源,文中選用PLL1作為系統(tǒng)時(shí)鐘源,先清零CSDIS寄存器的相應(yīng)比特位使能PLL1,然后設(shè)置寄存器PLLCTL1、PLLCTL2實(shí)現(xiàn)倍頻功能,倍頻后系統(tǒng)工作鐘最高可達(dá)180 MHz。PLL1輸出時(shí)鐘與OSCIN時(shí)鐘的計(jì)算關(guān)系如式(1)所示:
(1)
為了檢查PLL1輸出是否與程序中設(shè)置的一致,可通過ECLK管腳測量系統(tǒng)的實(shí)際工作時(shí)鐘。在時(shí)鐘初始化代碼中,將寄存器SYSPC1的ECPCLKFUN位置1,選通ECLK的時(shí)鐘輸出功能;其次清零ECPCNTL寄存器的ECPSSEL位選擇ECLK的時(shí)鐘源為VCLK(0為VCLK,1為OSCIN),最后通過配置ECPDIV位確定ECLK管腳上的時(shí)鐘頻率(ECLK管腳輸出頻率最大不能超過20 M),ECLK時(shí)鐘頻率與VCLK時(shí)鐘的關(guān)系如式(2)所示[2]。
(2)
3.1.3 EMIF接口初始化
EMIF存儲(chǔ)控制器接口數(shù)據(jù)線為16位位寬,兼容JESD21-C SDR SDRAM。通過該接口CPU可連接多種外部存儲(chǔ)器,如同步SDRAM,異步設(shè)備NOR FLASH、SRAM等。EMIF接口共有4個(gè)外部片選信號(hào):CS0支持16位寬的SDRAM,CS2~CS4支持16位NOR FLASH 、SRAM等異步存儲(chǔ)器。原理框圖如圖5所示。
圖5 EMIF接口原理框圖Fig.5 EMIF functional block diagram
EMIF接口的初始化包括接口時(shí)鐘、復(fù)用管腳、接口時(shí)序及數(shù)據(jù)總線位寬。VCLK3為EMIF接口提供時(shí)鐘,通過CLK2CNTRL的VCLK3R位配置VCLK3的時(shí)鐘頻率。對(duì)復(fù)用的I/O管腳進(jìn)行寄存器配置,使其功能為EMIF地址線或數(shù)據(jù)線。結(jié)合所選外部存儲(chǔ)器芯片手冊(cè)配置CEnCFG(n= 2,3,4)寄存器,使讀寫時(shí)序及數(shù)據(jù)位寬與外部存儲(chǔ)器一致。
下文給出所選用SDRAM的初始化配置,包括刷新模式、bank數(shù)量、頁大小、CAS等待時(shí)間、刷新速率、時(shí)序等,此處VCLK3初始化為40 MHz。
3.1.4 映像文件加載
讀取主份映像文件頭部CRC字段,與當(dāng)前計(jì)算的CRC值進(jìn)行比較;對(duì)備份映像文件進(jìn)行同樣操作。如果兩份文件中有一個(gè)出現(xiàn)錯(cuò)誤則用正確文件進(jìn)行回寫,否則直接將主份映像文件的代碼段和數(shù)據(jù)段加載到指定的空間。
本文使用CCS5.5集成開發(fā)環(huán)境。在Bootloader中使能片內(nèi)FLASH ECC功能后,需要同時(shí)配置調(diào)試環(huán)境以實(shí)現(xiàn)Bootloader的正確運(yùn)行,如圖6所示。
圖6 CCS5.5調(diào)試界面下使能 FLASH ECCFig.6 Enable FLASH ECC over CCS5.5 debug condition
對(duì)應(yīng)用程序使用CCS5.5集成開發(fā)環(huán)境,通過修改cmd文件,將應(yīng)用程序的數(shù)據(jù)段鏈接到片內(nèi)RAM,而數(shù)據(jù)段放到片外SDRAM。具體cmd文件的設(shè)置如下所示:
在硬件平臺(tái)上通過CCS5.5集成開發(fā)環(huán)境將Bootloader燒寫到片內(nèi)FLASH,然后將處理過的應(yīng)用程序映像文件燒寫到片外FLASH存儲(chǔ)空間。分3種情況對(duì)Bootloader功能進(jìn)行驗(yàn)證。
3.3.1 兩份映像文件均正確
片外FLASH兩份映像文件均燒寫正確內(nèi)容時(shí),Bootloader會(huì)直接將主份映像文件搬移到RAM及SDRAM。測試結(jié)果如下:
3.3.2 主份映像文件正確,備份映像文件錯(cuò)誤
將備份映像文件人為燒錯(cuò)1 bit,模擬在軌故障[11]。Bootloader加載前會(huì)用主份文件修復(fù)備份文件,然后進(jìn)行程序搬移及加載。測試中分別選擇檢驗(yàn)頭出錯(cuò)、text段出錯(cuò)或data段,且每項(xiàng)出錯(cuò)均進(jìn)行5次以上測試驗(yàn)證,測試結(jié)果一致均可以正常加載:
3.3.3 主份映像文件錯(cuò)誤,備份映像文件正確
將主份映像文件人為燒錯(cuò)2 bit,模擬在軌故障。Bootloader加載前會(huì)用備份文件修復(fù)主份文件,然后進(jìn)行程序搬移。2 bit出錯(cuò)位置選取原則為:1)文件首部校驗(yàn)區(qū)2 bit連續(xù)錯(cuò)誤;2)文件text段2 bit連續(xù)錯(cuò)誤;3)文件data段2 bit連續(xù)錯(cuò)誤;4)文件任意位置非連續(xù)2 bit錯(cuò)誤。按以上4條原則分別設(shè)置出錯(cuò)bit文件,每項(xiàng)用例進(jìn)行5次以上測試。測試結(jié)果均可以糾正錯(cuò)誤并正常加載,如下所示:
小衛(wèi)星低成本、短周期和高性能的特點(diǎn)使得體積小、成本低、集成度高、性能高、功耗低的工業(yè)級(jí)元器件得到了越來越多的青睞。但此類元器件質(zhì)量等級(jí)低,抗空間環(huán)境性能差,直接代替高等級(jí)元器件應(yīng)用于航天器工程中存在一定的風(fēng)險(xiǎn)。在對(duì)TMS570LS3X處理器功能及架構(gòu)分析的基礎(chǔ)上,針對(duì)其在空間環(huán)境應(yīng)用中存在的風(fēng)險(xiǎn)點(diǎn)進(jìn)行了分析研究,提出了使用軟硬結(jié)合提高處理器可靠性的方法。通過對(duì)軟件架構(gòu)的設(shè)計(jì)分析和工程實(shí)現(xiàn)后,在設(shè)計(jì)的硬件平臺(tái)上進(jìn)行了充分測試驗(yàn)證,測試結(jié)果表明該方法可有效提升處理器抗單粒子能力,大大降低系統(tǒng)故障概率,為高性能工業(yè)級(jí)元器件在宇航應(yīng)用中的可靠性加固提供了參考和借鑒。