加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在使用FreeRTOS时保持代码的可移植性

发布时间:2020-12-16 10:32:21 所属栏目:百科 来源:网络整理
导读:我很想知道如何在我的应用程序中使用FreeRTOS.让我提出一个简单的方案.假设我有main和一个具有一些硬件特定代码的模块.该代码可用于控制系统或传感器中的特定电机……具有定义角色的任何硬件.在module.c中,我有一个名为ModuleNameTask的函数.在main中,我使用
我很想知道如何在我的应用程序中使用FreeRTOS.让我提出一个简单的方案.假设我有main和一个具有一些硬件特定代码的模块.该代码可用于控制系统或传感器中的特定电机……具有定义角色的任何硬件.在module.c中,我有一个名为ModuleNameTask的函数.在main中,我使用xTaskCreate创建任务,然后传递ModuleNameTask.由于我的ModuleNameTask是在module.c而不是main.c中定义的,所以我现在必须在module.c中包含一些FreeRTOS才能使用像vTaskDelay这样的函数.我不喜欢我在module.c中包含这些文件的事实,因为我觉得它不再可移植.

那么,我该如何处理呢?我应该从module.c中删除ModuleNameTask并将其放在main.c中吗?或者只是接受我必须将FreeRTOS的位包含到module.c中的事实.有什么建议?

解决方法

FreeRTOS需要什么功能才能使模块正常工作.显然有一些东西,或者你不需要包含标题,你不会调用函数.

获取这些函数并将它们放在一个名为os /< operating_sys> /freertos.h的单独标题中,并将它们包装在您自己的函数名中(例如my_createtask(< args>).).现在要移植到不同的操作系统,您需要为自己的功能提供一个带有新包装器的新文件.

如果你做得不好,你会注意到你的createtask函数看起来与FreeRTOS函数完全相同,并且可以很容易地映射,但是当你想使用linux / vxWorks /其他操作系统时,该函数没有正确的参数.

您的createtask函数应该只包含您关心的参数.其他应该在包装器中进行硬编码.这将使端口更容易(您将在其他操作系统中具有与硬代码不同的参数).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读