AI MCU是否有基于协程的多任务设计框架呢?
在学了AI MCU的一些课程之后,逐渐有了一些模块的认识,目前是使用的task.c进行任务调度,直接使用RTOS很多模块又用不上。在使用时我有一些疑问。主任务是基于Task_Pro_Handler_Callback();的回调遍历函数指针实现任务调度的。它不能进行时间片分配。可以理解它就是一个单任务执行,多函数任务调度执行的,如有一个函数有延时或者耗时操作,都会影响其它任务调度。
咱们AI MCU生态,是否有基于携程的这种多任务机制框架呢。因为线程的机制是将执行态入栈,恢复,出栈的状态,这中间增加了不必要的任务切换开销。我们本来就很弱鸡的单片机性能,如能基于携程的思想,将大任务基于poll机制进行轮询,将多任务平等调度,以增加它的多任务最大性能。
任务调度方法,【无错,至简】!“多任务分时调度” - uCOS/FreeRTOS,GUI-uGFX/U8g2, 文件系统, 国产RTOS, 实时操作系统 国芯技术交流网站 - AI32位8051交流社区
STC单片机目前并未内置基于携程(Coroutine)的多任务设计框架。您提到的`task.c`任务调度机制,确实属于单任务轮询调度方式,无法实现时间片分配,任务间的阻塞操作会影响整体调度效率。对于资源受限的单片机,携程机制确实能减少任务切换开销,但由于STC生态并未原生支持,您可以通过以下方式实现类似功能:<br><br>1. **手动实现携程**:通过`switch-case`或`goto`语句模拟携程状态机,减少上下文切换开销。<br>2. **轻量级调度器**:使用开源轻量级调度器(如Protothreads),其基于事件驱动,适合资源受限的单片机。<br>3. **优化任务设计**:将耗时任务拆分为多个短任务,通过状态机或标志位实现异步执行。<br><br>建议根据具体需求选择合适的方案,权衡性能与开发复杂度。<br><br>[本文内容由国芯人工智能辅助生成,仅供参考] rtx51 tiny支持 你说的是
任务调度方法,多任务分时调度 【定时器周期性任务调度】
STC库函数的综合例程中有个超级简洁,超级稳定的任务调度系统
这种系统的学名是“前后台多任务操作系统”--FBOS 是实时响应最快的RTOS
你可以试试这些。
基于STC15的原创极简时间片轮询多任务-MyTinyOS
基于STC15的原创极简时间片轮询多任务-MyTinyOS
CosyOS-II for STC MCU 国产实时操作系统RTOS
angmall 发表于 2025-3-10 15:26
你说的是
任务调度方法,多任务分时调度 【定时器周期性任务调度】
STC库函数的综合例程中有个超级简洁,超 ...
超mini型任务调度{:ciya:} 神农鼎 发表于 2025-3-12 23:18
任务调度方法,【无错,至简】!“多任务分时调度” - uCOS/FreeRTOS,GUI-uGFX/U8g2, 文件系统, 国产RTO ...
通过软/硬中断达到分时任务的目的也是个方法,不过因为优先级的关系,中断不能阻塞。只能重新编排代码将标志位和耗时函数段分开编写。
页:
[1]