999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于“龍芯”的VxW orks系統函數在軌更新研究

2015-01-24 12:24:26史毅龍薛長斌
電子設計工程 2015年21期
關鍵詞:指令區域

史毅龍 , 薛長斌

(1.中國科學院大學 北京 100190;2.中國科學院空間科學與應用研究中心 北京 100190)

在航天領域,由于軟件設計的復雜程序越來越高,盡管軟件在研制過程中已發現和解決了大量軟件問題,但難免在軌飛行時仍發現少量軟件存在缺陷;同時某些需要載荷根據在軌飛行應用情況調整某些算法。基于以上等方面原因越來越需要軟件具有在軌更新能力[1]。一方面可保證航天應用的可靠運行,另一方面可提高軟件維修性。同時由于嵌入式操作系統為了符合航天領域的應用需要進行剪裁,本文所采用的基于“龍芯”計算機平臺的vxWorks操作系統為適應航天領域的需求剪裁掉了文件系統,所以無法使用動態加載模塊的方式實現函數的在軌更新,需要使用新的方法來實現在軌編程。同時更新函數中如果有函數調用則其調用的函數和全局變量的鏈接地址可能會發生變化,需要對函數和全局變量的調用指令做出修改。

結合這些背景,本文提出了針對“龍芯”體系結構的函數在軌更新方案以及設計了可調整調用指令的更新代碼提取工具,以滿足軟件具有在軌更新能力的航天任務要求。

1 函數在軌更新方案簡介

文中基于“龍芯”平臺的VxWorks操作系統由于要符合航天系統操作系統盡量小的要求,剪裁掉了文件系統,所以不能直接使用動態加載模塊的方式實現函數在軌更新,本文的在軌更新基于RAM進行,系統軟件在RAM中保留了一片區域,專用來保存在軌更新注入的函數代碼。龍芯計算機平臺下使用“JAL指令+函數名”的方式完成函數調用,在鏈接時,函數名會被鏈接器替換為函數的地址。JAL指令在執行時,會將自身地址寫入到寄存器ra中。通常JAL指令之后會跟延遲槽,因此返回地址為原函數調用指令地址+8[2]。

若將待更新函數的前幾條指令進行替換,修改為“JAL指令+新函數的地址”,這樣調用該函數后,替換的JAL指令會調用新的函數。從新函數返回后,將回到原函數的代碼繼續執行。因此需要將原函數第三條指令修改為返回指令,返回到原函數的調用處。

由于JAL指令調用新函數時,會當前地址寫入寄存器ra中,故會將原函數的返回地址(之前寄存器ra中的內容)覆蓋掉,因此在JAL指令之前,須將寄存器ra中的內容保存到堆棧中。在從新函數返回后,接著將堆棧中的原函數返回地址寫回到ra中,并通過返回指令回到原函數調用指令地址+8處,即回到原函數調用處的下一指令。

2 方案設計及內存分配

2.1 函數替換模塊設計

本設計的結構圖如圖1所示,原調用方式為通過JAL指令直接跳轉到被調函數然后通過jr ra返回,替換后的函數調用方式為將通過將原函數的前8條指令進行修改,替換為以下形式的指令

addiu$sp,$sp,-4

sw$ra,0($sp)

jal......

nop

lw$ra 0($sp)

jr$ra

nop

addiu$sp,$sp,4

從而實現對新函數的調用,圖1中給出了在軌替換前后的函數調用示例,可發現函數替換對其被調用者而言是不可見的,對其被調用者無任何影響。

圖1 在軌替換前后函數調用示例Fig.1 On-orbit replacement sample before and after the function call

2.2 在軌更新內存分配

為了保存在軌更新的函數代碼,系統軟件在RAM中預留了一片空間,專用來存儲函數更新代碼,并建立函數更新表對其進行管理,記錄原函數地址、更新代碼的存儲地址、更新函數的長度等信息[3]。

目前系統軟件啟動完成后的內存分配見圖2,其中USER_RESERVED區域為用戶保留區,不會被系統軟件所使用。該區域的大小在BSP的config.h文件中定義。

對BSP中RAM初始化的代碼(對于基于ROM的和引導ROM的vxworks映像在rom Init.s中)進行修改,使初始化時不對USER_RESERVED區域清零。在系統首次加電時由應用程序對該區域清零,而在系統復位時則不做清零處理。這樣修改是為了在系統復位后,USER_RESERVED區域中保存的內容不被清除掉。如果每次復位后該區域的內容均被擦除,其中保存的在軌更新代碼必須重新注入,在進行了函數在軌更新后,須時刻關注系統狀態,在復位發生后立即重新注入。這樣會對數據注入鏈路造成較大的壓力。

2.3 更新區域的布局

圖2 系統軟件啟動完成后的內存分配圖Fig.2 Memory allocation system diagram

2.2中提到在RAM中預留了用戶保留區域USERRESE RVED區域來建立函數更新表對函數更新進行管理,該區域內將記錄原函數地址、更新代碼的存儲地址、更新函數的長度等信息。在更新代碼注入完成且校驗正確后,需檢查是否有空間來存儲更新代碼,如果有則在函數更新表中增加一項,并確定更新代碼在更新專用區域中的存放地址,然后將注入的代碼從緩沖區拷貝到該地址。

為了保證可靠性,函數更新表及更新代碼存儲區域均采用三模處理。函數更新表在內部三模。更新代碼存儲區域則是將同一更新代碼存儲在3個區域,在執行更新替換前進行比對,防止錯誤。在軌更新區域內存布局如圖3,ONLINE_UPDATE_BEGIN定義了在軌更新區域首地址ONLINE_UPDATE_LEN定義了區域長度,ONLINE_UPDATE_END則定義了區域末地址,這些常量均需要在在軌更新頭文件(本文定義在onlineUpdate.h)中定義。

圖3 函數更新表Fig.3 Function update figure

3 在軌更新接口函數

為了便于應用程序使用在軌更新功能,制定并實現了在軌更新功能接口,分別實現在軌更新區域初始化,獲取下一個在軌更新的函數第一條指令的存儲地址,設置函數在軌更新,以及啟用和禁用函數更新功能。

4 系統調試代碼提取工具及調試結果

4.1 代碼提取工具

若待更新的函數中調用了其它函數,或是使用了全局變量,由于重新編譯鏈接后,函數和全局變量的鏈接地址均可能發生變化,從而導致更新的函數中引用的地址與當前星載計算機上正在運行的軟件中地址不一致[4]。在龍芯計算體系結構下,并不需要對全局變量進行處理,只需對函數調用指令進行處理。本文設計的代碼提取工具完成更新代碼的提取,并將更新代碼中的函數調用指令進行調整。

1)全局變量地址變化的處理方式

Gcc-wrs-mips交叉編譯器生成的數據段地址4 k字節對齊。更新后的函數體積若相對于原函數增加過大,則會造成數據段鏈接地址改變[5]。由于龍芯體系結構(基于mips體系結構)中存在著全局指針寄存器即gp寄存器,使用該指針能方便的存取static和extern數據,編譯器會將全局變量存放在gp中的全局指針指向的32 kB的地址范圍內,這樣鏈接地址的改變并不影響全局變量在gp中的指針指向的范圍的存放地址,因此調用時并不需要對鏈接地址改變了的全局變量進行修改,圖4,圖5為測試結果,圖4為全局變量gData1的鏈接地址,圖5為gData1鏈接地址變化前后編譯器通過gp寄存器調用gData1的指令對比。

圖4 函數更新后全局變量鏈接地址變化Fig.4 Global variable link address of updated function

圖5 全局變量鏈接地址發生變化前后gp指令對比Fig.5 Comparison of gp instructions before and after link address change

在軌運行的軟件中,gData1的地址分別為0x801ed874,而在本地編譯生成的更新函數代碼中,gData1的地址為0x801ed864。而此時使用gp寄存器調用gData1的指令并未發生變化,由此可見,通過利用gp寄存器,并不需要對改變了鏈接地址的全局變量改變做出修改。

2)函數鏈接地址的變化

在修改函數代碼重新編譯后,被修改函數之后的所有函數鏈接地址均會發生變化,由于修改了函數add,導致函數add和add之后的函數鏈接地址都發生了變化。add中調用了retOne函數,由于龍芯的函數調用指令JAL指令是由指令操作符和目標函數所在地址的低28位右移2位形成的指令偏移值一起構成,如圖6所示,因此需對JAL指令的調整。

圖6 jal指令構成Fig.6 Jal instruct

通過對更新代碼中的JAL指令進行解析,通過指令編碼中的偏移地址與指令地址高4位計算出JAL調用的函數地址。查找新的MAP文件,得到調用的函數名。然后利用函數名查找舊的MAP文件,獲取星載計算機中該函數的鏈接地址[6]。然后對調用函數的鏈接地址對JAL指令進行調整,即完成了JAL指令的調整工作。

4.2 代碼提取工具執行結果

代碼執行結果如圖7所示。

圖7 代碼提取工具與原碼對比Fig.7 Comparison between code from onlineUpdate tool and the old one

5 結束語

本文設計的基于龍芯計算機平臺的vxWorks函數在軌更新研究可行,設計的代碼提取工具能完成任務需求。測試結果顯示軟件能達到了設計目的,在航天工程領域具備較好的工程利用價值。

[1]安軍社,劉艷秋,孫輝先.VxWorks操作系統板級支持包的設計與實現[J].計算機工程,2003,29(7):117-119.AN Jun-she,LIU Yan-qiu,SUN Hui-xian.The design and implementation of operating system board support package[J].computer engineering,2003,29(1):117-119.

[2]張然峰,郝賢鵬,金龍旭,等.空間相機軟件在軌重注方法研究與實現[J].光機電信息,2011,28(6):30-34.ZHANG Ran-feng,HE Xian-peng,JIN Long-xu,et al.Onorbit space camera software research and implementation of heavy injection method[J].OME Information,2011,28 (6):30-34.

[3]喬從連.Vx Works系統的BSP概念及啟動過程[J].艦船電子對抗,2005,28(1):61-64.QIAOCong-lian.VxWorksSystem concept of BSPand concept of starting the process[J].Ship Electronic Countermeasures,2005,28(1):61-64.

[4]高進.衛星在軌編程技術研究[C].中國宇航學會計算機應用專業委員會學術交流會論文集,2004.

[5]朱虹,王海燕.一種星載軟件在軌編程功能的設計和實現技術[J].上海航天,2004(1):26-31.ZHU Hong,WANG Hai-yan.An orbit space-borne software programming function design and implementation of the technology[J]Aerospace Shanghai,2004(1):26-31.

[6]胡奇明.VxWorks操作系統的重新編譯和優化研究與實現[D].長沙:國防科學技術大學,2008.

猜你喜歡
指令區域
聽我指令:大催眠術
永久基本農田集中區域“禁廢”
今日農業(2021年9期)2021-11-26 07:41:24
分割區域
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
殺毒軟件中指令虛擬機的脆弱性分析
電信科學(2016年10期)2016-11-23 05:11:56
關于四色猜想
分區域
基于嚴重區域的多PCC點暫降頻次估計
電測與儀表(2015年5期)2015-04-09 11:30:52
一種基于滑窗的余度指令判別算法
主站蜘蛛池模板: 免费午夜无码18禁无码影院| 国产97视频在线| 蜜桃视频一区二区| 免费无码AV片在线观看国产| 伦精品一区二区三区视频| 国产毛片高清一级国语| 欧美色伊人| 超碰aⅴ人人做人人爽欧美| 国产在线精品香蕉麻豆| 一级毛片高清| 国产在线91在线电影| 国产激情第一页| 萌白酱国产一区二区| 久久窝窝国产精品午夜看片| 婷婷在线网站| 人妻少妇乱子伦精品无码专区毛片| 国产精品55夜色66夜色| 亚洲国产精品无码久久一线| 天天综合色网| 91无码视频在线观看| 91外围女在线观看| 国产91全国探花系列在线播放| 特级欧美视频aaaaaa| 精品无码视频在线观看| 性视频一区| 精品福利网| 国产极品美女在线观看| 中文字幕永久视频| 激情乱人伦| 4虎影视国产在线观看精品| 国产日韩丝袜一二三区| 亚洲人成网站观看在线观看| 国产正在播放| 国产人人射| 亚洲视频在线青青| 中国丰满人妻无码束缚啪啪| 麻豆精选在线| 亚洲国产欧美国产综合久久| av午夜福利一片免费看| 亚洲精品综合一二三区在线| 中文字幕免费在线视频| 国产日韩av在线播放| 亚洲精品在线91| 国产中文一区a级毛片视频| 久久香蕉国产线看观| 99re视频在线| 无码又爽又刺激的高潮视频| 亚洲人成网站色7799在线播放| 欧美a在线视频| 91小视频在线观看免费版高清| 精品久久久无码专区中文字幕| 亚洲无码不卡网| 亚洲欧美人成电影在线观看| 特级aaaaaaaaa毛片免费视频| 一区二区三区国产精品视频| 波多野结衣视频一区二区| 美女国产在线| 久久精品电影| 国产成人a毛片在线| 欧美成人怡春院在线激情| 日韩精品亚洲一区中文字幕| 午夜日韩久久影院| 爱爱影院18禁免费| 人人爽人人爽人人片| 热99re99首页精品亚洲五月天| 伊人成人在线视频| 欧美日韩专区| a免费毛片在线播放| 精品国产自在现线看久久| 一区二区欧美日韩高清免费| 黄片在线永久| 久久狠狠色噜噜狠狠狠狠97视色 | 久久福利网| 国产一级妓女av网站| 天天摸夜夜操| 国产精品露脸视频| 91精品伊人久久大香线蕉| 亚洲精品福利视频| 国产精品亚洲精品爽爽| 有专无码视频| 国产99热| 国产熟睡乱子伦视频网站|