发新帖本帖赏金 10.00元(功能说明)我要提问
返回列表
打印
[活动专区]

【AT-START-WB415测评】ThreadX移植

[复制链接]
894|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
james03|  楼主 | 2022-9-14 10:45 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
1、ThreadX简介
ThreadX 的作者是 William lamie(同样是 Nucleus RTOS 的原始作者,于 1990 年发布)。1996的时候成立了 Express Logic,并于 1997 发布首版 ThreadX RTOS。
◆ ThreadX4 发布于 2001 年,ThreadX5 发布于 2005 年,ThreadX6 发布于 2020 年。
◆ FileX – ThreadX 的嵌入式文件系统于 1999 年发布首版。
◆ NetX – ThreadX 的嵌入式 TCP / IP 网络协议栈于 2002 年发布首版。
◆ USBX – ThreadX 的嵌入式 USB 协议栈于 2004 年发布首版。
◆ 2009 年推出了适用于 SMP 多核环境的 ThreadX。
◆ 2011 年发布支持动态应用加载的 ThreadX Modules。
◆ GUIX – ThreadX 的嵌入式 UI 于 2014 年发布首版。
◆ Microsoft 在 2019 年 4 月 18 日以未公开的价格购买了 Express Logic。
Azure RTOS ThreadX 是 Microsoft 提供的高级工业级实时操作系统 (RTOS)。 它是专门为深度嵌入式实时 IoT 应用程序设计的。 Azure RTOS ThreadX 提供高级计划、通信、同步、计时器、内存管理和中断管理功能。 此外,Azure RTOS ThreadX 具有许多高级功能,包括 picokernel™ 体系结构、preemption-threshold™ 计划、event-chaining™、执行分析、性能指标和系统事件跟踪。 Azure RTOS ThreadX 非常易于使用,适用于要求极其苛刻的嵌入式应用程序。 Azure RTOS ThreadX 在各种产品(包括消费者设备、医疗电子设备和工业控制设备)上的部署次数已达数十亿次。
ThreadX具有以下图中特性,同时也是一款开源RTOS。
[size=12.0000pt]2、AT32WB415移植ThreadX
ThreadX的源码在github的地址为https://github.com/azure-rtos/threadx。其源码的目录结构如下图所示。
其中build为编译后的生成的目录,cmake目录放各个硬件平台的cmake编译脚本,common为RTOS内核源码,commom_modules为支持模块升级的内核源码,commom_smp为支持多核主控的内核源码,同理port为支持各硬件平台的相关汇编源码。
目前ThreadX支持几乎所有市面上的硬件平台,如下图所示。
另外,几乎所有的编译器也是支持的,AT32WB415属于cortex-m4核,进入cortex-m4核文件夹可以看到所支持的编译器工具如下图所示。
适配不同的硬件平台主要移植的是port下面的汇编文件,如果高手也是可以用c实现的,这里以Keil为例简单说明一下,cortex-m4下面汇编文件如下图所示,还有inc目录下的tx_port.h可以完全不需要修改。
工程目录下会有一个和具体的硬件关联的文件tx_initialize_low_level.s如下图所示,该文件用于启动整个硬件,比较重要的函数有_tx_initialize_low_level函数。
正常情况下在ThreadX源码的基础上移植到不同的平台需要注意两点:
1)_tx_initialize_low_level函数移植;
2)、系统时钟节拍提供,可以使用systick或其他定时器来提供,在时钟节拍中调用函数_tx_timer_interrupt(),用于触发任务调度;
3)、用户线程的入口必须使用以下函数作为用户资源启动入口,且在不修改ThreadX源码的情况下是不能修改其名称的,该函数接口名为void    tx_application_define(void *first_unused_memory);
为了做到最小的移植工作,即不过多修改AT32W415自带的启动文件,所以将ThreadX源码中示例中tx_initialize_low_level.s文件的_tx_initialize_low_level移植到startup_at32wb415.s,时间节拍使用定时器5(主要定时器的中断优先级设置为最低),示例代码也是运行官方的,只是在线程0中添加了闪烁LED3的代码,如下几图所示。



[size=12.0000pt]3、ThreadX效果演示
通过上述的移植,然后编译下载程序,即看到运行效果,最直观的就是线程0中添加的LED闪烁代码,2秒为一个周期,即亮一秒钟,灭一秒钟。
然后仿真可以看到各个线程中相关的变量的变化,如下图所示。

使用特权

评论回复

打赏榜单

ArterySW 打赏了 10.00 元 2022-09-14
理由:原创帖 内容优秀。

发新帖 本帖赏金 10.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

213

帖子

2

粉丝