我正在努力掌握如何设计RTOS任务以执行嵌入式系统所需的功能。有哪些建议的资源可用于学习任务设计的具体指导原则?以下是我想回答的一些典型问题:
我希望将任务数量保持在最低限度,但如果简化设计或帮助避免未来的陷阱,我不介意增加任务数量。感谢您的反馈。
答案 0 :(得分:3)
任务有两个目的:
第一个可以在任何调度算法上实现 - 而不仅仅是实时。它可用于实现高内聚力和低耦合。这些是带或不带线程的模块化编程的常见概念。
第二个目标特定于RTOS,可能涉及单个"功能"可能在(1)中设想需要分成多个线程以满足实时截止日期。这里划分为任务不是唯一的问题,而是线程优先级的分配。
答案 1 :(得分:2)
好吧,作为一个粗略的指南,如果您不允许嵌套中断到这些外设,您可能只能使用一个线程来处理所有慢速面向字符的外设(如UART和I2C)的驱动。这节省了堆栈,允许来自中断处理程序的简单FIFO通信用于rx数据包,并允许为它们使用共享缓冲池。线程可以在信号量上等待线程安全tx队列上的缓冲区和rx缓冲区的单个共享简单FIFO队列。每当一个线程为tx排队缓冲区,或者一个中断处理程序排队了一个rx缓冲区时,它就会发信号通知信号量。