找回密码
 立即注册
查看: 199|回复: 6

AI MCU是否有基于协程的多任务设计框架呢?

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:12
  • 最近打卡:2025-03-18 21:30:53
已绑定手机

4

主题

18

回帖

120

积分

注册会员

积分
120
发表于 2025-3-10 11:41:46 | 显示全部楼层 |阅读模式
在学了AI MCU的一些课程之后,逐渐有了一些模块的认识,目前是使用的task.c进行任务调度,直接使用RTOS很多模块又用不上。

在使用时我有一些疑问。主任务是基于Task_Pro_Handler_Callback();的回调遍历函数指针实现任务调度的。它不能进行时间片分配。可以理解它就是一个单任务执行,多函数任务调度执行的,如有一个函数有延时或者耗时操作,都会影响其它任务调度。
咱们AI MCU生态,是否有基于携程的这种多任务机制框架呢。因为线程的机制是将执行态入栈,恢复,出栈的状态,这中间增加了不必要的任务切换开销。我们本来就很弱鸡的单片机性能,如能基于携程的思想,将大任务基于poll机制进行轮询,将多任务平等调度,以增加它的多任务最大性能。





回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15630
发表于 2025-3-12 23:18:29 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 2025-3-10 11:43:00 | 显示全部楼层
STC单片机目前并未内置基于携程(Coroutine)的多任务设计框架。您提到的`task.c`任务调度机制,确实属于单任务轮询调度方式,无法实现时间片分配,任务间的阻塞操作会影响整体调度效率。对于资源受限的单片机,携程机制确实能减少任务切换开销,但由于STC生态并未原生支持,您可以通过以下方式实现类似功能:<br><br>1. **手动实现携程**:通过`switch-case`或`goto`语句模拟携程状态机,减少上下文切换开销。<br>2. **轻量级调度器**:使用开源轻量级调度器(如Protothreads),其基于事件驱动,适合资源受限的单片机。<br>3. **优化任务设计**:将耗时任务拆分为多个短任务,通过状态机或标志位实现异步执行。<br><br>建议根据具体需求选择合适的方案,权衡性能与开发复杂度。<br><br>[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:474
  • 最近打卡:2025-05-02 08:41:01

0

主题

50

回帖

193

积分

注册会员

积分
193
发表于 2025-3-10 13:40:05 | 显示全部楼层
rtx51 tiny支持
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:522
  • 最近打卡:2025-05-02 00:29:54

10

主题

1159

回帖

5121

积分

论坛元老

积分
5121
发表于 2025-3-10 15:26:27 | 显示全部楼层
你说的是
任务调度方法,多任务分时调度 【定时器周期性任务调度】
STC库函数的综合例程中有个超级简洁,超级稳定的任务调度系统
这种系统的学名是“前后台多任务操作系统”--FBOS 是实时响应最快的RTOS


你可以试试这些。

基于STC15的原创极简时间片轮询多任务-MyTinyOS
基于STC15的原创极简时间片轮询多任务-MyTinyOS


CosyOS-II for STC MCU 国产实时操作系统RTOS


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:12
  • 最近打卡:2025-03-18 21:30:53
已绑定手机

4

主题

18

回帖

120

积分

注册会员

积分
120
发表于 2025-3-12 23:05:04 | 显示全部楼层
angm*** 发表于 2025-3-10 15:26
你说的是
任务调度方法,多任务分时调度 【定时器周期性任务调度】
STC库函数的综合例程中有个超级简洁,超 ...

超mini型任务调度
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:12
  • 最近打卡:2025-03-18 21:30:53
已绑定手机

4

主题

18

回帖

120

积分

注册会员

积分
120
发表于 2025-3-12 23:31:13 | 显示全部楼层
神*** 发表于 2025-3-12 23:18
任务调度方法,【无错,至简】!“多任务分时调度” - uCOS/FreeRTOS,GUI-uGFX/U8g2, 文件系统, 国产RTO ...

通过软/硬中断达到分时任务的目的也是个方法,不过因为优先级的关系,中断不能阻塞。只能重新编排代码将标志位和耗时函数段分开编写。
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 22:00 , Processed in 0.152547 second(s), 97 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表