1、PX4模块运行方式
PX4项目采用两种方式运行:
-
Tasks
-
Work queue tasks
Tasks: 模块在自己的任务中运行,具有自己的堆栈和进程优先级。 Work queue tasks:多个任务在同一堆栈上运行,与队列中的其他模块共享相同的堆栈和工作队列线程优先级。
工作队列的优点是 RAM 占用更少,减少任务切换,缺点是队列任务不能休眠,也不能轮询消息。对于运行时间比较长的任务应该使用Tasks或者在一个独立的工作队列中
工作队列(work Queue)用于执行周期性任务,如传感器驱动程序。
2、PX任务启动方式
px4_task_spawn_cmd() 用来启动任务:
independent_task = px4_task_spawn_cmd(
"commander", // Process name
SCHED_DEFAULT, // Scheduling type (RR or FIFO)
SCHED_PRIORITY_DEFAULT

PX4项目采用Tasks和Workqueue任务运行方式,Tasks拥有独立堆栈和优先级,而Workqueue共享堆栈,适用于周期性任务且不支持任务休眠。px4_task_spawn_cmd函数用于启动任务。工作队列通过ScheduledWorkItem类进行管理,利用高精度hrt定时中断实现高效调度,但长时间任务可能影响其他队列的执行。
最低0.47元/天 解锁文章
346

被折叠的 条评论
为什么被折叠?



