• 
    

    
    

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

      一種基于向量表的在軌程序上注方法的研究

      2013-03-28 01:53:14朱亞杰王勁強石志成楊明明
      電子設(shè)計工程 2013年11期
      關(guān)鍵詞:程序代碼子程序應(yīng)用程序

      朱亞杰,王勁強,石志成,楊明明

      (北京空間機電研究所北京100081)

      隨著空間相機的功能、智能化及自主性要求越來越高,星載相機軟件[1]設(shè)計的復(fù)雜程度及可重配置性要求也越來越高,其功能、性能、安全性和可修改性直接影響了系統(tǒng)的可靠性和穩(wěn)定性[2],可見星載相機軟件的可修改性在軟件的生命期[3]內(nèi)具有非常重要的作用,這便客觀上需要星載相機軟件具有地面干預(yù)能力以應(yīng)對各種可能出現(xiàn)的異常事件。因此,為真正實現(xiàn)相機的星載軟件系統(tǒng)的在軌可修改性,使其具有較大的靈活性,進(jìn)行程序上注技術(shù)的研究非常重要的。據(jù)報告,NASA和ESA研制的衛(wèi)星大多具有程序上注能力,英國的SURREY公司將“在軌程序上注,完成系統(tǒng)加載”作為其商業(yè)化衛(wèi)星平臺的主要特色,但對具體的實現(xiàn)方法卻極少提及[4]。

      近幾年,國內(nèi)研制的航天器中不少分系統(tǒng)也逐漸開始采用程序上注技術(shù),也提出了一些實現(xiàn)方法[5],并證明是解決某些在軌問題的有效手段,但在空間相機分系統(tǒng)中的研究極少。針對空間相機軟件系統(tǒng)對在軌維護(hù)、故障自診斷及重配置等的迫切需求,本文提出了一種基于嵌入式系統(tǒng)平臺的程序上注的方法,來研究程序上注技術(shù)在星載相機軟件系統(tǒng)中的應(yīng)用。通過該方法的實現(xiàn),一方面,可根據(jù)空間相機在軌運行情況,及時消除軟件功能模塊的自身故障,提高其可靠性和安全性;另一方面,通過軟件在軌重組,利用現(xiàn)有硬件資源,增加或刪除軟件功能模塊,進(jìn)一步提高空間相機對新的需求的適應(yīng)能力。

      1 程序上注的嵌入式系統(tǒng)硬件平臺

      為研究程序上注技術(shù),設(shè)計了一種基于BM3803+FLASH+SRAM+1553B的嵌入式系統(tǒng)平臺,系統(tǒng)由BM3803、FLASH、SRAM、1553B組成,如圖1所示。

      圖1 硬件平臺結(jié)構(gòu)框圖Fig.1 Structure diagram of hardware platform

      本系統(tǒng)采用基于SPARC V8的國產(chǎn)高性能32位微處理器BM3803,時鐘頻率為0~100MHz,具有8個寄存器窗口;5級流水線;完全的三模冗余、EDAC和奇偶校驗;硬件乘/除法器,并且具有豐富的外設(shè),可擴展性極好。

      BM3803處理器的抗輻射性能好,總劑量(TID)抗輻能力為100 krad(Si),優(yōu)于1E-5錯誤/器件/day的SEU事件,優(yōu)于70 Mev cm2/mg的抗閂鎖(SEL)能力,并且處理事務(wù)的速度快、容錯設(shè)計好、自身具有檢錯與一位糾錯功能以及良好的可擴展性等,使其能夠滿足各種航天應(yīng)用的功能和性能指標(biāo)要求,在航天領(lǐng)域有廣闊的應(yīng)用前景。

      FLASH以它的集成度和擦寫次數(shù)方面的技術(shù)優(yōu)勢成為市場主流。對于數(shù)據(jù)存儲器采用讀寫速度非??斓腟RAM,以匹配速度較快的BM3803處理器??紤]到太空粒子的輻射效應(yīng),如單粒子翻轉(zhuǎn)(SEU)、電離總劑量(TID)等,分別選擇比較成熟的軍品AM29LV160D型號的FLASH和3DSR16VS4502型號的SRAM,它們與同類產(chǎn)品相比具有高可靠性和高集成度、功耗低、讀寫速度快的特點。分別選用三片器件來組成512MB的FLASH空間和1MB的SRAM空間為程序上注提供了足夠大的存儲資源。

      1553B總線具有分布處理、集中控制和實時響應(yīng)的特點,并且具有極高的可靠性,采用雙冗余系統(tǒng),有兩個傳輸通道(A、B),保證了良好的容錯設(shè)計和故障隔離,每組1553B總線的A、B總線為熱備份關(guān)系,通信波特率最高可達(dá)2Mbps,在實時性和可靠性方面保證了系統(tǒng)內(nèi)部的總線通信。

      2 程序上注技術(shù)的研究

      2.1 程序上注的原理

      程序上注主要是星載相機軟件在運行過程中通過地面人為干預(yù),將需要修改的可執(zhí)行代碼注入到星載計算機的內(nèi)存中,以替換原來的功能模塊,從而改變軟件的運行程序以應(yīng)對各種可能出現(xiàn)的異常。

      程序上注主要是分兩步來實現(xiàn)的[6]。首先,地面通過通信鏈路將需要上注的程序代碼上傳給星務(wù)計算機。然后,星務(wù)計算機通過星上1553B總線等將這些程序代碼下發(fā)至相機分系統(tǒng)的存儲區(qū),以修改原程序代碼。本文重點研究后一個步驟,即相機分系統(tǒng)接收星務(wù)計算機上注的程序代碼以及后續(xù)處理過程。

      圖2 程序上注的原理Fig.2 Theory of on-board reprogramming

      2.2 程序上注的實現(xiàn)

      2.2.1 實現(xiàn)方法

      本文主要是采用修改向量表的方法來實現(xiàn)程序上注。

      修改向量表的方法主要是以子程序(軟件模塊)為基本的替代單位[6],將所有子程序(包括有可能進(jìn)行程序上注的子程序)的入口地址放在一個向量表中,軟件在調(diào)用任何子程序時均是通過調(diào)用向量表來獲得子程序的入口地址。程序上注時,首先將修改或增加的程序代碼(一個或多個子程序)注入到FLASH中的相應(yīng)位置,然后再修改向量表中的子程序入口地址,使之指向想要調(diào)用的子程序的入口地址。

      2.2.2 子程序調(diào)用機制

      程序上注是以子程序為基本替代單位,軟件在調(diào)用任何子程序時,均是通過向量表來獲得子程序的入口地址。向量表是用來存放子程序的入口地址,定義為一個一維指針數(shù)組。向量表會為可能上注的子程序預(yù)留一定的空間,其大小依據(jù)軟件設(shè)計需要來定義。

      向量表需要定義兩次,一次是將BootLoader和用戶應(yīng)用程序一起固化在FLASH中的初始化定義,另一次是在FLASH的注入向量表區(qū)0x20000起始地址中的定義。上電時,BootLoader會將0x20000處的向量表搬移到初始化定義的位置并覆蓋,然后運行主程序并從向量表中獲取正確的入口地址。這樣能保證每次上電時,向量表的搬移地址不變,以保證BootLoader不變,這也是該方法的的一個優(yōu)勢所在。

      圖3 向量表的定義Fig.3 Definition of vector table

      圖3(b)中SubProg2_Mod_Addr是SubProg2_Addr修改后的子程序,SubProg4_New_Addr是新增加的子程序。如果仍需運行SubProg2_Addr子程序,只需要修改向量表,將SubProg2_Addr修改回來并注掉SubProg2_Mod_Addr即可。

      該方法是通過向量表來直接調(diào)用子程序。如向量表中的定義的子程序SubProg1_Addr、SubProg2_Addr、SubProg3_Addr,則軟件中調(diào)用這3個子程序的原理如圖4所示。

      圖4 子程序調(diào)用流程圖Fig.4 Flow chart of calling sub-program

      系統(tǒng)上電后,啟動引導(dǎo)加載程序BootLoader,將應(yīng)用程序搬移到SRAM中,PC指針會跳至SRAM的起始地址0x40000000開始運行應(yīng)用程序,進(jìn)入主函數(shù)找到向量表入口地址,進(jìn)而判斷子程序的入口地址是否不為零,若不為零,進(jìn)入子程序入口地址,反之繼續(xù)往下判斷。

      2.2.3 地址空間分配

      1)FLASH存儲區(qū)

      FLASH主要用來存放系統(tǒng)引導(dǎo)加載程序、用戶應(yīng)用程序以及上注的程序等。地址空間為:0x0-0x1FFFFFFF。

      圖5 FLASH的地址空間劃分Fig.5 Address space dipartition of FLASH

      圖5中,將新向量表統(tǒng)一放在FLASH的起始地址為0x20000的位置,新子程序模塊統(tǒng)一放在FLASH的起始地址為0x40000的位置。每個新子程序模塊單獨存放在FLASH中的注入程序段中,即新子程序1、2依次存放在SA1、SA2段中。只要進(jìn)行程序上注,向量表就必須修改并且注入到FLASH的0x20000位置,以替換原來的向量表,這樣搬移到SRAM中運行的向量表才是更新后的向量表。

      由于使用該方法進(jìn)行程序上注是以子程序為單位,即使子程序中僅僅修改了一個變量,也需要將整個子程序全部重新注入。由于不可知未來將要上注多大代碼量的子程序,為了提高代碼區(qū)的使用效果,暫規(guī)定任何一個需要注入的子程序的可執(zhí)行代碼長度不超過32*1 024字。因此在極端情況下,分段注入FLASH的子程序區(qū)可以注入29個新子程序。

      2)SRAM存儲區(qū)

      SRAM的速度較快,程序會搬移到SRAM中運行,并且向量表總是在所有程序的最后。地址空間為:0x40000000-0x400FFFFF。

      新子程序統(tǒng)一搬移到SRAM的起始地址為0x40200000空間。

      新向量表替換原來向量表的位置,在SRAM中的0x4000C000起始地址空間。

      由于在定義向量表的時候已經(jīng)給新子程序預(yù)留了空間,在替換原向量表時不會存在覆蓋后面程序代碼的問題。

      圖6 SRAM的地址空間劃分Fig.6 Address space dipartition of SRAM

      3 上注數(shù)據(jù)包的幀格式

      相機分系統(tǒng)使用單消息模式接收衛(wèi)星數(shù)管分系統(tǒng)發(fā)送的數(shù)據(jù)代碼。上注代碼按照每條消息32個字打包,每條消息有3部分組成:包頭(消息序號數(shù))、應(yīng)用程序代碼、應(yīng)用程序代碼按位異或和校驗位。具體格式如表1所示。

      表1 注入數(shù)據(jù)包幀格式Tab.1 Frame format of reprogramming data package

      當(dāng)上注應(yīng)用程序代碼結(jié)束后,衛(wèi)星數(shù)管分系統(tǒng)會向相機分系統(tǒng)發(fā)送一個結(jié)束字說明上注程序已完成。這個結(jié)束字是由標(biāo)志位、應(yīng)用程序代碼長度、地址位組成。具體如表2。

      表2 結(jié)束字?jǐn)?shù)據(jù)包幀格式Tab.2 Frame form at of ending data package

      4 試驗驗證

      在實驗室環(huán)境中進(jìn)行了BM3803子程序模塊的更新試驗,驗證使用修改向量表方法來實現(xiàn)BM3803軟件的程序上注的可行性與正確性。試驗時地檢臺將SPE-C2.53編譯生成的.bin文件經(jīng)1553B總線注入。如圖7所示。

      圖7 試驗?zāi)MFig.7 Experiment simulation figure

      為了便于觀察,將子程序A的計算結(jié)果作為遙測量返給地檢臺,同時利用BM3803的板上資源加入亮燈現(xiàn)象。

      原現(xiàn)象:運行子程序A,地檢臺上返遙測量為10,同時6燈亮。

      目標(biāo):利用修改向量表的方法修改子程序A為A’,注入A’,運行,返遙測量為18,同時8燈亮。

      具體步驟如下:

      1)將引導(dǎo)加載程序BootLoader與含有子程序A的應(yīng)用程序一起燒寫至FLASH的0x0起始地址空間。

      2)從編譯生成的.bin文件中提取出向量表B的代碼,燒寫至FLASH的0x20000起始地址空間,系統(tǒng)上電后,地檢臺收到的返遙測量為10,同時6燈亮,證明子程序A正確運行。

      3)地面修改子程序A和向量表B。修改后的新子程序記為A’,新向量表記為B’。編譯含有A’和B’的完整應(yīng)用程序,驗證二者的正確性,并從編譯后生成的.bin文件中提前二者的程序代碼。

      4)對照上述所講的上注數(shù)據(jù)包的幀格式將A’和B’進(jìn)行打包。A’大小為12128字節(jié),分為203條消息來上注。

      5)通過1553B總線將打包好的A’和B’傳送至BM3803的存儲區(qū)。程序上注的數(shù)據(jù)代碼要求很高的可靠性,這便利用包頭和校驗位進(jìn)行驗證。若包頭和校驗位有一個不正確,均會返回相應(yīng)的錯誤給地檢臺,地檢臺再做相應(yīng)的重發(fā)處理。

      6)注入代碼結(jié)束后,地檢臺會發(fā)送一個結(jié)束字,依據(jù)結(jié)束字的標(biāo)志位0x2000和0x4000判斷相應(yīng)的存儲位置。A’上注結(jié)束后,結(jié)束字的標(biāo)志位為0x4000,會存放在FLASH的0x40000起始地址空間。B’上注結(jié)束后,結(jié)束字的標(biāo)志位為0x2000,會存放在FLASH的0x20000起始地址空間。這樣便使FLASH中的應(yīng)用程序得以更新。

      7)系統(tǒng)斷/上電,初始化BootLoader會將A’搬移到SRAM的0x40200000起始地址空間,B’搬移到原向量表的位置0x4000C000起始地址空間,與未修改的程序組成一完整程序運行。地檢臺上的反遙測量為18,同時8燈亮。與預(yù)期目標(biāo)一致,證明子程序A’正確的運行了。同時也驗證了利用修改向量表方法來實現(xiàn)程序上注的可行性與正確性。

      8)考慮到上注過程中的實時性要求,每條消息之間的時間間隔設(shè)置為61580最短時間間隔8 μ,使用示波器測得將子程序A’注入BM3803的存儲取所需要的時間為106 ms,這個時間完全滿足實時性的需求,可以被接受。

      本實驗驗證了使用修改向量表的方法來修改子程序,以替換原來的子程序,完成程序上注的過程。同樣,驗證了利用該方法來增加新子程序模塊、刪除子程序等試驗,結(jié)果是正確的,完全驗證了該方法來實現(xiàn)程序上注技術(shù)的正確性。

      5 結(jié)束語

      程序上注技術(shù)是提高星載相機軟件自治性和靈活性的一種有效手段,能夠更好地滿足星載相機軟件功能的自身故障修改,以及對新增功能進(jìn)行適應(yīng)性、完善性維護(hù)[7,8],是未來星載相機軟件的發(fā)展方向。我國在這方面的研究還比較少,因而本文的研究有著非常好的應(yīng)用前景。同時,由于它過多地依賴天地通信[9],上注過程容易被中斷并且剛剛起步,缺乏有效地地面檢驗措施和上天經(jīng)驗,因此急需做進(jìn)一步的工作。本文是在國產(chǎn)高性能微處理器BM3803的嵌入式硬件平臺上進(jìn)行程序上注的研究,試驗證明,這種修改向量表的方法來實現(xiàn)程序上注是合理可行的,能夠滿足星載相機軟件的在軌修改及擴充功能,以提高空間相機的可靠性和適應(yīng)性,延長其壽命。

      [1] Peccia N,Giannini F.XMMInstrument On-board Software Maintenance Concept[J].NASA report,1994(1):984-992.

      [2] 朱虹,王海燕.一種星載軟件在軌編程功能的設(shè)計和實現(xiàn)技術(shù)[J].上海航天,2004(1):26-31.ZHU Hong,WANG Hai-yan.The technology of design and realization of on-board programming for AOCS[J].Aerospace Shanghai,2004(1):26-31.

      [3] Tai A T,Alkalai L.On-board Maintenance for Long-life System[C]//Proceeding of the IEEE Workshop on Application-Specific software Engineering and Technology(ASSET-98),Los Angeles,USA 1998:69-74.

      [4] 高進(jìn),顧斌.衛(wèi)星在軌編程技術(shù)研究[C]//中國宇航學(xué)會計算機應(yīng)用專業(yè)委員會2004年學(xué)術(shù)交流會,北京,中國宇航學(xué)會,2004:201-204.

      [5] 吳國春,鐘興旺,陶曉霞.星載軟件在軌重配置中斷處理機制研究[J].空間電子技術(shù),2011(2):68-71.WU Guo-chun,ZHONG Xing-wang,TAO Xiao-xia.Interrupt processing technology on On-Board software reconfiguration for satellites[J].Space Electronic Technology,2011(2):68-71.

      [6] 張然峰,郝賢鵬,金龍旭,等.空間相機軟件在軌重注方法研究與實現(xiàn)[J].光機電信息,2011(6):30.ZHANG Ran-feng,HAO Xian-peng,JIN Long-xu,et ak.Study and Realization on Method of Software in Space Camera On-Board Reprogramming[J].Optics,Mechanics&Electronics Information,2011(6):30.

      [7] Ann T T,Kam S T,Leon A,et al.Low-cost error containment and recovery for on-board guarded software upgrading and beyond[J].IEEE Transactions on Computers,2002,51(2):121-136.

      [8] Ann T.T,Kam S.T,Leon A,et al.Chau and William H.Sanders.“On-board Guarded Software Upgrading for Space Mission”[C]//Proceeding of the 18th Digital Avionics System Conference,Los Angeles,USA,1999:1-8.

      [9] LIU Peng,DAI Guo-jun,F(xiàn)U Ting-ting.Fault-tolerant Onboard Evolutionary Platform for Adaptive Allocation of Hardware and Software Tasks[C]//Proceeding of the 7thWorld Congress on Intelligent Control and Automation,Chongqing,China,2008:107-110.

      猜你喜歡
      程序代碼子程序應(yīng)用程序
      刪除Win10中自帶的應(yīng)用程序
      電腦報(2019年12期)2019-09-10 05:08:20
      計算機網(wǎng)絡(luò)信息安全未來發(fā)展趨勢
      基于圖元裝接模式由程序流程圖自動生成源代碼
      軟件工程(2016年11期)2017-01-17 16:56:57
      淺談子程序在數(shù)控車編程中的應(yīng)用
      子程序在數(shù)控車加工槽中的應(yīng)用探索
      西門子840D系統(tǒng)JOG模式下PLC調(diào)用并執(zhí)行NC程序
      關(guān)閉應(yīng)用程序更新提醒
      電腦迷(2012年15期)2012-04-29 17:09:47
      簡化編程與子程序嵌套的應(yīng)用
      科技傳播(2011年24期)2011-08-29 05:39:46
      三星電子將開設(shè)應(yīng)用程序下載商店
      微軟軟件商店開始接受應(yīng)用程序
      香河县| 驻马店市| 永登县| 裕民县| 西乡县| 博湖县| 海兴县| 土默特右旗| 西峡县| 弥渡县| 股票| 定西市| 祁连县| 定日县| 汉阴县| 静宁县| 瑞丽市| 道孚县| 临夏市| 大石桥市| 巴林左旗| 刚察县| 安达市| 泸溪县| 安乡县| 昭平县| 安陆市| 德兴市| 苏尼特右旗| 横山县| 隆回县| 青阳县| 武威市| 化隆| 定远县| 名山县| 集安市| 湘潭市| 盐山县| 北辰区| 巴林左旗|