国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

S698-T處理器的RTEMS移植和應(yīng)用程序開(kāi)發(fā)

2015-07-02 00:17熊瑤歐陽(yáng)高翔
關(guān)鍵詞:寄存器字節(jié)中斷

熊瑤,歐陽(yáng)高翔

(1.中國(guó)科學(xué)院大學(xué),北京 100094;2.中國(guó)科學(xué)院 光電研究所)

?

熊瑤1,2,歐陽(yáng)高翔2

(1.中國(guó)科學(xué)院大學(xué),北京 100094;2.中國(guó)科學(xué)院 光電研究所)

一個(gè)簡(jiǎn)單的星載計(jì)算機(jī)模型由一個(gè)模擬真實(shí)衛(wèi)星的嵌入式系統(tǒng)和系統(tǒng)運(yùn)行所必需的數(shù)據(jù)集合組成,該數(shù)據(jù)集合由PC機(jī)上運(yùn)行的程序生成,模擬真實(shí)衛(wèi)星的運(yùn)行環(huán)境。為了構(gòu)建這個(gè)模型,首先要完成以SPARC V8架構(gòu)處理器S698-T為基礎(chǔ)的RTEMS操作系統(tǒng)移植,然后分別在S698-T端和PC端開(kāi)發(fā)對(duì)應(yīng)的應(yīng)用程序,討論構(gòu)建嵌入式系統(tǒng)的主要步驟和需要注意的問(wèn)題。

星載計(jì)算機(jī);RTEMS;S698-T;SPARC

引 言

建立一個(gè)簡(jiǎn)單的星載計(jì)算機(jī)模型,可以很方便地對(duì)某些技術(shù)和設(shè)備進(jìn)行驗(yàn)證,降低正式項(xiàng)目的研究成本。模型的各類(lèi)參數(shù)應(yīng)當(dāng)與實(shí)際的星載計(jì)算機(jī)一致,因此對(duì)構(gòu)建模型的處理器與相應(yīng)的操作系統(tǒng)都提出了較高的技術(shù)要求。同時(shí),在保證項(xiàng)目質(zhì)量的前提下控制研究成本,最可靠的辦法是采用在航天領(lǐng)域已經(jīng)成功應(yīng)用的開(kāi)源產(chǎn)品。

SPARC是一種開(kāi)源的精簡(jiǎn)指令集處理器架構(gòu),其突出特點(diǎn)是具有可擴(kuò)展性。ERC32是歐洲航天局為了打破美國(guó)對(duì)星載微處理器的壟斷地位而開(kāi)發(fā)的一款基于SPARC V7架構(gòu)的面向空間應(yīng)用的微處理器,后續(xù)基于SPARC V8的處理器也成功應(yīng)用于航天工程。事實(shí)證明,SPARC架構(gòu)處理器正在航天領(lǐng)域發(fā)揮越來(lái)越大的作用。RTEMS是一款開(kāi)源嵌入式實(shí)時(shí)操作系統(tǒng),最初由美國(guó)國(guó)防部開(kāi)發(fā)并應(yīng)用于導(dǎo)彈控制系統(tǒng),后來(lái)轉(zhuǎn)為開(kāi)源,由OAR公司進(jìn)行維護(hù)。

本文搭建的星載計(jì)算機(jī)模型,至少需要一個(gè)模擬真實(shí)衛(wèi)星軟硬件環(huán)境的嵌入式系統(tǒng)和一個(gè)系統(tǒng)運(yùn)行所必需的數(shù)據(jù)集合。在本文中,嵌入式系統(tǒng)是在SPARC V8架構(gòu)處理器S698-T 基礎(chǔ)上移植RTEMS完成的,而數(shù)據(jù)集合由PC機(jī)上運(yùn)行的程序生成,二者通過(guò)串口進(jìn)行數(shù)據(jù)通信。

1 星載計(jì)算機(jī)模型的實(shí)現(xiàn)

1.1 主要步驟

本文的目標(biāo)是建立一個(gè)簡(jiǎn)單的星載計(jì)算機(jī)模型,使之能夠?qū)ο嚓P(guān)技術(shù)進(jìn)行驗(yàn)證。最理想的情況是,在模型操作系統(tǒng)中運(yùn)行的應(yīng)用程序應(yīng)當(dāng)是實(shí)際星務(wù)軟件在該系統(tǒng)下的移植版本,但為了能夠盡早對(duì)星載計(jì)算機(jī)模型進(jìn)行測(cè)試,以便及時(shí)發(fā)現(xiàn)可能存在的問(wèn)題,本文將不會(huì)涉及星務(wù)軟件的移植工作。操作系統(tǒng)中運(yùn)行的應(yīng)用程序應(yīng)盡可能簡(jiǎn)化,但必須能夠在S698-T處理器上完成一定量的數(shù)據(jù)處理工作,并實(shí)現(xiàn)與PC機(jī)間的數(shù)據(jù)通信功能,模擬的是星載計(jì)算機(jī)的數(shù)據(jù)處理流程和與地面控制站的數(shù)據(jù)通信過(guò)程。

首先, RTEMS嵌入式操作系統(tǒng)到S698-T處理器的移植,這部分工作的主要內(nèi)容是RTEMS開(kāi)發(fā)環(huán)境的建立和BSP的開(kāi)發(fā)。其次,RTEMS嵌入式操作系統(tǒng)中應(yīng)用程序的建立,實(shí)現(xiàn)串口控制以及與PC機(jī)間的數(shù)據(jù)通信功能。

1.2 RTEMS操作系統(tǒng)的移植

1.2.1 建立交叉開(kāi)發(fā)環(huán)境

開(kāi)發(fā)環(huán)境采用宿主機(jī)/目標(biāo)機(jī)模式,宿主機(jī)為x86架構(gòu)PC機(jī),運(yùn)行Fedora 19,目標(biāo)機(jī)為SPARC V8架構(gòu)的S698-T處理器,運(yùn)行RTEMS。宿主機(jī)和目標(biāo)機(jī)通過(guò)串口與DSU連接,串口負(fù)責(zé)數(shù)據(jù)通信,DSU負(fù)責(zé)在PC端對(duì)S698-T處理器進(jìn)行在線調(diào)試。

在Fedora系統(tǒng)中建立交叉開(kāi)發(fā)環(huán)境時(shí),安裝的交叉開(kāi)發(fā)工具采用添加了RTEMS補(bǔ)丁的GNU工具鏈(GCC、GDB、binary utilties、newlib等),這些工具可通過(guò)在RTEMS官網(wǎng)的ftp服務(wù)器上下載對(duì)應(yīng)的RPM包直接安裝,比使用源碼包編譯安裝更加方便,且能夠避免后者在安裝過(guò)程中可能遇到的大部分問(wèn)題。

在安裝完交叉開(kāi)發(fā)工具后,需要為系統(tǒng)指定開(kāi)發(fā)工具的安裝路徑,即設(shè)置環(huán)境變量:

export PATH=/opt/rtems-4.10/bin:$PATH

其中,/opt/rtems-4.10/bin是使用RPM包安裝交叉編譯工具時(shí)默認(rèn)的安裝路徑。同時(shí)需要注意,F(xiàn)edora采用bash作為shell,如果只在命令終端執(zhí)行上述命令,則會(huì)發(fā)現(xiàn)環(huán)境變量將還原至初始狀態(tài),需要重新設(shè)置。該問(wèn)題最好的解決辦法是,將編譯工具的路徑寫(xiě)到~/.bashrc中:

echo "export PATH="/opt/rtems-4.10/bin:"$PATH">>~/.bashrc

重新登錄后,環(huán)境變量保持改變后的狀態(tài)。

1.2.2 BSP的開(kāi)發(fā)與測(cè)試

第1步,選擇BSP模板,RTEMS源碼提供了市場(chǎng)上流通的大多數(shù)架構(gòu)處理器的BSP模板,從中選擇與S698-T架構(gòu)最相似的leon2 BSP作為開(kāi)發(fā)基礎(chǔ),做進(jìn)一步修改。

第2步,修改BSP配置文件leon2.cfg中相關(guān)的結(jié)構(gòu)體系定義。

第3步,修改BSP目錄下的所有Makefile.am文件,并重新生成Makefile.in文件。

第4步,修改啟動(dòng)代碼,包括建立TRAP表、基本的CPU初始化、設(shè)置中斷堆棧等。

第5步,RTEMS系統(tǒng)配置,如設(shè)置RTEMS配置表、系統(tǒng)初始化任務(wù)表、用戶(hù)初始化任務(wù)表等,同時(shí)還需要提供板上外設(shè)的驅(qū)動(dòng)程序。

第6步,測(cè)試和調(diào)試,生成可執(zhí)行映像并下載到S698-T處理器上運(yùn)行,測(cè)試BSP的正確性。

1.3 BSP的開(kāi)發(fā)

在上述BSP開(kāi)發(fā)相關(guān)的步驟中,第3步修改啟動(dòng)代碼最為重要。RTEMS BSP的啟動(dòng)代碼主要包含在start.s、bootcard.c和bspstart.c等文件中。其中,start.s是系統(tǒng)上電后執(zhí)行的第一段程序,包含了用于安裝trap表和硬件初始化的代碼,之后跳轉(zhuǎn)到bootcard.c執(zhí)行進(jìn)一步的系統(tǒng)初始化。

1.3.1 trap表安裝

leon2 BSP中的trap表結(jié)構(gòu)簡(jiǎn)單,主要作用是對(duì)各類(lèi)trap處理函數(shù)入口地址進(jìn)行統(tǒng)一管理,其格式一般為T(mén)RAP( trap_type, SYM(trap_handler) ),作用是當(dāng)處理器發(fā)生具體的trap時(shí),系統(tǒng)根據(jù)trap_type調(diào)用對(duì)應(yīng)的處理函數(shù)SYM(trap_handler)。

默認(rèn)的trap表簡(jiǎn)要如下:

PUBLIC(trap_table)

SYM(trap_table):

RTRAP( 0, SYM(hard_reset) ); ! 00復(fù)位

BAD_TRAP; ! 01取指令異常

BAD_TRAP; ! 02企圖執(zhí)行UNIMP或其他未實(shí)現(xiàn)的指令

BAD_TRAP; ! 03用戶(hù)模式下企圖執(zhí)行特權(quán)指令

BAD_TRAP; ! 04FPU不存在或關(guān)閉時(shí),企圖執(zhí)行浮點(diǎn)處理指令

TRAP(5, SYM(window_overflow_trap_handler) );

! 05窗口上溢

TRAP(6,SYM(window_underflow_trap_handler) );

! 06窗口下溢

其中BAD_TRAP在start.s文件開(kāi)頭定義,與硬件復(fù)位的trap處理函數(shù)一致。第0x00~0x7F為硬件trap,其中,第0x7E號(hào)trap定義為系統(tǒng)時(shí)鐘頻率,默認(rèn)為10 MHz;第0x80~0xFF定義為軟件trap,可通過(guò)ta指令使用。

當(dāng)掌握trap表中trap及對(duì)應(yīng)處理函數(shù)的映射關(guān)系后,可以嘗試在start.s中對(duì)某些BAD_TRAP類(lèi)的trap的處理函數(shù)做出具體的定義:首先在start.s文件開(kāi)頭聲明一個(gè)trap處理函數(shù),然后在trap表中完成指定處理函數(shù)和指定trap的映射關(guān)系,最后在strat.s文件末尾前定義具體的處理函數(shù)代碼,上述代碼全部由匯編語(yǔ)句完成。通過(guò)這種方式,就可以清楚直觀地認(rèn)識(shí)到strat.s中trap表的工作方式,但并不推薦在實(shí)際工作中使用這種方法定義自己的trap處理函數(shù)。

一般定義自己的trap處理函數(shù)是在RTEMS應(yīng)用程序中完成的。S698-T處理器包含了32類(lèi)trap,其中包括S698-T處理器的15個(gè)一級(jí)中斷(0x11~0x1F號(hào)trap)和32個(gè)二級(jí)中斷。二級(jí)中斷的輸出連在了一級(jí)中斷的10號(hào)中斷(0x1A號(hào)trap)上,trap_type即所需中斷向量號(hào),例如,在安裝“系統(tǒng)默認(rèn)uart0中斷”的處理函數(shù)時(shí),主要使用的指令如下所示:

rtems_interrupt_catch(uart0_interrupt_handler,0x13,&old_isr_entry);//捕捉中斷向量號(hào)為0x13的中斷,即uart0中斷,將其與一個(gè)具體的中斷處理函數(shù)聯(lián)系起來(lái)

rtems_isr uart0_interrupt_handler(rtems_vector_number vector)//安裝具體的中斷處理函數(shù)

在進(jìn)入中斷處理函數(shù)時(shí),首先要關(guān)掉中斷,在執(zhí)行完中斷處理代碼后再打開(kāi)中斷,然后才能退出中斷處理函數(shù),返回程序中斷點(diǎn)繼續(xù)運(yùn)行。

1.3.2 系統(tǒng)硬件初始化

在系統(tǒng)上電完成trap表的安裝后,開(kāi)始執(zhí)行硬件的復(fù)位初始化代碼,主要完成以下功能:

① 初始化陷阱基址寄存器tbr,將trap表的安裝地址存入tbr寄存器中,這也是系統(tǒng)的啟動(dòng)地址,在S698-T處理中是0x 4000 0000;

② 初始化窗口無(wú)效屏蔽寄存器wim;

③ 使能trap;

④ 設(shè)置系統(tǒng)堆棧,根據(jù)現(xiàn)有的sp設(shè)置fp;

⑤ 復(fù)制.data段和清空.bss段;

⑥ 跳轉(zhuǎn)到bootcard.c,完成目標(biāo)板特定的系統(tǒng)配置和RTEMS的系統(tǒng)初始化。

需要注意的是,默認(rèn)的硬件初始化代碼中沒(méi)有對(duì)psr寄存器和sp寄存器進(jìn)行初始化,也沒(méi)有對(duì)內(nèi)存配置寄存器進(jìn)行初始化,更重要的是,沒(méi)有對(duì)S698-T內(nèi)8個(gè)窗口的寄存器進(jìn)行初始化,可能會(huì)造成不必要的異常。因此,在S698-T的初始化代碼中,必須要對(duì)8個(gè)窗口的寄存器清零。

對(duì)窗口寄存器清零略——編者注。

1.3.3 RTEMS的系統(tǒng)初始化

在執(zhí)行完start.s中的啟動(dòng)代碼后,將跳轉(zhuǎn)到bootcard.c,完成RTEMS的基本配置,如設(shè)置RTEMS配置表、CPU依賴(lài)信息表的相關(guān)入口等[3]。bootcard.c會(huì)根據(jù)目標(biāo)機(jī)環(huán)境重新配置RTEMS,為系統(tǒng)初始化任務(wù)建立標(biāo)準(zhǔn)C支持環(huán)境。最后,開(kāi)啟多任務(wù)調(diào)度,運(yùn)行應(yīng)用程序中配置的第一個(gè)任務(wù)。

1.4 BSP的測(cè)試

RTEMS內(nèi)核與應(yīng)用程序構(gòu)成了一個(gè)基于函數(shù)調(diào)用形式的整體功能單元,其最直接的表現(xiàn)形式是RTEMS內(nèi)核與應(yīng)用程序代碼共同編譯生成一個(gè)可執(zhí)行文件,當(dāng)二者能夠正常編譯可執(zhí)行文件,且該文件下載到S698-T處理器上后能夠正常運(yùn)行時(shí),證明了BSP的有效性,進(jìn)而可以進(jìn)行下一步工作。測(cè)試使用RTEMS自帶用例hello_world_c,使用默認(rèn)配置時(shí),生成的可執(zhí)行文件為hello.exe。

值得注意的是,在編譯應(yīng)用程序時(shí)使用標(biāo)準(zhǔn)的Makefile文件,最后編譯生成的可執(zhí)行文件目錄下將會(huì)有記錄整個(gè)鏈接過(guò)程的.num文件,該文件記錄了hello.exe中所有符號(hào)及其在內(nèi)存中的加載地址。在這里,符號(hào)指的是程序中定義過(guò)的函數(shù)、全局變量和靜態(tài)變量。

在應(yīng)用程序的開(kāi)發(fā)過(guò)程中,可直接在測(cè)試用例Makefile文件基礎(chǔ)上進(jìn)行改造,以減少工作量。

2 應(yīng)用程序開(kāi)發(fā)

在完成BSP的測(cè)試后,就要實(shí)現(xiàn)S698-T處理器與PC機(jī)間的數(shù)據(jù)通信和處理功能,需要在 PC/Windows端和S698-T/RTEMS端均開(kāi)發(fā)一個(gè)串口控制程序。

2.1 PC/Windows端串口控制程序

使用VS2008的MSCOMM控件,在MFC程序中可以很方便地對(duì)串口進(jìn)行控制[4]。而在開(kāi)發(fā)MFC程序時(shí),應(yīng)當(dāng)特別注意兩個(gè)問(wèn)題:多字節(jié)數(shù)據(jù)的串口連續(xù)發(fā)送以及不同硬件平臺(tái)編址方式的差異。

2.1.1 多字節(jié)數(shù)據(jù)的串口連續(xù)發(fā)送

S698-T處理器自帶兩個(gè)通用異步串口,其接收和發(fā)送緩存均為一個(gè)字節(jié),即串口一次只能處理一個(gè)字節(jié)的數(shù)據(jù),而在MFC應(yīng)用程序中通過(guò)串口發(fā)送的數(shù)據(jù)包括整型、長(zhǎng)整型、浮點(diǎn)型和字符型,在內(nèi)存中分別占4、4、4和1個(gè)字節(jié)。因而必須解決串口中多字節(jié)數(shù)據(jù)連續(xù)收發(fā)的問(wèn)題,為此,需要定義一個(gè)共同體:

{union data

int idata; //整型

int ldata; //長(zhǎng)整型

float fdata; //浮點(diǎn)型

char scdata; //字符型

char cdata[4]; //字符數(shù)組

}temp_data;

共同體所有成員共占一段存儲(chǔ)單元,例如上面的定義是把一個(gè)整型成員、一個(gè)長(zhǎng)整型成員、一個(gè)浮點(diǎn)型成員、一個(gè)字符型成員和一個(gè)字符數(shù)組成員安排在同一個(gè)地址開(kāi)始的內(nèi)存單元中[5],從而可用其中的字符數(shù)組成員來(lái)統(tǒng)一表示其他不同類(lèi)型的成員數(shù)據(jù)。

在數(shù)據(jù)通信時(shí),MFC應(yīng)用程序給不同類(lèi)型的數(shù)據(jù)分配對(duì)應(yīng)的標(biāo)志位,通過(guò)共同體的字符數(shù)組成員將所有帶標(biāo)志位的數(shù)據(jù)組合成一個(gè)更大的字符數(shù)組,再通過(guò)串口依次發(fā)送給S698-T處理器。S698-T/RTEMS端應(yīng)用程序接收到數(shù)據(jù)后,將根據(jù)事先約定的標(biāo)志位對(duì)數(shù)據(jù)進(jìn)行分類(lèi)處理,再發(fā)送回PC/Windows端。

值得注意的是,在MFC應(yīng)用程序中,當(dāng)通過(guò)串口發(fā)送完數(shù)據(jù)后,應(yīng)該等待一定時(shí)間,這是因?yàn)镾698-T/RTEMS端應(yīng)用程序通過(guò)串口接收數(shù)據(jù)、經(jīng)過(guò)處理再發(fā)送回PC端的整個(gè)過(guò)程有一定的時(shí)間消耗。在沒(méi)有精確測(cè)量S698-T/RTEMS端應(yīng)用程序收發(fā)處理數(shù)據(jù)的整個(gè)流程所消耗時(shí)間的情況下,MFC應(yīng)用程序“睡眠”100 ms能夠滿(mǎn)足需求,但應(yīng)該還可以繼續(xù)縮減。當(dāng)“睡眠”時(shí)間結(jié)束后,MFC應(yīng)用程序才開(kāi)始執(zhí)行串口數(shù)據(jù)的接收代碼。

2.1.2 不同硬件平臺(tái)編址方式的差異

在通過(guò)串口進(jìn)行數(shù)據(jù)收發(fā)時(shí),還應(yīng)當(dāng)注意不同硬件平臺(tái)上字節(jié)順序方式的差異:SPARC V8為大端字節(jié)順序,而x86為小端字節(jié)順序,同樣一個(gè)多字節(jié)數(shù)據(jù),例如浮點(diǎn)數(shù),在兩種平臺(tái)的內(nèi)存中其字節(jié)存放順序是相反的。這一差異并不會(huì)導(dǎo)致應(yīng)用程序在兩種硬件平臺(tái)間進(jìn)行數(shù)據(jù)通信時(shí)發(fā)生顯式錯(cuò)誤,但顯然在進(jìn)行數(shù)據(jù)處理時(shí)會(huì)生成錯(cuò)誤的數(shù)據(jù)源。因此,在數(shù)據(jù)處理時(shí),需要根據(jù)自身平臺(tái)的字節(jié)順序方式對(duì)接收到的多字節(jié)數(shù)據(jù)進(jìn)行不同形式的處理。

2.2 S698-T/RTEMS端串口控制程序

在RTEMS應(yīng)用程序中可以直接對(duì)串口進(jìn)行控制,方式如下:

#define UART0_DATA *(volatile unsigned int *)(0x80000070)

其中,0x 8000 0070為串口0的數(shù)據(jù)接收(只讀)/發(fā)送(只寫(xiě))寄存器地址,從而在應(yīng)用程序中可以通過(guò)UART0_DATA的不同處理實(shí)現(xiàn)對(duì)串口的控制。在RTEMS操作系統(tǒng)中對(duì)外設(shè)的控制均采用相同的處理方式。

RTEMS系統(tǒng)中應(yīng)用程序主要包括3部分:

① 用戶(hù)初始化任務(wù)Init(),負(fù)責(zé)串口初始化,創(chuàng)建并啟動(dòng)兩個(gè)用戶(hù)任務(wù)task1、task2,創(chuàng)建方式略——編者注。

在最后,用戶(hù)初始化任務(wù)Init()負(fù)責(zé)把自身刪除,將CPU控制權(quán)轉(zhuǎn)移給任務(wù)就緒隊(duì)列中的第一個(gè)任務(wù)。

② task1和task2的實(shí)現(xiàn)代碼,task1通過(guò)串口0接收數(shù)據(jù)并按照SPARC硬件平臺(tái)上對(duì)應(yīng)的字節(jié)順序分類(lèi)存放,task2通過(guò)串口1逆序發(fā)送接收到的數(shù)據(jù),task1和task2通過(guò)共同體全局變量進(jìn)行數(shù)據(jù)通信。特別地,在task1中需要知道什么時(shí)候串口0有數(shù)據(jù)到達(dá),可以檢查串口狀態(tài)寄存器([31:0],共32位)的第[0]位DR,其默認(rèn)值為0,而當(dāng)串口接收到新數(shù)據(jù)時(shí),該位將被寫(xiě)入1,而沒(méi)有接收到新數(shù)據(jù)時(shí)將保持默認(rèn)值不變。具體的實(shí)現(xiàn)語(yǔ)句如下:

{while(1)

while(!(UART0_STATUS &0x1));

…… //具體的串口數(shù)據(jù)接收代碼

}

每次循環(huán)開(kāi)始時(shí)都會(huì)判斷DR位的狀態(tài),當(dāng)DR位為0,即串口還沒(méi)有接收到新的數(shù)據(jù)時(shí),循環(huán)內(nèi)的while()語(yǔ)句構(gòu)成一個(gè)無(wú)條件循環(huán),外在表現(xiàn)就是系統(tǒng)持續(xù)等待串口輸入的狀態(tài),而當(dāng)串口接收到新數(shù)據(jù)時(shí),DR位置位為1,從而死循環(huán)被打破,開(kāi)始執(zhí)行接下來(lái)具體的串口數(shù)據(jù)接收代碼。接收到的數(shù)據(jù)依次存放在一個(gè)實(shí)現(xiàn)定義的字符數(shù)組內(nèi),以方便數(shù)據(jù)接收完成后進(jìn)行處理。

③ 系統(tǒng)配置與裁減,RTEMS系統(tǒng)必須針對(duì)特定應(yīng)用進(jìn)行配置[6],配置參數(shù)包含在一些系統(tǒng)初始化過(guò)程中使用到的數(shù)據(jù)結(jié)構(gòu)中,但RTEMS也提供了一套宏指令,可在應(yīng)用程序中完成系統(tǒng)的快速配置,如設(shè)置RTEMS相關(guān)全局變量和常量、RTEMS配置表、API配置表、系統(tǒng)初始化任務(wù)表等,還可以提供板上外設(shè)的驅(qū)動(dòng)程序。confdefs.h包含了操作系統(tǒng)的配置模板,是實(shí)現(xiàn)上述系統(tǒng)配置功能的關(guān)鍵。RTEMS系統(tǒng)配置與裁減可通過(guò)預(yù)編譯的方式來(lái)實(shí)現(xiàn)[7],一般結(jié)構(gòu)略——編者注。

此時(shí),RTEMS系統(tǒng)配置與裁剪同步完成。而RTEMS系統(tǒng)的初步裁減是在完成BSP開(kāi)發(fā)后進(jìn)行系統(tǒng)編譯配置configure參數(shù)時(shí)實(shí)現(xiàn)的:configure參數(shù)的數(shù)個(gè)disable與enable組合可禁用或許可某些系統(tǒng)功能,從而實(shí)現(xiàn)系統(tǒng)的初步裁減。

結(jié) 語(yǔ)

本文初步實(shí)現(xiàn)了搭建一個(gè)簡(jiǎn)單的星載計(jì)算機(jī)模型的目標(biāo),較為詳細(xì)地論述了模型實(shí)現(xiàn)步驟和應(yīng)該注意的問(wèn)題,對(duì)基于SPARC芯片的RTEMS移植和應(yīng)用程序開(kāi)發(fā)有了較深刻的認(rèn)識(shí),相關(guān)經(jīng)驗(yàn)具有一定的借鑒意義。同時(shí),該模型還可繼續(xù)優(yōu)化:BSP的開(kāi)發(fā)目前只實(shí)現(xiàn)了最基本的功能,還可繼續(xù)豐富;應(yīng)用程序應(yīng)針對(duì)數(shù)據(jù)的循環(huán)收發(fā)進(jìn)行改進(jìn),將模擬星載計(jì)算機(jī)控制律輸出—衛(wèi)星狀態(tài)更新—數(shù)據(jù)采集的過(guò)程,形成一個(gè)閉環(huán);實(shí)現(xiàn)隨機(jī)中斷、模擬地面數(shù)據(jù)注入等過(guò)程;進(jìn)一步優(yōu)化應(yīng)用程序的時(shí)間開(kāi)銷(xiāo)。

[1] 孫魯毅.四種流行的嵌入式實(shí)時(shí)操作系統(tǒng)的比較研究-VxWorks,QNX,μClinux,RTEMS[J].計(jì)算機(jī)應(yīng)用與軟件,2007,24(8):196-197.

[2] SPARC International.The SPARC Architecture Manual:Version 8,1998.

[3] 樊超,桂先洲.開(kāi)發(fā)RTEMS實(shí)時(shí)系統(tǒng)的板級(jí)支持包[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2005(6):35-38.

[4] 龔建偉,熊光明.Visual C++/Turbo C串口通信編程實(shí)踐[M].北京:電子工業(yè)出版社,2004:46-63.

[5] 譚浩強(qiáng).C++程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2011.

[6] OAR.RTEMS C User's Guide:Version 4.10.99.0,2013.

[7] 楊云,李言俊.RTEMS移植到SAILINGS698處理的BSP開(kāi)發(fā)[J].微電子學(xué)與計(jì)算機(jī),2009,26(6):109-113.

熊瑤(碩士研究生),研究方向?yàn)榍度胧较到y(tǒng)與應(yīng)用。

Xiong Yao1,2,Ouyang Gaoxiang2

(1.University of Chinese Academy of Sciences,Beijing 100094,China;2.Academy of Opto-Electronics of Chinese Academy of Sciences)

A simple model of on-board computer consists of an embedded system and a set of data which is necessary for the system’s appropriate running.The set of data is produced by programs running on PC,and the embedded system is a simulation of the real satellite.In order to construct this model,RTEMS operating system based on S698-T using SPARC V8 architecture processor should be ported first, then application programs are developed on both the S698-T and the PC,steps and some problems will be discussed simultaneously.

on-board computer;RTEMS;S698-T;SPARC

TP316

A

士然

2014-12-04)

猜你喜歡
寄存器字節(jié)中斷
STM32和51單片機(jī)寄存器映射原理異同分析
No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
No.10 “字節(jié)跳動(dòng)手機(jī)”要來(lái)了?
基于FPGA的中斷控制器設(shè)計(jì)*
簡(jiǎn)談MC7字節(jié)碼
跟蹤導(dǎo)練(二)(5)
千里移防,衛(wèi)勤保障不中斷
FPGA內(nèi)嵌PowerPC的中斷響應(yīng)分析
高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
稻城县| 罗平县| 宁河县| 博乐市| 米泉市| 缙云县| 江达县| 淄博市| 子洲县| 绥化市| 宁国市| 浦城县| 荥阳市| 綦江县| 滦南县| 邮箱| 平山县| 朝阳市| 上犹县| 内乡县| 淮阳县| 沾化县| 津南区| 苍梧县| 澜沧| 河池市| 永定县| 和静县| 万盛区| 逊克县| 德庆县| 佛坪县| 定远县| 古蔺县| 香港| 遂川县| 温宿县| 屏边| 枣强县| 馆陶县| 洛川县|