eclipse-threadx/threadx
GitHub: eclipse-threadx/threadx
专为深度嵌入式应用设计的高性能开源实时操作系统,提供先进的任务调度、消息传递、中断管理及多核处理能力。
Stars: 3376 | Forks: 906
# Eclipse ThreadX RTOS
这款先进的实时操作系统 (RTOS) 是专为深度嵌入式应用设计的。它提供了多种优势,包括先进的调度机制、消息传递、中断管理和消息服务。Eclipse ThreadX RTOS 拥有许多高级特性,包括 picokernel 架构、抢占阈值、事件链以及丰富的系统服务集。
以下是 ThreadX 的主要功能和模块:

## 快速入门
Eclipse ThreadX 已集成到半导体厂商的 SDK 和开发环境中。您可以使用 [STMicroelectronics](https://www.st.com/content/st_com/en/campaigns/x-cube-azrtos-azure-rtos-stm32.html)、[NXP](https://www.nxp.com/design/software/embedded-software/azure-rtos-for-nxp-microcontrollers:AZURE-RTOS)、[Renesas](https://github.com/renesas/azure-rtos) 和 [Microchip](https://mu.microchip.com/get-started-simplifying-your-iot-design-with-azure-rtos) 提供的工具进行开发。
我们还提供了[入门指南](https://github.com/eclipse-threadx/getting-started)和[示例](https://github.com/eclipse-threadx/samples),使用半导体厂商的开发板,您可以用它们进行构建和测试。
请参阅 [Eclipse ThreadX RTOS 概述](https://github.com/eclipse-threadx/rtos-docs/blob/main/rtos-docs/threadx/overview-threadx.md) 以了解高级概述。
## 仓库结构与用法
### 目录布局
```
.
├── cmake # CMakelist files for building the project
├── common # Core ThreadX files
├── common_modules # Core ThreadX module files
├── common_smp # Core ThreadX SMP files
├── docs # Documentation supplements
├── ports # Architecture and compiler specific files. See below for directory breakdown
│ ├── cortex_m7
│ │ ├── iar # Example IAR compiler sample project
│ │ │ ├── example build # IAR workspace and sample project files
│ │ │ ├── inc # tx_port.h for this architecture
│ │ │ └── src # Source files for this architecture
│ │ ├── ac6 # Example ac6/Keil sample project
│ │ ├── gnu # Example gnu sample project
│ │ └── ...
│ └── ...
├── ports_modules # Architecture and compiler specific files for threadX modules
├── ports_smp # Architecture and compiler specific files for threadX SMP
├── samples # demo_threadx.c
└── utility # Test cases and utilities
```
## 分支与发布
master 分支包含最新的代码,涵盖所有新功能和错误修复。它并不代表该库的最新正式发布 (GA) 版本。每个正式发布(预览版或 GA 版)都会被打上标签以标记该提交,并推送到 Github 的 releases 标签页,例如 `v6.2-rel`。
```
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _tx_initialize_low_level Cortex-M23/GNU */
/* 6.x */
/* AUTHOR */
/* */
/* Scott Larson, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function is responsible for any low-level processor */
/* initialization, including setting up interrupt vectors, setting */
/* up a periodic timer interrupt source, saving the system stack */
/* pointer for use in ISR processing later, and finding the first */
/* available RAM memory address for tx_application_define. */
/* */
/* INPUT */
/* */
/* None */
/* */
/* OUTPUT */
/* */
/* None */
/* */
/* CALLS */
/* */
/* None */
/* */
/* CALLED BY */
/* */
/* _tx_initialize_kernel_enter ThreadX entry function */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* 09-30-2020 Scott Larson Initial Version 6.1 */
/* xx-xx-xxxx Scott Larson Include tx_user.h, */
/* resulting in version 6.x */
/* */
/**************************************************************************/
```
## 支持的架构移植
### ThreadX
```
arc_em cortex_a12 cortex_m0 cortex_r4
arc_hs cortex_a15 cortex_m23 cortex_r5
arm11 cortex_a17 cortex_m3 cortex_r7
arm9 cortex_a34 cortex_m33
c667x cortex_a35 cortex_m4
linux cortex_a5 cortex_m55
risc-v32 cortex_a53 cortex_m7
rxv1 cortex_a55 cortex_m85
rxv2 cortex_a57
rxv3 cortex_a5x
win32 cortex_a65
xtensa cortex_a65ae
cortex_a7
cortex_a72
cortex_a73
cortex_a75
cortex_a76
cortex_a76ae
cortex_a77
cortex_a8
cortex_a9
```
### ThreadX Modules
[Eclipse ThreadX Modules](https://github.com/eclipse-threadx/rtos-docs/blob/main/rtos-docs/threadx-modules/chapter1.md) 组件为应用程序提供了一套基础设施,用于动态加载与应用程序常驻部分分开构建的模块。
```
cortex_a35
cortex_a35_smp
cortex_a7
cortex_m0+
cortex_m23
cortex_m3
cortex_m33
cortex_m4
cortex_m7
cortex_r4
rxv2
```
### ThreadX SMP
[Eclipse ThreadX SMP](https://github.com/eclipse-threadx/rtos-docs/blob/main/rtos-docs/threadx/threadx-smp/chapter1.md) 是一个高性能实时 SMP 内核,专为嵌入式应用设计。
```
arc_hs_smp
cortex_a34_smp
cortex_a35_smp
cortex_a53_smp
cortex_a55_smp
cortex_a57_smp
cortex_a5x_smp
cortex_a5_smp
cortex_a65ae_smp
cortex_a65_smp
cortex_a72_smp
cortex_a73_smp
cortex_a75_smp
cortex_a76ae_smp
cortex_a76_smp
cortex_a77_smp
cortex_a78_smp
cortex_a7_smp
cortex_a9_smp
linux
```
## ThreadX 适配层
ThreadX 是一款专为深度嵌入式应用设计的先进实时操作系统 (RTOS)。为了帮助简化向 ThreadX RTOS 的应用迁移,Eclipse ThreadX 为各种传统 RTOS API(FreeRTOS、POSIX、OSEK 等)提供了[适配层](https://github.com/eclipse-threadx/threadx/tree/master/utility/rtos_compatibility_layers)。
## 组件依赖关系
ThreadX RTOS 的主要组件各自提供在独立的仓库中,但它们之间存在依赖关系,如下图所示。在设置构建时,理解这一点非常重要。

### 构建和使用库
使用 Arm GNU Toolchain 和 CMake 构建 ThreadX 作为静态库的说明。如果您使用半导体厂商提供的工具链和 IDE,则应遵循其自有说明来使用 ThreadX RTOS 组件,如[快速入门](#getting-started)部分所述。
1. 安装以下工具:
* [CMake](https://cmake.org/download/) 3.0 或更高版本
* [Arm GNU Toolchain for arm-none-eabi](https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads)
* [Ninja](https://ninja-build.org/)
2. 克隆仓库
$ git clone https://github.com/eclipse-threadx/threadx.git
3. 在 `tx_user.h` 中定义您需要的功能和插件,并与组件源代码一起构建。您可以参考 [`tx_user_sample.h`](https://github.com/eclipse-threadx/threadx/blob/master/common/inc/tx_user_sample.h) 作为示例。
4. 构建为静态库
ThreadX RTOS 的每个组件都附带了一个可组合的基于 CMake 的构建系统,支持多种不同的 MCU 和主机系统。将任何这些组件集成到您的设备应用程序代码中非常简单,只需添加一个 git submodule,然后使用 CMake 的 `add_subdirectory()` 将其包含在构建中即可。
虽然典型的使用模式是将 ThreadX 包含在您的设备代码源树中,以便与您的代码一起构建和链接,但您可以将此项目编译为独立的静态库,以确认您的构建设置是否正确。
为 Cortex-M4 构建库的示例:
$ cmake -Bbuild -GNinja -DCMAKE_TOOLCHAIN_FILE=cmake/cortex_m4.cmake .
$ cmake --build ./build
## 许可
使用 Eclipse ThreadX 的许可条款定义在本仓库的 LICENSE.txt 文件中。请参阅该文件以获取所有内容的明确许可信息,包括本仓库的历史记录。
## 资源
以下是更多 ThreadX RTOS 资源的参考链接:
- **产品介绍**:https://github.com/eclipse-threadx/rtos-docs
- **产品问题和错误,或功能请求**:https://github.com/eclipse-threadx/threadx/issues
- **TraceX 安装程序**:https://aka.ms/azrtos-tracex-installer
您也可以在 StackOverflow 上查看[以往的问题](https://stackoverflow.com/questions/tagged/threadx-rtos+threadx)或提出新问题,并使用 `threadx-rtos` 和 `threadx` 标签。
## 安全性
Eclipse ThreadX 为 OEM 厂商提供了组件,用于保护通信安全,并利用底层 MCU/MPU 硬件保护机制创建代码和数据隔离。最终,设备构建者有责任确保设备完全满足与其特定用例相关的不断发展的安全要求。
## 贡献
请遵循相应仓库中 [CONTRIBUTING.md](./CONTRIBUTING.md) 提供的说明。
标签:Azure RTOS, Bash脚本, CMake, Cortex-M, Eclipse ThreadX, IoT OS, MCU, Microchip, NXP, Picokernel, Renesas, RTOS, SMP, STM32, 中断管理, 互斥锁, 任务调度, 信号量, 内存管理, 内核, 固件开发, 多任务处理, 实时内核, 实时操作系统, 客户端加密, 客户端加密, 客户端加密, 对称多处理, 嵌入式开发, 嵌入式系统, 工业控制, 开源, 微控制器, 抢占式调度, 智能家居, 汽车电子, 消息队列, 消费电子, 深层嵌入式, 物联网, 网络安全监控, 驱动开发