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_第1张图片
然后在ASM选项卡选择自动连接汇编文件。
STM32F103移植ThreadX_第2张图片
文件添加完毕之后,把用户自己写的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_第3张图片
接下来会报一些错,都是一些钩子函数没有定义造成的,可能是微软还是没有把所有的程序开源吧,这里只需要屏蔽就好了。
需要注意的是tx_application_define这个系统函数是需要自己定义的,这个是一个用于初始化线程的函数。
以上,就是完整的ThreadX移植过程,希望大家能好好地学习。附上工程的链接.

你可能感兴趣的:(ThreadX,stm32)