Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading RTOS体系结构设计良好实践_Multithreading_Freertos - Fatal编程技术网

Multithreading RTOS体系结构设计良好实践

Multithreading RTOS体系结构设计良好实践,multithreading,freertos,Multithreading,Freertos,我需要一些关于RTOS系统架构设计的合理建议。让我先解释一下上下文。我们开发这个软件的设备是一个面包烤箱,它是通过可视化界面(GUI)控制的。除此之外,我们正在使用一个线程用于整个GUI,另一个线程用于我们所谓的“控制”,这是一项计算重要控制值(温度,…)并通过Modbus将其发送到另一个PCB(处理实际硬件)的任务。显然,其他任务也在运行,比如读/写U盘或其他以太网通信任务……控制任务的优先级最高 为了分离线程并使它们尽可能独立,我们计划尽可能多地在它们之间发送消息,而不是共享资源。现在我的疑

我需要一些关于RTOS系统架构设计的合理建议。让我先解释一下上下文。我们开发这个软件的设备是一个面包烤箱,它是通过可视化界面(GUI)控制的。除此之外,我们正在使用一个线程用于整个GUI,另一个线程用于我们所谓的“控制”,这是一项计算重要控制值(温度,…)并通过Modbus将其发送到另一个PCB(处理实际硬件)的任务。显然,其他任务也在运行,比如读/写U盘或其他以太网通信任务……控制任务的优先级最高

为了分离线程并使它们尽可能独立,我们计划尽可能多地在它们之间发送消息,而不是共享资源。现在我的疑问来了:

当按下可视界面上的键或按钮时,必须播放声音。我想通过从GUI线程发送一条消息“播放声音”到一个低优先级的线程来处理说话者,但我的同事向我灌输了怀疑。她说,整个过程可能需要太长时间(因为扬声器线程可能需要等待其他优先级更高的线程完成),在这种情况下,用户会感到明显和不愉快(ofc,您希望在按下键后立即听到声音)。因此,她建议我们从GUI线程调用一个低级函数来播放该声音。这是一个值得推荐的想法吗?“行业”通常是如何进行的


提前感谢你的启示。我知道这是一个非常具体的问题,但很难在网上找到任何相关信息。

这是一个高度基于意见的问题,但我个人认为,如果你只想做一个给定持续时间的简单嘟嘟声,那么通过常规硬件定时器和直接函数调用来触发它是很容易做到的。如果你必须处理一些更复杂的事情,例如,一个接一个地播放队列中的声音/旋律,我会考虑用一个单独的任务来处理声音。然而,对于一个简单的哔哔声,一个单独的任务似乎是一种过度的杀伤力,加上它引入了一个可能的延迟,您必须解决这个问题,您已经提到过了。我认为这取决于您系统执行的任务。除非您的控制器过载,否则它可能能够执行所有任务而不会出现明显的延迟,因此您可以使用相同的值设置所有任务的优先级。否则,您应该确定哪些任务更关键,哪些任务更少。根据它,你应该设定任务的优先级。