关于多任务我的一些问题
想多任务想了不止一会了,最近玩RTX51时候又有些不太懂的地方,还有一些理解,希望大家来解答一下,讨论一下。首先就是实现上。
我总感觉所谓泛指的多任务和RTOS总有一条线,就是阻塞不阻塞。
多任务不一定非的是RTOS,比如那个协程,还有定时器调度什么的。(个人感觉定时器调度就挺好玩的,把大任务拆碎定时跑,每次跑一点),但他们我发现如果一个环节阻塞了整个都会卡住。但RTOS还不是,一个任务里死循环其他任务照样跑,不会因为一个阻塞其他都不走了。
那问题来了,RTOS怎么实现这种灵活切换不同函数间的运行呢?汇编代码我看不太懂,有没有比较好理解的解释?如果是定时器调度,各种任务毕竟还是一根线上的蚂蚱 然后是任务间通信。
RTOS(比如RTX51TNY),任务间想传递大数据,该怎么弄?发信号不是都发的是字节或者位吗?直接访问全局变量安全吗?
另外关于某个函数的互斥调用,怎么弄?要就是想偷懒是设置成可重入,那能被两个任务同时调用吗?(没涉及共享资源比如同一个IO脚,同一个SPI口之类的,仅仅是同时调用用同一个函数) 比如传个数组什么的,该怎么弄?直接把指针发过去行吗? 最后就是栈的配置。
怎么估算大概用多少栈啊?
比如RX51tny里置顶RAMTOP和FREESTACK,这两个还不是越大越好,第一遍我想把RAMTOP直接拉满到1fff,但为什么不行?同理FREESTACK开太大(到0xff就报错了),
先把这个掌握了
【协程方式】实现【多任务调度 / 多线程】 仅需2byte的RAM 并带有详细视频讲解 - uCOS/FreeRTOS,GUI-uGFX/U8g2, 文件系统, 国产RTOS, 实时操作系统 国芯技术交流网站 - AI32位8051交流社区
神农鼎 发表于 2025-6-12 12:18
先把这个掌握了
ok
页:
[1]