• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      高可靠的計算機模塊引導(dǎo)軟件①

      2018-02-07 02:41:22周鵬舉施華君楊三嶺
      計算機系統(tǒng)應(yīng)用 2018年1期
      關(guān)鍵詞:校驗應(yīng)用程序指令

      周鵬舉,倪 明,施華君,楊三嶺

      (中國電子科技集團公司第三十二研究所,上海 201800)

      自第一顆人造衛(wèi)星進入太空以來,航天技術(shù)取得了迅猛的發(fā)展,現(xiàn)已廣泛應(yīng)用于國民生活的方方面面.我國經(jīng)過40多年的艱苦努力,在航天方面取得了一系列重大成就.隨著計算機模塊運算能力的提升和任務(wù)的增多,計算機模塊應(yīng)用程序呈現(xiàn)出多樣化和復(fù)雜化的發(fā)展趨勢.快速迭代的軟件需求,要求設(shè)計一種計算機模塊引導(dǎo)軟件(以下簡稱引導(dǎo)軟件),使其能夠?qū)?yīng)用程序進行重構(gòu)和引導(dǎo)等,并且為適應(yīng)復(fù)雜的空間環(huán)境,需要采用一定措施保證其高可靠性.

      本文針對上述問題,設(shè)計與實現(xiàn)了一種基于SPARC架構(gòu)的高可靠引導(dǎo)軟件.該引導(dǎo)軟件的主要功能如下:

      1)自檢功能,確保引導(dǎo)軟件本身正確.

      2)硬件檢測功能,確保硬件狀態(tài)正確.

      3)三冗余架構(gòu)、反彈墻、EDAC保護等多種高可靠性措施,確保軟件的正確運行.

      4)重構(gòu)功能,便于不同應(yīng)用程序的在線固化,縮短研發(fā)周期.

      5)多種引導(dǎo)方式,便于對應(yīng)用程序的調(diào)試.

      1 硬件環(huán)境概述

      1.1 計算機模塊與調(diào)試環(huán)境

      本實驗所用的計算機模塊原理框圖如圖1所示,CPU使用基于SPARC架構(gòu)的AT697F,主要包含RAM、PROM、EEPROM三種存儲芯片,RAM是計算機模塊的內(nèi)存區(qū)域,引導(dǎo)軟件燒寫于PROM1(實驗過程中由EEPROM代替)中,自動引導(dǎo)的應(yīng)用程序(以下簡稱應(yīng)用程序)燒寫于PROM2(實驗過程中由EEPROM代替)中,可重構(gòu)的應(yīng)用程序(以下簡稱重構(gòu)程序)固化于EEPROM中.

      圖1 計算機模塊原理框圖

      計算機模塊通過RS232與外界通信.計算機模塊與計算機的通信示意圖如圖2所示,計算機使用調(diào)試環(huán)境VDS通過仿真器LEON將引導(dǎo)軟件下載到計算機模塊中,計算機中的地面服務(wù)程序(界面見圖10)通過RS232串口與計算機模塊進行通信.

      圖2 計算機與計算機模塊通信圖

      1.2 CPU簡介

      該實驗采用的CPU是Atmel公司的AT697F.AT697F基于SPARC V8架構(gòu)設(shè)計,采用RISC精簡指令集,具有8個寄存器堆窗口、5級流水線,使用容錯設(shè)計技術(shù),具有軟件可控的省電工作模式,是一種高性能低功耗的32位嵌入式處理器.

      AT697F主頻最高可達100MHz,定點運算性能86MIPS,浮點運算性能23MFLOPS.正常工作溫度范圍廣,抗輻射能力強.該CPU的各項指標能夠滿足衛(wèi)星在軌運行期間的各項性能要求.

      1.3 計算機模塊存儲空間

      AT697F具有32根地址總線,可尋址4 GB的地址空間.該計算機模塊采用統(tǒng)一編址方式,地址空間分配如表1所示.

      表1 計算機模塊地址空間

      2 引導(dǎo)軟件設(shè)計方案

      2.1 引導(dǎo)軟件的模塊劃分

      本引導(dǎo)軟件的設(shè)計方案如圖3所示,主要分為6個模塊.

      圖3 引導(dǎo)軟件設(shè)計方案

      系統(tǒng)初始化模塊用于系統(tǒng)初始化和引導(dǎo)程序的搬移和跳轉(zhuǎn).系統(tǒng)初始化主要包括CPU、外圍器件,陷阱/中斷、堆棧等的初始化.引導(dǎo)程序的搬移和跳轉(zhuǎn)用于引導(dǎo)程序自身的轉(zhuǎn)移.

      系統(tǒng)初始化完成后,引導(dǎo)軟件等待4 s,若4 s內(nèi)未收到地面接管指令則進入飛行模式模塊,否則進入測試模式模塊.飛行模式模塊是系統(tǒng)的自動管理模塊,它根據(jù)引導(dǎo)標志自動完成應(yīng)用程序或重構(gòu)程序的引導(dǎo);測試模式模塊根據(jù)地面指令執(zhí)行相應(yīng)操作,如重構(gòu)程序上注、固化等,并最終引導(dǎo)一個應(yīng)用程序的啟動.

      數(shù)據(jù)回送模塊用于引導(dǎo)程序運行過程中狀態(tài)的回送,如重構(gòu)程序校驗和的回送等.

      錯誤檢測與恢復(fù)主要包括RAM正確性檢測、程序比特位正確性檢測、系統(tǒng)運行正確性檢測和重構(gòu)程序三冗余架構(gòu)設(shè)計等,若檢測到錯誤,則嘗試進行恢復(fù).

      本文主要對系統(tǒng)初始化、飛行模式、測試模式和錯誤檢測與恢復(fù)4個模塊進行論述.

      2.2 引導(dǎo)軟件的目錄結(jié)構(gòu)

      該引導(dǎo)軟件主要由trap.s、setup.s、xxmain.c等3個文件組成,trap.s主要用于設(shè)置陷阱表和中斷臨界區(qū),setup.s主要包含初始化和錯誤檢測與恢復(fù)兩個模塊,xxmain.c完成引導(dǎo)軟件的引導(dǎo)測試功能,即完成飛行模式、測試模式和程序啟動三個模塊.

      3 引導(dǎo)軟件的實現(xiàn)

      3.1 系統(tǒng)初始化

      系統(tǒng)初始化主要包括硬件初始化和引導(dǎo)程序的搬移和跳轉(zhuǎn).

      3.1.1 硬件初始化

      AT697F共有8個全局通用寄存器和8個寄存器窗口,每個寄存器窗口對應(yīng)一組通用寄存器.初始化時對上述通用寄存器全部清0,對控制寄存器進行配置,主要配置當前寄存器窗口、無效窗口、cache、內(nèi)存等.

      中斷是現(xiàn)代處理器的重要組成部分,本引導(dǎo)軟件在系統(tǒng)初始化時完成對中斷的配置.中斷服務(wù)函數(shù)在xxmain.c中完成,臨界區(qū)的進入/退出和中斷向量表在trap.s中,中斷配置在setup.s中完成.

      AT697F的中斷控制在多個寄存器中完成.主要是設(shè)置中斷屏蔽級別PSR.pil為0,設(shè)置異?;窐酥炯拇嫫鱐BR為中斷向量表的入口地址,其它與中斷相關(guān)的寄存器如中斷級別/屏蔽寄存器等都設(shè)為0.當程序跳轉(zhuǎn)至主函數(shù)前置PSR.ET為1,打開中斷.

      因AT697F共有8個寄存器窗口,故需為每個窗口設(shè)置一個堆棧,該引導(dǎo)軟件的堆棧棧底位于SRAM的 0x400f0000 處,代碼為:

      PROVIDE (__stack = 0x400f0000);

      每個窗口對應(yīng)一段??臻g,棧指針%sp向下增長.

      3.1.2 引導(dǎo)程序的搬移和跳轉(zhuǎn)

      引導(dǎo)程序固化于PROM中,運行時將自身搬移到RAM中,自檢正確后跳轉(zhuǎn)至引導(dǎo)軟件的main主函數(shù).

      3.2 錯誤檢測與恢復(fù)

      因太空復(fù)雜的環(huán)境對程序的正確運行構(gòu)成極大威脅,本引導(dǎo)軟件為保證程序的正確運行采取如下高可靠性措施,在文件setup.s中主要完成RAM正確性檢測,EDAC保護,反彈墻保護,看門狗保護等;在文件xxmain.c中主要完成三冗余架構(gòu)設(shè)計.其中RAM正確性檢測屬于硬件正確性檢測,EDAC保護屬于比特位正確性檢測與恢復(fù),反彈墻保護、看門狗保護屬于系統(tǒng)運行正確性檢測,三冗余架構(gòu)屬于錯誤檢測與錯誤恢復(fù),將在3.4.2節(jié)論述.

      1)RAM錯誤檢測

      RAM的起始地址是0x40000000,錯誤檢測的方法是在RAM的地址空間中,依次向每個字中寫入0x0并讀出,檢測讀出的數(shù)據(jù)是否出現(xiàn)錯誤,若出現(xiàn)錯誤則將錯誤計數(shù)加1.當上述檢測完成后,分別將0x0替換為0x55555555、0xaaaaaaaa和0xffffffff重復(fù)上述檢測.最后將錯誤計數(shù)值存入地址0x40000000處.當引導(dǎo)軟件進入main函數(shù)后將錯誤計數(shù)值返回給地面服務(wù)程序.檢測SRAM的代碼如圖4所示,進入_checkram 前%g1~%g4為0,%g2進行錯誤計數(shù),%5為RAM的大小,%g6為RAM的起始地址.

      2)引導(dǎo)軟件自檢

      引導(dǎo)軟件無錯誤是其正確執(zhí)行其它功能的前提,當RAM自檢正確后,引導(dǎo)軟件將被轉(zhuǎn)移到起始地址為SADDR的RAM中,計算其校驗和,若校驗和正確則認為引導(dǎo)軟件沒有錯誤.

      3)反彈墻保護

      反彈墻的目的在于保證程序非法運行時,能夠跳轉(zhuǎn)到指定的異常處理函數(shù).本軟件添加反彈墻的方法是在未使用的區(qū)域填入“nop”和跳轉(zhuǎn)到0地址的指令,這些區(qū)域包括ROM、EEPROM、RAM中未使用的所有區(qū)域.若程序運行中跳入非法地址,則軟件復(fù)位.

      4)EDAC保護

      EDAC(error detection and correction)采用海明碼,能夠糾正一位錯,檢測兩位及多位錯誤,對于受保護的RAM區(qū)域,任何一條指令的讀取或數(shù)據(jù)的讀寫都將經(jīng)過EDAC檢測,對于一位可糾正錯,錯誤將在CPU內(nèi)部糾正,對于兩位不可糾正錯,將產(chǎn)生instruction_access_exception或data_access_exception陷阱.

      本引導(dǎo)軟件主要對RAM進行EDAC保護.軟件初始化時,開啟全RAM區(qū)域EDAC保護,軟件運行過程中,為了防止比特位的錯誤累積,定期對RAM中的所有數(shù)據(jù)進行讀寫,若出現(xiàn)多位錯誤則進入中斷服務(wù)函數(shù),中斷服務(wù)函數(shù)將錯誤發(fā)回給地面,引導(dǎo)軟件自動復(fù)位.

      5)看門狗

      看門狗是防止程序跑飛的有效手段,在該引導(dǎo)軟件中,引導(dǎo)軟件必須定期喂狗,否則引導(dǎo)軟件將復(fù)位.

      圖4 SRAM檢測

      3.3 飛行模式

      系統(tǒng)自動進入飛行模式后,對引導(dǎo)標志進行檢測,若導(dǎo)標志不是引導(dǎo)EEPROM中的重構(gòu)程序,則引導(dǎo)程序?qū)ROM中的應(yīng)用程序復(fù)制到起始地址為SADDR的RAM中,然后啟動應(yīng)用程序的運行;若引導(dǎo)標識是引導(dǎo)EEPROM中的重構(gòu)程序,則引導(dǎo)程序則按照3.4.2節(jié)中重構(gòu)程序引導(dǎo)的方式啟動重構(gòu)程序的運行.飛行模式的流程圖如圖5所示.

      圖5 飛行模式流程圖

      3.4 測試模式

      3.4.1 地面指令

      地面指令通過地面服務(wù)程序以幀的形式下發(fā)到計算機模塊,該計算機模塊中的幀分為指令幀、數(shù)據(jù)幀和應(yīng)答幀.指令幀用于計算機模塊的控制與測試,數(shù)據(jù)幀用于重構(gòu)程序的上注,應(yīng)答幀用于計算機模塊狀態(tài)的回送.數(shù)據(jù)的發(fā)送往往伴隨著封裝成幀和幀的重組.在計算機模塊上對幀的處理主要是幀重組和幀解析.

      1)幀重組

      幀重組在串口UART的中斷服務(wù)函數(shù)中進行.當收到一個字節(jié)的數(shù)據(jù)時產(chǎn)生UART中斷,經(jīng)中斷切換進入中斷服務(wù)函數(shù).因數(shù)據(jù)的發(fā)送具有連續(xù)性,進入串口中斷服務(wù)函數(shù)后連續(xù)判斷UART狀態(tài)寄存器的dr位是否為1,若此位為1,則表示在UART的接收保持寄存器中已經(jīng)有可讀的新數(shù)據(jù),串口服務(wù)程序讀取UART數(shù)據(jù)寄存器中的一字節(jié)數(shù)據(jù),并根據(jù)幀協(xié)議將接收到的數(shù)據(jù)組裝成幀.

      2)幀解析

      幀的解析在函數(shù)cmdAnalysis中進行.該函數(shù)對于一個幀的解析流程如圖6所示.若收到的幀是數(shù)據(jù)幀,則使用io_copy函數(shù)將數(shù)據(jù)(不包含幀頭、幀尾,幀長度等與幀有關(guān)的數(shù)據(jù))轉(zhuǎn)移到首地址為FRM_BUF_ADDR的RAM中,數(shù)據(jù)復(fù)制完成后,計算校驗和,并將其回送至地面服務(wù)程序;若收到的幀是指令幀,則根據(jù)指令碼選擇相應(yīng)的操作,如地面接管、軟件上注、重構(gòu)程序固化、RAM引導(dǎo)等.

      圖6 幀解析流程

      3.4.2 重構(gòu)程序的三冗余架構(gòu)與引導(dǎo)

      該引導(dǎo)軟件的一個重要功能是重構(gòu)程序的在線固化功能.本引導(dǎo)軟件將重構(gòu)程序分三份固化于EEPROM中,并分別計算校驗和,將校驗和發(fā)送回地面服務(wù)程序.

      根據(jù)3.4.1節(jié)對數(shù)據(jù)幀的論述,當重構(gòu)程序存放于RAM中,且地面收到正確的校驗和后,地面服務(wù)程序可以發(fā)送重構(gòu)程序固化指令,開始重構(gòu)程序的固化.重構(gòu)程序的固化使用FPGA托管方式進行.重構(gòu)程序共固化三份,首地址分別是RADDR1、RADDR2、RADDR3,固化完成后分別計算校驗和,并將校驗和返回給地面服務(wù)程序,若應(yīng)答幀返回的三個校驗和與重構(gòu)程序的校驗和相同,則重構(gòu)程序固化成功,此時地面服務(wù)程序可以向計算機模塊發(fā)送重構(gòu)程序引導(dǎo)指令.

      計算機模塊收到重構(gòu)程序引導(dǎo)指令后,分別將這三份程序按字節(jié)取出,進行三取二操作,將所得的結(jié)果移動到RAM中起始地址SADDR處.當程序搬運完畢,計算RAM中該程序的校驗和,若校驗和正確,則啟動重構(gòu)程序的運行,否則啟動原應(yīng)用程序.重構(gòu)程序啟動的核心代碼如圖7所示.

      4 實驗結(jié)果

      本實驗中計算機模塊固定在板卡基座上,實物如圖8所示,圖8左邊是計算機模塊的正視圖,右邊是計算機模塊的俯視圖.在試驗中使用EEPROM代替PROM,地面服務(wù)程序的界面如圖10所示.

      4.1 引導(dǎo)軟件的自動引導(dǎo)

      在tornado中建立VxWorks應(yīng)用程序,并添加printf打印函數(shù),設(shè)置引導(dǎo)標識,重啟計算機模塊,則可以在串口調(diào)試助手中看到如圖9的結(jié)果.

      圖7 重構(gòu)程序引導(dǎo)

      圖8 計算機模塊實物圖

      圖9 引導(dǎo)程序自動啟動應(yīng)用程序

      圖9上圖為自動引導(dǎo)PROM中的應(yīng)用程序,下圖為自動引導(dǎo)EEPROM中的重構(gòu)程序.從圖中可以看出VxWorks已經(jīng)成功運行,并成功打印出相應(yīng)信息,證明應(yīng)用程序已經(jīng)成功運行.

      4.2 重構(gòu)程序的固化與引導(dǎo)

      計算機模塊重啟后發(fā)送地面接管指令,接管成功后,引導(dǎo)軟件進入測試模式,圖10顯示了地面服務(wù)程序發(fā)送的一系列地面指令.從中可以看到程序啟動后自檢正確,SRAM無錯誤.當發(fā)送地面接管指令后成功接管引導(dǎo)軟件,引導(dǎo)程序成功進入測試模式,這時選取重構(gòu)程序,發(fā)送軟件上注指令,執(zhí)行重構(gòu)程序固化和引導(dǎo),從圖中可以看出重構(gòu)程序在計算機、RAM和EEPROM中的校驗和完全一樣,都為0x37b0,表明引導(dǎo)程序已經(jīng)成功將重構(gòu)程序固化完成.

      圖10 引導(dǎo)程序進入測試模式

      當?shù)孛姘l(fā)送重構(gòu)程序引導(dǎo)指令后,引導(dǎo)程序引導(dǎo)重構(gòu)程序的執(zhí)行.所得的結(jié)果如圖11所示.

      圖11 重構(gòu)程序引導(dǎo)

      4.3 錯誤檢測與恢復(fù)

      4.3.1 反彈墻測試

      在引導(dǎo)軟件的main函數(shù)中添加:

      asm(“b 0x40001000”)

      運行引導(dǎo)軟件,得到的結(jié)果如圖12所示.

      從圖12中可以看出程序在不停的重啟,說明反彈墻能夠正確的運行.

      4.3.2 三冗余造錯

      通過VDS將RADDR1,RADDR2+0xf,RADDR3+0xff處的值改為0xFF,設(shè)置引導(dǎo)標識為重構(gòu)程序引導(dǎo),啟動引導(dǎo)軟件,可以得到如圖11所示的結(jié)果,證明三冗余架構(gòu)具有一定的容錯能力,能夠保證應(yīng)用軟件的正常運行.

      圖12 反彈墻測試

      4.3.3 SADDR處校驗和錯誤

      在重構(gòu)程序放置在SADDR后、校驗和檢測前,使用VDS更改SADDR處的值,運行軟件,此時會檢測到校驗和錯誤,轉(zhuǎn)而引導(dǎo)位于PROM中的應(yīng)用程序,串口調(diào)試助手此時返回的結(jié)果如圖9上圖所示.

      5 結(jié)束語

      本文介紹了基于SPARC架構(gòu)的的計算機模塊引導(dǎo)軟件,詳細論述了該引導(dǎo)軟件的架構(gòu)設(shè)計和主要功能,并論述了為保證其高可靠性采取的技術(shù),最后將該引導(dǎo)軟件在計算機模塊上測試,實驗證明,該引導(dǎo)軟件的各項功能正確,能夠?qū)⑵鋺?yīng)用到實際的項目中.該軟件也有不完善之處,需要改進,比如為保證高可靠性,數(shù)據(jù)的傳送速度較慢,可以通過測試,在保證高可靠的前提下提高數(shù)據(jù)傳輸速度.

      1 徐福祥,林寶華.衛(wèi)星工程概論.2版.北京:中國宇航出版社,2004.

      2 AT697F_doc7703.pdf. http://www.atmel.com/Images/doc 7703.pdf.

      3 陳國林.星上帶容錯功能的計算機引導(dǎo)系統(tǒng)的研究和實現(xiàn)[碩士學位論文].北京:中國科學院研究生院(計算技術(shù)研究所),2005.

      4 孫樂益.嵌入式系統(tǒng)的冗余設(shè)計研究.數(shù)字技術(shù)與應(yīng)用,2011,(10):123–124.

      5 賴鑫.高可靠8051設(shè)計與實現(xiàn)及可靠性評估[碩士學位論文].長沙:國防科學技術(shù)大學,2008.

      6 柳振華.三模冗余容錯計算機的設(shè)計與實現(xiàn)[碩士學位論文].西安:西安電子科技大學,2010.

      7 時晨,于倫政.基于SPARC結(jié)構(gòu)的RISC系統(tǒng)設(shè)計技術(shù).微電子學與計算機,2002,19(11):52–54.[doi:10.3969/j.issn.1000-7180.2002.11.017]

      8 周雪贊,張宏.基于Vxworks操作系統(tǒng)的BSP開發(fā).工業(yè)控制計算機,2004,17(2):33–34.

      9 徐惠民.基于VxWorks的嵌入式系統(tǒng)及實驗.北京:北京郵電大學出版社,2006.

      猜你喜歡
      校驗應(yīng)用程序指令
      聽我指令:大催眠術(shù)
      刪除Win10中自帶的應(yīng)用程序
      電腦報(2019年12期)2019-09-10 05:08:20
      ARINC661顯控指令快速驗證方法
      LED照明產(chǎn)品歐盟ErP指令要求解讀
      電子測試(2018年18期)2018-11-14 02:30:34
      爐溫均勻性校驗在鑄鍛企業(yè)的應(yīng)用
      大型電動機高阻抗差動保護穩(wěn)定校驗研究
      電測與儀表(2015年1期)2015-04-09 12:03:02
      基于加窗插值FFT的PMU校驗方法
      鍋爐安全閥在線校驗不確定度評定
      坐標系旋轉(zhuǎn)指令數(shù)控編程應(yīng)用
      機電信息(2014年27期)2014-02-27 15:53:56
      關(guān)閉應(yīng)用程序更新提醒
      電腦迷(2012年15期)2012-04-29 17:09:47
      望谟县| 易门县| 光山县| 施秉县| 密山市| 南宫市| 灵武市| 三明市| 呼玛县| 石河子市| 湘潭市| 綦江县| 灵武市| 密山市| 塘沽区| 贵阳市| 泾源县| 夹江县| 秭归县| 阳高县| 临城县| 大理市| 资兴市| 乌苏市| 南宁市| 米易县| 平邑县| 屏南县| 义乌市| 栖霞市| 江阴市| 马鞍山市| 仙桃市| 勃利县| 信丰县| 清流县| 昌江| 临清市| 靖州| 潞西市| 东乡县|