本作品為了驗證星務軟件在RT-Thread系統運行的可行性,底層是否能夠驅動星務軟件,同時擴展RT-Thread應用范圍。ART-Pi作為衛星下位機,星務前端用VS2010開發,兩者之間通過異步串口通信。星務前端發送遙控指令,ART-Pi能夠正常解析運行,并且能把星務的一些狀態遙測發送至星務前端,方便地面人員查看。本作品設計的線程只有星務線程,采集線程,姿控線程,地測線程,Free線程,正常的衛星軟件不止這五個線程,簡化為這五個,涉及到的外設也簡化為只有定時器與異步串口。
開發環境
硬件:ART-Pi開發板
RT-Thread版本:RT-Thread 4.0.2
開發工具及版本:RT-Thread Studio 1.1.5,Visual Studio 2010
RT-Thread使用情況概述
內核部分:線程操作(創建,掛起,刪除),二值信號量
組件部分:軟件定時器,異步串口,
軟件包:無
其他:無
硬件框架
本作品驗證RT-Thread系統,軟件方面應用較多,底層硬件只需要一個ART-Pi開發板模擬衛星系統即可。ART-Pi作為衛星下位機,星務前端用一個PC代替即可,硬件框架如圖1所示。
圖1 硬件框架
軟件框架說明
軟件框架如圖2所示,軟件定時器以4Hz頻率給星務線程信號量,星務線程啟動后,檢測其他各個線程的運行狀況,核對線程運行時間,核對軟件狗計數是否超過閾值,核對運行時間片,當都滿足后,給所有線程信號量。設計的各個線程優先級如表1所示,由表可知,星務線程優先級最高,會一直運行至等待下一個信號量,依據RTT線程搶占運行原理,次一級優先級線程運行。所以在一個時間片內,線程運行順序為,星務線程→采集線程→姿控線程→地測線程→Free線程。圖中的遙測遙控部分在下一章節“軟件模塊原理”描述。
軟件定時器于整秒處開始運行,定時器間隔為250ms,將0-249ms定義為時間片TASK_ROUNDA,將250-499ms定義為時間片TASK_ROUNDB,將500-749ms定義為時間片TASK_ROUNDC,將750-999ms定義為時間片TASK_ROUNDD。各線程運行時間片如表2所示。
圖2 軟件框架
軟件模塊說明
軟件模塊分為遙控上傳,遙測下傳,星務軟件管理三個部分,遙控上傳流程圖如圖3-a,3-b所示。
圖3-a 遙控流程
圖3-b 遙控流程
1.遙控流程
星務前端依照表3所示的遙控包結構組包,并通過異步串口發送至ART-Pi串口6,其中類型占用2個字節,定義如表4所示。
分系統類型:星務線程0x00,請求線程0x01,姿控線程0x02,無0x03.
指令碼:自定義地測線程將串口6FIFO讀空,按照表3結構循環解析解析遙控指令,直到無可用遙控包,然后將合法遙控包存儲到遙控指令緩存,等待線程來取指令;地測在存儲指令前,查看遙控指令緩存是否有可用空間,有可用空間則將指令存儲,并將標志位置有效狀態,線程檢測本線程對應的指令在緩沖區中有有效狀態指令時,將指令取出,并將標志位置空閑。具體遙控指令說明參考附錄。
2.遙測流程
遙測流程星上程序簡單,地測線程依據包發送的時間片,符合本周期則發送,不符合則丟棄,發送的數據包結構符合表3,包下發的具體信息請參考附錄。具體解包流程可參考上位機代碼,非本設計詳述部分,故不再贅述。
3.星務軟件管理
星務初始化時,初始化各個線程,初始化硬件等;當星上軟件運行起來時,檢測各個線程狀態,給合法線程信號量。當前線程共有三種狀態,即允許運行、線程掛起、線程停止。各個線程的狀態不僅受到遙控指令控制,還會與星務軟件狗有關,各個線程之間的轉換關系如圖4所示。
圖4 線程狀態轉換與遙控指令對應關系
圖4中,紅字表示發送的遙控指令,圓圈內表示當前線程狀態。
星務軟件設計了軟件狗,軟件狗的作用是為了防止線程死循環,將整個優先級之后的的線程同時卡死的問題,具體過程是每次當星務給線程信號量時,此線程對應的軟件狗計數會累加,當線程運行至線程循環底部時,會將軟件狗清零;如果在一個周期內,程序由于卡死在死循環或者是任務循環次數過大,導致本周期未運行至函數體底部,則星務會繼續累計軟件狗,當次數大于設置值時,依據設置的方式對線程處理,線程重啟或者是整個操作系統重啟。
演示效果
圖5 星務前端上位機界面1
圖6 星務前端上位機界面2
比賽感悟
本作品較好的實現了原定的目標,在真實情況下,RTT也會有較好表現,擴展了RTT的應用范圍,對其他的類似系統也有很好的借鑒作用;但是作為功能強大的ART-Pi開發板,真正用到的功能較少,后期可以再開發一些其他的有意義的應用。
本作品所用的代碼與實際衛星使用代碼原理一致而具體不同,有部分借鑒的成分,主要的困難是需要將星務系統底層適配RTT,并且不能照抄原版代碼,一是為了避免涉密,二是為了提高移植的意義,使我對整個衛星的軟件框架有了很好的認識,對我本人從事的工作也有很好的促進作用。而且開源衛星代碼的原理也讓衛星代碼圈子增加一點生態,也對其將來的發展有好的促進作用。
原文標題:【RT-Thread開源作品秀】基于RT-Thread的星務平臺研究
文章出處:【微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
開源
+關注
關注
3文章
3380瀏覽量
42603 -
RT-Thread
+關注
關注
31文章
1300瀏覽量
40264
原文標題:【RT-Thread開源作品秀】基于RT-Thread的星務平臺研究
文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論