本作品為了驗證星務(wù)軟件在RT-Thread系統(tǒng)運行的可行性,底層是否能夠驅(qū)動星務(wù)軟件,同時擴展RT-Thread應(yīng)用范圍。ART-Pi作為衛(wèi)星下位機,星務(wù)前端用VS2010開發(fā),兩者之間通過異步串口通信。星務(wù)前端發(fā)送遙控指令,ART-Pi能夠正常解析運行,并且能把星務(wù)的一些狀態(tài)遙測發(fā)送至星務(wù)前端,方便地面人員查看。本作品設(shè)計的線程只有星務(wù)線程,采集線程,姿控線程,地測線程,F(xiàn)ree線程,正常的衛(wèi)星軟件不止這五個線程,簡化為這五個,涉及到的外設(shè)也簡化為只有定時器與異步串口。
開發(fā)環(huán)境
硬件:ART-Pi開發(fā)板
RT-Thread版本:RT-Thread 4.0.2
開發(fā)工具及版本:RT-Thread Studio 1.1.5,Visual Studio 2010
RT-Thread使用情況概述
內(nèi)核部分:線程操作(創(chuàng)建,掛起,刪除),二值信號量
組件部分:軟件定時器,異步串口,
軟件包:無
其他:無
硬件框架
本作品驗證RT-Thread系統(tǒng),軟件方面應(yīng)用較多,底層硬件只需要一個ART-Pi開發(fā)板模擬衛(wèi)星系統(tǒng)即可。ART-Pi作為衛(wèi)星下位機,星務(wù)前端用一個PC代替即可,硬件框架如圖1所示。

圖1 硬件框架
軟件框架說明
軟件框架如圖2所示,軟件定時器以4Hz頻率給星務(wù)線程信號量,星務(wù)線程啟動后,檢測其他各個線程的運行狀況,核對線程運行時間,核對軟件狗計數(shù)是否超過閾值,核對運行時間片,當都滿足后,給所有線程信號量。設(shè)計的各個線程優(yōu)先級如表1所示,由表可知,星務(wù)線程優(yōu)先級最高,會一直運行至等待下一個信號量,依據(jù)RTT線程搶占運行原理,次一級優(yōu)先級線程運行。所以在一個時間片內(nèi),線程運行順序為,星務(wù)線程→采集線程→姿控線程→地測線程→Free線程。圖中的遙測遙控部分在下一章節(jié)“軟件模塊原理”描述。
軟件定時器于整秒處開始運行,定時器間隔為250ms,將0-249ms定義為時間片TASK_ROUNDA,將250-499ms定義為時間片TASK_ROUNDB,將500-749ms定義為時間片TASK_ROUNDC,將750-999ms定義為時間片TASK_ROUNDD。各線程運行時間片如表2所示。


圖2 軟件框架
軟件模塊說明
軟件模塊分為遙控上傳,遙測下傳,星務(wù)軟件管理三個部分,遙控上傳流程圖如圖3-a,3-b所示。

圖3-a 遙控流程

圖3-b 遙控流程
1.遙控流程
星務(wù)前端依照表3所示的遙控包結(jié)構(gòu)組包,并通過異步串口發(fā)送至ART-Pi串口6,其中類型占用2個字節(jié),定義如表4所示。


分系統(tǒng)類型:星務(wù)線程0x00,請求線程0x01,姿控線程0x02,無0x03.
指令碼:自定義地測線程將串口6FIFO讀空,按照表3結(jié)構(gòu)循環(huán)解析解析遙控指令,直到無可用遙控包,然后將合法遙控包存儲到遙控指令緩存,等待線程來取指令;地測在存儲指令前,查看遙控指令緩存是否有可用空間,有可用空間則將指令存儲,并將標志位置有效狀態(tài),線程檢測本線程對應(yīng)的指令在緩沖區(qū)中有有效狀態(tài)指令時,將指令取出,并將標志位置空閑。具體遙控指令說明參考附錄。
2.遙測流程
遙測流程星上程序簡單,地測線程依據(jù)包發(fā)送的時間片,符合本周期則發(fā)送,不符合則丟棄,發(fā)送的數(shù)據(jù)包結(jié)構(gòu)符合表3,包下發(fā)的具體信息請參考附錄。具體解包流程可參考上位機代碼,非本設(shè)計詳述部分,故不再贅述。
3.星務(wù)軟件管理
星務(wù)初始化時,初始化各個線程,初始化硬件等;當星上軟件運行起來時,檢測各個線程狀態(tài),給合法線程信號量。當前線程共有三種狀態(tài),即允許運行、線程掛起、線程停止。各個線程的狀態(tài)不僅受到遙控指令控制,還會與星務(wù)軟件狗有關(guān),各個線程之間的轉(zhuǎn)換關(guān)系如圖4所示。

圖4 線程狀態(tài)轉(zhuǎn)換與遙控指令對應(yīng)關(guān)系
圖4中,紅字表示發(fā)送的遙控指令,圓圈內(nèi)表示當前線程狀態(tài)。
星務(wù)軟件設(shè)計了軟件狗,軟件狗的作用是為了防止線程死循環(huán),將整個優(yōu)先級之后的的線程同時卡死的問題,具體過程是每次當星務(wù)給線程信號量時,此線程對應(yīng)的軟件狗計數(shù)會累加,當線程運行至線程循環(huán)底部時,會將軟件狗清零;如果在一個周期內(nèi),程序由于卡死在死循環(huán)或者是任務(wù)循環(huán)次數(shù)過大,導致本周期未運行至函數(shù)體底部,則星務(wù)會繼續(xù)累計軟件狗,當次數(shù)大于設(shè)置值時,依據(jù)設(shè)置的方式對線程處理,線程重啟或者是整個操作系統(tǒng)重啟。
演示效果

圖5 星務(wù)前端上位機界面1

圖6 星務(wù)前端上位機界面2
比賽感悟
本作品較好的實現(xiàn)了原定的目標,在真實情況下,RTT也會有較好表現(xiàn),擴展了RTT的應(yīng)用范圍,對其他的類似系統(tǒng)也有很好的借鑒作用;但是作為功能強大的ART-Pi開發(fā)板,真正用到的功能較少,后期可以再開發(fā)一些其他的有意義的應(yīng)用。
本作品所用的代碼與實際衛(wèi)星使用代碼原理一致而具體不同,有部分借鑒的成分,主要的困難是需要將星務(wù)系統(tǒng)底層適配RTT,并且不能照抄原版代碼,一是為了避免涉密,二是為了提高移植的意義,使我對整個衛(wèi)星的軟件框架有了很好的認識,對我本人從事的工作也有很好的促進作用。而且開源衛(wèi)星代碼的原理也讓衛(wèi)星代碼圈子增加一點生態(tài),也對其將來的發(fā)展有好的促進作用。
原文標題:【RT-Thread開源作品秀】基于RT-Thread的星務(wù)平臺研究
文章出處:【微信公眾號:RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
責任編輯:haq
-
開源
+關(guān)注
關(guān)注
3文章
4207瀏覽量
46151 -
RT-Thread
+關(guān)注
關(guān)注
32文章
1614瀏覽量
44887
原文標題:【RT-Thread開源作品秀】基于RT-Thread的星務(wù)平臺研究
文章出處:【微信號:RTThread,微信公眾號:RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
恩智浦亮相RT-Thread 20周年開發(fā)者大會
首搭RT-Thread程翧車控平臺| RT-Thread程翧 S32K344 快速原型開發(fā)平臺正式上市!| 產(chǎn)品動態(tài)
【CPKCOR-RA8D1】5、運行RT-THREAD的適應(yīng)性調(diào)整
RT-Thread studio打不開 RT-thread setting界面怎么解決?
Windows上使用ENV工具開發(fā)基于先楫MCU的RT-Thread應(yīng)用
在Ubuntu上開發(fā)基于先楫MCU的RT-Thread應(yīng)用指南
【好書推薦】RT-Thread第20本相關(guān)書籍!《嵌入式實時操作系統(tǒng)RT-Thread原理與應(yīng)用》| 技術(shù)集結(jié)
RT-Thread榮獲2025優(yōu)秀開源項目 | 新聞速遞
揭秘RT-Thread上的AUTOSAR CP系統(tǒng)
人形機器人敏捷開發(fā)新路徑:RT-Thread以軟件底座破解復雜系統(tǒng)難題 | 新聞速遞
2025 RT-Thread全球技術(shù)大會議程正式發(fā)布!
RT-Thread審核團招募: 深度參與開源RTOS社區(qū)治理與演進
RT-Thread睿賽德亮相深圳機器人產(chǎn)業(yè)大會,聚焦機器人軟件系統(tǒng)技術(shù)前沿 | 新聞速遞
軟件定義汽車: RT-Thread程翧整車OS亮相上海車展 | 媒體視角
RT-Thread睿賽德攜“程翧整車基礎(chǔ)軟件OS”亮相車展,多核虛擬化跨域驅(qū)動智能汽車發(fā)展
驗證星務(wù)軟件在RT-Thread系統(tǒng)運行的可行性
評論