天天看點

STM32F103移植ThreadX開始準備實施

STM32F103移植ThreadX

  • 開始
  • 準備
  • 實施
    • 修改檔案

開始

ThreadX是一個經過了多重安全認證的RTOS,最近微軟把ThreadX的源碼開源了,可謂廣大嵌入式開發者的福音。GitHub下載下傳位址.

以下是ThreadX及其所有中間件的安全認證等級,至今沒有一款小型RTOS可以與其匹敵。

(1)醫療 - FDA510(k),IEC-62304 Class C,IEC-60601,ISO-14971

(2)工業 - UL-1998,IEC-61508 SIL 4

(3)運輸/鐵路 - EN50128 SIL 4,BS50128, 49CFR236,IEC-61508

(4)航空航天裝置 - DO-178B,ED-12B,DO-278

(5)汽車 - IEC-61508 ASIL D

(6)核應用 - IEC-61508

(7)家電 - UL/IEC 60730/60335

由于ThreadX前期一直的商業開源的,相關資料都比較少,國内安富萊論壇的硬漢哥對ThreadX做了STM32的一直,但沒有移植到STM32F1系列的。本文将模範硬漢哥,将ThreadX一直到STMF1的Keil工程上。附帶安富萊的工程模闆傳送門.

準備

  1. F103的工程模闆
  2. ThreadX的源碼
  3. MDK5.30以上

之是以要用MDK5.30以上的版本是因為ThreadX的源碼隻提供GNU的ports檔案,而MDK5.30可以自動連結GNU的ports檔案,這個省去了自己修改的麻煩。

實施

修改檔案

将ThreadX的檔案夾複制到需要移植的工程路徑下,在工程中添加common裡面的.c檔案和prots裡面的.s檔案,其中prots選擇裡面m3檔案夾下的.s代碼,tx_vector_table_sample.S不用添加。

添加檔案後,工程需要勾選Use MicroLIB,并選擇用Version6的代碼生成

STM32F103移植ThreadX開始準備實施

然後在ASM頁籤選擇自動連接配接彙編檔案。

STM32F103移植ThreadX開始準備實施

檔案添加完畢之後,把使用者自己寫的

SysTick_Handler()

PendSV_Handler()

删掉,這兩個函數ThreadX自帶。

tx_initialize_low_level_sample.S

檔案中,

SYSTEM_CLOCK = 6000000

這裡是指系統時鐘,大家可以根據自己的系統時鐘進行配置。添加

__RAM_segment_used_end__ = __initial_sp

,作為堆棧的配置。全局搜尋

_vectors

,全部替換為STM32平台的

__Vectors

。接下來就可以進行編譯了。

STM32F103移植ThreadX開始準備實施

接下來會報一些錯,都是一些鈎子函數沒有定義造成的,可能是微軟還是沒有把所有的程式開源吧,這裡隻需要屏蔽就好了。

需要注意的是

tx_application_define

這個系統函數是需要自己定義的,這個是一個用于初始化線程的函數。

以上,就是完整的ThreadX移植過程,希望大家能好好地學習。附上工程的連結.

繼續閱讀