CosyOS
发表于 2025-1-14 18:04:54
lovehealth 发表于 2025-1-14 16:11
首先感谢作者,创作分享的CosyOS的系统。
我前段时间才开始学习此系统的,学习资料是2024-09-29在这下载的 ...
对中断中使用消息队列的相关约束,是因为 CosyOS 是全局不关总中断的。
不关总中断,在用户中断中就不能 动态内存分配和释放,因此就不能使用 动态队列。
所以导致 A 和 B。
C 是因为,消息队列采用了 互斥访问锁,所以,如果队列正在被访问(发送或接收),
将返回NULL,表示接收消息失败,但不会影响 被打断的、正在发送或接收消息的正确性。
每个消息队列,用户应当自己明确消息的类型和size,此事与操作系统无关。
原意是,消息队列要传输指针,而不是数据。
如果传输数据,sizeof(数据类型) 也只能是 sizeof(void *),而且数据不能为0,因为0就是NULL,表示接收失败。
未来是有计划要重构消息队列的,届时 将 支持不同size的数据传输 和 指针传输 两种方式。
感谢你的建议,会在未来实现更强大的消息队列。
lovehealth
发表于 2025-1-15 09:57:10
CosyOS 发表于 2025-1-14 18:04
对中断中使用消息队列的相关约束,是因为 CosyOS 是全局不关总中断的。
不关总中断,在用户中断中就不能...
理解了。
要是我的项目里的串口会收到不同size的数据串,然后发消息队列给一个任务来处理,任务按收到的数据串的size及内容来做不同的处理。
那我有什么方式方法来识别这个数据串的长度,谢谢!
vczqhzds
发表于 2025-1-15 15:34:32
CosyOS 发表于 2023-5-4 23:54
OS问题随时提供支持!
CosyOS的任务创建、启动等基本应用是十分简单的,示例代码一看便知。另外还可结合C ...
建议大家先看说明文档,按照README -> 技术要点 -> 开发流程这个顺序;《CosyOS-II 最新版_说明文档》 这个文件夹里,没有 README\ 技术要点 ,你做为一名技术型老师,能不能严谨一些啊;此外,此文件夹里的 开发流程里,大量出现了无法显示的 操作指导图片,很是急人;你能不能找个人先把文档写好,再测试一下再发布出来呢。
CosyOS
发表于 2025-1-15 18:46:35
vczqhzds 发表于 2025-1-15 15:34
建议大家先看说明文档,按照README -> 技术要点 -> 开发流程这个顺序;《CosyOS-II 最新版_说明文 ...
这个文档里确实漏掉了 image文件。
顶楼最下面有 最新版的工程模板 和 API说明书 可供下载。
工程模板附带一个测试程序可以直接运行。
CosyOS
发表于 2025-1-15 19:14:52
lovehealth 发表于 2025-1-15 09:57
理解了。
要是我的项目里的串口会收到不同size的数据串,然后发消息队列给一个任务来处理,任务按收到的 ...
一、如果数据是字符串
要确保它有尾 '\0',如果发来的字符串没有尾,一包数据收完后你就给它加一个尾,
接收消息后 strlen。
二、如果数据是真实数据
看是否会有固定的几种size?每种size对应一个队列。
如果size种类过多,暂时确实没有好办法,期待新版消息队列早日推出。
lovehealth
发表于 2025-1-16 11:47:25
目前的项目里的真实数据串(非字符串)长度种类有4种不同size数据长度。
我现在还在看CosyOS-II说明文档和回看视频,到时移植时遇到问题再请教了。
zhangrenbee
发表于 2025-1-28 20:06:58
厉害,期待中啊!
zzgpu
发表于 2025-2-7 12:26:00
好好学习
CosyOS
发表于 2025-2-16 14:43:44
好消息,CosyOS 全新大版本升级,CosyOS-III 隆重发布 !
由于核心技术的重大调整,CosyOS 有必要升级至 III。
CosyOS-III 主要技术特征:
CosyOS-III 采用 二级位图 + 三维链表:
二级位图:使得抢占式任务调度时间确定、为常数 O(1),任务调度性能 强强强!
三维链表:是指每个任务节点都可能同时处于三个链表中:
(1)任务优先级组链表(双向循环)
(2)阻塞链表(单向)
(3)定时器链表(单向)
使得任务状态变化时,不会频繁操作链表,服务执行性能 强强强!
SysTick中,软件定时器计时速度要比 CosyOS-II 快的多。
CosyOS-III 其它方面的调整:
1、支持 仅抢占式调度(每个任务的优先级必须不同)。
2、取消了 “私信”,使得任务的声明、创建、启动 趋于完美。
3、取消了创建任务的内置循环,用户必须自己写循环。
4、任务的最后不必再写 “uEndTasking”。
5、提供了事件标志组在任务、滴答中设置及清除多个标志位的服务。
6、任务管理器的相关调整:
(1)运行、就绪状态 不显示状态(借鉴了windows);
(2)阻塞状态 显示 阻塞类型,3个字符:
dly:延时阻塞
bin:二值信号量阻塞(获取/等待)
mut:互斥信号量阻塞(获取)
sem:计数信号量阻塞(获取)
fet:接收飞信阻塞
mal:接收邮件阻塞
msg:接收消息阻塞
gro:事件标志组阻塞(等待)
(3)其它状态 均显示 1个字符:
超时状态:O
挂起状态:^
停止状态:!
CosyOS-II 替换为 III 注意事项:
1、建议所有文件都要替换为新版。
2、建议删除原System文件夹中的所有文件,再重新copy新版文件。而后工程中,Group System,再重新添加文件。
3、syscfg.h 中,要重点关注几个配置项,包括 任务优先级数、相同优先级任务调度算法等。
4、mcucfg、port 等,基本不需要动。
5、所有已经创建的任务,任务中要注意需要加上 while(1),并删除 uEndTasking 或 定义它为空(#define uEndTasking)。
稍后会在顶楼发布 CosyOS-III 工程模板 和 API手册,欢迎下载及试用 CosyOS-III,这将会是一个全新的开始!
至此,CosyOS内核的纵向发展已基本接近尾声。。。
DIY365
发表于 2025-2-17 09:07:29
CosyOS 发表于 2025-2-16 14:43
好消息,CosyOS 全新大版本升级,CosyOS-III 隆重发布 !
由于核心技术的重大调整,CosyOS 有必要升级至 I ...
{:4_250:}{:4_250:}{:4_250:}