全面应用模块模板
编写的应用程序可以作为 工作 (模块(有自己的堆栈和进程优先级),或作为 工作队列任务 (在工作队列线程上运行的模块,与工作队列中的其他任务共享堆栈和线程优先级)。在大多数情况下,可以使用工作队列任务,因为这样可以最大限度地减少资源占用。
信息
架构概述 > 运行时环境 提供了有关任务和工作队列任务的更多信息。
信息
所有在 首次应用教程 与撰写完整的申请相关。
工作队列任务
PX4-Autopilot 包含一个用于编写新应用程序(模块)的模板,该应用程序(模块)以 工作队列任务: src/examples/work_item.
工作队列任务应用程序与普通(任务)应用程序相同,只是它需要指定自己是工作队列任务,并在初始化过程中安排自己的运行时间。
示例说明了如何操作。总而言之
在 cmake 定义文件中指定对工作队列库的依赖 (CMakeLists.txt):
... 取决于 px4_work_queue
除了
模块库
因此,该任务还应从计划工作项目
(包括从 ScheduledWorkItem.hpp)在构造函数初始化中指定要将任务添加到的队列。队列 工作项目 示例将自己添加到
wq_configurations::test1
工作队列,如下图所示:cpp工作项目示例::工作项目示例() : 模块参数(nullptr), 计划工作项目(MODULE_NAME、 px4::wq_configurations::test1) { }
信息
可用的工作队列 (
wq_configurations
)列于 WorkQueueManager.hpp.实施
ScheduledWorkItem::Run()
工作的方法。实施
任务生成
方法,指定任务是一个工作队列(使用任务 ID 是否为工作队列
id.使用其中一种调度方法调度工作队列任务(在示例中,我们使用
ScheduleOnInterval
从启动
方法)。
任务
PX4/PX4-Autopilot 包含一个用于编写新应用程序(模块)的模板,该应用程序(模块)可作为任务运行在自己的堆栈中: src/templates/template_module.
该模板演示了完整应用程序所需或有用的以下附加功能/方面: