c - 如何使我的代码独立于 "RTOS"?

标签 c freertos rtos lwip cmsis

我想编写一个需要一些 RTOS API(例如 Mbox 和任务创建 API)的模块!

我正在尝试使用结构化代码并为此查看一些库,例如“lwip”。在“lwip”中有一个名为 Sys-arch.c 的文件,据我所知,它是 RTOS API 的抽象层!但在我的端口中,它包含 cmsis_os.h 并使用了该 API。他们为什么这样做而不是直接使用 cmsis_os?

我应该有一个新的操作系统层来获得可移植代码,还是 CMSIS_OS 就足够了?

最佳答案

这个答案是非常基于意见的。

根据我的经验,围绕操作系统访问使用函数/定义始终是个好主意。如果您使用 CMSIS_OS 或您自己的层并没有什么大的不同,如果您使用自己的,尤其是移植和测试,则您需要做更多的工作,而使用多个操作系统会变得非常麻烦。

CMSIS_OS 将您绑定(bind)到 Cortex-M 系统,但由于它们也以非常通常的方式实现了您将在您的层中实现的功能,因此稍后从 CMSIS_OS 移植到您自己的层相当简单。如果您直接在代码中直接调用特定操作系统并没有那么简单,但如果您仅依赖标准功能(看看 CMSIS_OS RTOS 的常见功能是什么)并且不使用特殊功能也是可能的操作系统的功能。

关于c - 如何使我的代码独立于 "RTOS"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55882010/

相关文章:

当我将一个 c 文件的输出重定向到另一个文件时出现 C 编程错误

c - 按副本或按引用排队

c - 我应该在中断例程中检索 SPI 数据吗?

c - 使用Cython作为C包装器

c - 在使用结构体的值之前是否需要初始化它们?

c - 对于 mmaped 结构,静态数组更改为动态

c - 识别干扰的可能性

interface - 处理器与高速外设之间的通信

c - 出现在 C 数组末尾的随机字符

c - 免费 rtos 中 xTaskAbortDelay 函数的用途是什么?