文章目录
写在前面
准备移植
开始移植
验证
最后一点
写在前面
ThreadX 是由 Express Logic 公司开发的实时操作系统。目前已被微软收购,并且前不久开源了,当开源的时候很多论坛都第一时间发布了相关文章,可见其影响力还是很不错的,刚好最近有一个新项目,需要用到网络协议栈,而threadx有自己的网络协议栈组件,之前打算用freeRTOS加LWIP的方式,现在直接用threadx加netx的方式。
首先到github上下载threadx的源码,建议使用git,下载zip的话非常慢,而且容易失败,点击链接threadx下载。
准备移植
下载好源码后就准备开始移植了,我以stm32f407为例,keil版本5.31,threax版本6.0.1,其它系列都差不多,最近的一次更新增加了非常多的器件支持。看下源码目录:
这次是移植,主要关心ports文件夹就行了,里面是针对各种内核写的移植文件,我这里对应的是cortex_m4这个文件夹,打开后里面有四个目录:
我用的是keil,但是我选择的是ac5这个文件夹,因为我用的也是ac5编译器,我对比了一下keil文件夹和ac5文件夹里面的内容不一样的地方只有一个,这个后面再说。
开始移植
首先搭建一个简单的裸机工程,然后添加threadx的源码及移植文件,添加完后如下:
我们主要修改tx_initialize_low_level.s文件,其它几个文件都是可以不用动的,这个文件和st提供的启动文件冲突了,但是这个文件内容又不全。采用的方法类似freeRTOS的移植方法,不动st的启动文件。
首先更改时钟频率及给滴答定时器设置的重装载值
SYSTEM_CLOCK EQU 168000000
SY