FreeRTOS/FreeRTOS-Kernel

GitHub: FreeRTOS/FreeRTOS-Kernel

开源实时操作系统内核,提供任务调度、内存管理和进程间通信等核心功能,专为资源受限的嵌入式和物联网设备设计。

Stars: 3897 | Forks: 1460

[![CMock Unit Tests](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/35feb32d85232027.svg)](https://github.com/FreeRTOS/FreeRTOS-Kernel/actions/workflows/unit-tests.yml?query=branch%3Amain+event%3Apush+workflow%3A%22CMock+Unit+Tests%22++) [![codecov](https://app.codecov.io/gh/FreeRTOS/FreeRTOS-Kernel/badge.svg?branch=main)](https://codecov.io/gh/FreeRTOS/FreeRTOS-Kernel) ## 入门指南 本仓库仅包含 FreeRTOS 内核源/头文件和内核移植文件。本仓库作为子模块被引用于 [FreeRTOS/FreeRTOS](https://github.com/FreeRTOS/FreeRTOS) 仓库,该仓库的 ```FreeRTOS/Demo``` 目录下包含预配置的演示应用项目。 使用 FreeRTOS 最简单的方法是从一个预配置的演示应用项目开始。这样你就能包含正确的 FreeRTOS 源文件,并配置正确的包含路径。一旦演示应用能够构建和运行,你就可以移除演示应用文件,并开始添加你自己的应用源文件。请参阅 [FreeRTOS 内核快速入门指南](https://www.freertos.org/Documentation/01-FreeRTOS-quick-start/01-Beginners-guide/02-Quick-start-guide) 获取详细说明和其他有用的链接。 此外,有关 FreeRTOS 内核功能的信息,请参阅 [开发者文档](https://www.freertos.org/Documentation/02-Kernel/02-Kernel-features/00-Developer-docs) 和 [API 参考](https://www.freertos.org/Documentation/02-Kernel/04-API-references/01-Task-creation/00-TaskHandle)。 另外,关于贡献和创建 Pull Request,请参阅 [此处的说明](.github/CONTRIBUTING.md#contributing-via-pull-request)。 **FreeRTOS-Kernel V11.1.0 [源代码](https://github.com/FreeRTOS/FreeRTOS-Kernel/tree/V11.1.0) 是 [FreeRTOS 202406.00 LTS](https://github.com/FreeRTOS/FreeRTOS-LTS/tree/202406-LTS) 版本的一部分。** ### 获取帮助 如果你有任何问题或在 FreeRTOS 项目故障排除方面需要帮助, 我们有一个活跃的社区,可以在 [FreeRTOS 社区支持论坛](https://forums.freertos.org) 上提供帮助。 ## 使用 FreeRTOS-Kernel ### 通过 CMake 使用 如果使用 CMake,建议通过 FetchContent 使用此仓库。 将以下内容添加到你项目的主目录或子目录的 `CMakeLists.txt` 中: - 定义你要使用的源和版本/标签: ``` FetchContent_Declare( freertos_kernel GIT_REPOSITORY https://github.com/FreeRTOS/FreeRTOS-Kernel.git GIT_TAG main #Note: Best practice to use specific git-hash or tagged version ) ``` 如果你倾向于将其添加为 git submodule,请执行: ``` git submodule add https://github.com/FreeRTOS/FreeRTOS-Kernel.git git submodule update --init ``` - 添加一个 freertos_config 库(通常是一个 INTERFACE 库)以下假设目录结构为: - `include/FreeRTOSConfig.h` ``` add_library(freertos_config INTERFACE) target_include_directories(freertos_config SYSTEM INTERFACE include ) target_compile_definitions(freertos_config INTERFACE projCOVERAGE_TEST=0 ) ``` 如果你将 FreeRTOS-Kernel 作为 submodule 安装,则需要将其作为子目录添加: ``` add_subdirectory(${FREERTOS_PATH}) ``` - 配置 FreeRTOS-Kernel 并使其可用 - 此特定示例支持原生和交叉编译构建选项。 ``` set( FREERTOS_HEAP "4" CACHE STRING "" FORCE) # 选择原生编译 PORT set( FREERTOS_PORT "GCC_POSIX" CACHE STRING "" FORCE) # 选择交叉编译 PORT if (CMAKE_CROSSCOMPILING) set(FREERTOS_PORT "GCC_ARM_CA9" CACHE STRING "" FORCE) endif() FetchContent_MakeAvailable(freertos_kernel) ``` - 在交叉编译的情况下,你还应将以下内容添加到 `freertos_config`: ``` target_compile_definitions(freertos_config INTERFACE ${definitions}) target_compile_options(freertos_config INTERFACE ${options}) ``` ### 独立使用 - 克隆此仓库 使用 HTTPS 克隆: ``` git clone https://github.com/FreeRTOS/FreeRTOS-Kernel.git ``` 使用 SSH: ``` git clone git@github.com:FreeRTOS/FreeRTOS-Kernel.git ``` ## 仓库结构 - 此仓库的根目录包含三个每个移植版本通用的文件 - list.c、queue.c 和 tasks.c。内核包含在这三个文件中。croutine.c 实现了可选的协程功能 —— 这通常仅用于内存非常有限的系统。 - ```./portable``` 目录包含特定于某个微控制器和/或编译器的文件。 请参阅 ```./portable``` 目录中的 readme 文件以获取更多信息。 - ```./include``` 目录包含实时内核头文件。 - ```./template_configuration``` 目录包含一个示例 `FreeRTOSConfig.h`,以帮助快速启动一个新项目。 请参阅 [FreeRTOSConfig.h](examples/template_configuration/FreeRTOSConfig.h) 文件获取说明。 ### 代码格式化 FreeRTOS 文件使用 "[uncrustify](https://github.com/uncrustify/uncrustify)" 工具进行格式化。 uncrustify 使用的配置文件可以在 [FreeRTOS/CI-CD-GitHub-Actions's](https://github.com/FreeRTOS/CI-CD-Github-Actions) [uncrustify.cfg](https://github.com/FreeRTOS/CI-CD-Github-Actions/tree/main/formatting) 文件中找到。 ### 换行符 检入 FreeRTOS-Kernel 仓库的文件使用 unix 风格的 LF 换行符, 以便与 git 保持最佳兼容性。 为了与 Microsoft Windows 工具实现最佳兼容性,最好启用 git autocrlf 功能。你可以使用以下命令为当前 仓库启用此设置: ``` git config core.autocrlf true ``` ### Git 历史优化 此仓库中的某些提交执行了涉及许多行的大型重构, 这会在使用 `git blame` 命令时导致不需要的行为。你可以 使用以下命令配置 git 忽略此仓库中的大型重构提交列表: ``` git config blame.ignoreRevsFile .git-blame-ignore-revs ``` ### 拼写和格式化 我们建议在开发 FreeRTOS-Kernel 时使用 [Visual Studio Code](https://code.visualstudio.com), 通常被称为 VSCode。 FreeRTOS-Kernel 还使用 [cSpell](https://cspell.org/) 作为其 拼写检查的一部分。其配置文件可在 [cspell.config.yaml](cspell.config.yaml) 找到 此外还有一个 [适用于 VSCode 的 cSpell 插件](https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker) 也可以使用。 *[.cSpellWords.txt](.github/.cSpellWords.txt)* 包含 传统英语词典中通常找不到的单词。拼写检查器使用它来 验证 FreeRTOS 代码库中使用的各种术语、变量名和其他特殊单词是正确的。如果你的 pull request 未能通过拼写检查, 并且你认为这是一个错误,那么请将该单词添加到 *[.cSpellWords.txt](.github/.cSpellWords.txt)*。添加单词时请 对列表进行排序,可以通过运行 bash 命令完成: `sort -u .cSpellWords.txt -o .cSpellWords.txt` 请注意,目前仅检查 FreeRTOS-Kernel 源文件、[include](include)、 [portable/MemMang](portable/MemMang) 和 [portable/Common](portable/Common) 文件的拼写和格式。 ## 第三方工具 请访问[此链接](.github/third_party_tools.md) 获取有关支持 FreeRTOS 的第三方工具的详细信息。
标签:Bash脚本, Bing搜索, DNS解析, Embedded C, FreeRTOS, FreeRTOS-Kernel, IoT, MCU, RTOS, 任务调度, 内核, 固件开发, 实时内核, 实时操作系统, 客户端加密, 嵌入式开发, 嵌入式系统, 嵌入式软件, 工业控制, 开源项目, 微控制器, 消费电子, 物联网, 硬件抽象层, 系统移植, 网络安全监控, 裸机编程, 驱动开发