Files
cosyos/CosyOS-III 版本更新记录.md
T
2026-08-03 04:27:22 +00:00

15 KiB

V1.2.0

  • 重新调整了文件目录结构。
  • 取消了所有系统文件中的头文件包含路径,以后包含路径均在编译器中添加。
  • 重新调整了移植架构,耦合度更低、移植更便利。
  • DEBUG接口的串口发送与接收被解耦出来,以后串口发送在 debug_hook 中实现,串口接收完成后调用服务解析。
  • 进一步规范化了API格式,所有无参数的API,后面均需加入()。

V1.2.1

  • syscfg.h 中,增加配置项 创建任务-尾参数功能,使得用户可以灵活配置“任务名称”字符串的定义方式,详见 syscfg.h。

V1.2.2

  • 诸如 if(tick < (s_delay_t)~0) 的条件判断语句,调整为 if(~tick),调整后代码更为精炼、清晰。
  • 队列控制块,size_t counter 加入了 volatile 进行修饰,严格来讲这样做是有必要的,原因不便说明。
  • 解决了 port_cmx.h 中,当 系统中断配置为 SysTick_Handler + PendSV_Handler,系统滴答-配置方式 为 手动配置时,mSysTick_SetPRI() 未定义的问题。

V1.2.3

  • 延时服务 加入了 条件判断,如果延时时间为0会立即返回。
  • 启动任务 增加了 任务初始状态为阻塞(阻塞类型为延时阻塞,延时时间为无限长)。

V1.3.0

  • 互斥信号量相关技术做出重大调整,解决了当嵌套获取多个互斥信号量时,可能会发生的优先级反转问题(该bug普遍存在于常见主流RTOS中)。
  • 更新日期:2025.04.15

V1.3.1

  • Port/Cortex-M,新加入了文件 cmsis_specific.h,以解决当用户使用老版本CMSIS核心库文件时,多项 CMSIS compiler specific defines 未定义的问题。
  • 取消了 mcucfg_cmx.h 文件中,硬件浮点单元是否启用的配置选项,调整为通过包含标准头文件自动识别。
  • 更新日期:2025.04.18

V1.3.2

  • ur_api.h 中,优化并调整了部分注释说明。
  • 更新日期:2025.04.19

V1.3.3 ~ V1.3.8

  • 逐步优化并完善了 CosyOS for Arm 对 Arm Compiler 4/5/6、GNU Compiler、IAR Compiler 等主流编译器的支持,并实现了良好的易用性。
  • 完成日期:2025.05.02

V1.3.9

  • 新增服务 uExtTask(task)、dExtTask(task),任务线程的简化声明方式,以应对当采用GNU编译器时,偶尔可能出现的警告(任务相关变量未引用),详情参见API说明。
  • 更新日期:2025.05.03

V1.4.0

  • 推出了 CosyOS实用例程,包括 demo_int.c、demo_main.c、demo_task.c 三个例程文件。
  • 推出了 CosyOS升级安装程序 CosyOS-III Cube.exe,可轻松将您的裸机工程升级为CosyOS工程。
  • 更新日期:2025.05.08

V1.4.1

  • 修复了一个bug。
  • 更新日期:2025.05.11

V1.4.2

  • 优化了计数信号量相关服务,性能进一步提升。
  • 更新日期:2025.05.14

V1.4.3

  • 针对 AC5,优化了任务切换部分,使任务切换性能进一步提升。
  • 更新日期:2025.05.16

V1.4.4 ~ V1.4.5

  • 针对 Arm,进一步进行了优化,使整体性能进一步提升。
  • 完成日期:2025.05.17

V1.4.6

  • 优化了一处头文件包含关系,修复了两处 C51、C251 编译器警告。
  • 更新日期:2025.05.18

V1.4.7

  • 优化了任务管理器CPU使用率相关算法,以后即使是在极端情况下,也不会出现某个任务或总的CPU使用率超过100%的情况。
  • 更新日期:2025.05.19

V1.4.8 ~ V1.5.0

  • 优化了互斥信号量、二值信号量、计数信号量相关算法,解决了当获取它们时可能会提前结束超时并返回失败的问题。
  • 完成日期:2025.05.31

V1.5.1

  • 优化了 debug_hook for 8051 and 80251.
  • 推出了 新版的CosyOS实用例程。
  • 更新日期:2025.06.07

V1.5.2

  • 修复了一处未引用警告,在 os_handler.c 中。
  • 更新日期:2025.06.09

V1.5.3

  • 优化了80251的移植和配置。
  • 更新日期:2025.06.14

V1.6.0

  • 部分系统变量和函数重命名,新名称更加科学、规范。
  • startup_8051.s 加入了硬件栈配置并优化了注释内容。
  • startup_80251.s 加入了图形用户界面并优化了注释内容。
  • 进一步优化了默认配置,包括系统配置和MCU配置。
  • Demo 中加入了说明文档。
  • 修复了若干处漏洞和BUG。
  • 除 Cortex-M0 外,经 CosyOS-III Cube 升级安装后,仅需在 syscfg.h 中正确配置标准头文件即可正常编译。
  • 更新日期:2025.06.17

V1.6.1

  • 修正了 syscfg.h 文件中,“在线用户任务总数” 的重定义问题。
  • 更新日期:2025.06.18

V1.6.2

  • 优化了 ur_api.h 中的注释说明,并推出新版 CosyOS-III API用户参考手册。
  • 更新日期:2025.06.23

V1.6.3

  • 取消了全局变量副本方案,将不再支持非原子全局变量在中断中的读访问。
  • 取消了中断中获取软件RTC。
  • 优化了软件RTC相关功能和服务。
  • 更新日期:2025.06.27

V1.6.4

  • 修复了由于队列控制块类型定义重命名而导致的部分宏定义引用中遗漏同步修改的bug。
  • 推出了新版 CosyOS-III Cube,针对 Keil C51、C251,将自动替用户完成部分确定的、推荐的编译器配置工作。
  • 更新日期:2025.07.13

V1.6.5

  • for 8051 推出了虚拟中断技术,当启用该技术时,所有任务都将自动成为调用树覆盖分析的根。
  • 更新日期:2025.07.14

V2.0.0

  • 部分关键字重命名。
  • 所有C文件中,条件编译加上了括号。
  • 删除了内核文件 sv_int_pend_flag.c、sv_int_pend_flag.h。
  • 新增了内核文件 sv_int_pend.h,前缀为“p”的中断挂起服务,均在 sv_int_pend.h 中定义,
    并允许通过挂起服务调用(iPendSVC)间接调用、或在挂起服务钩子(pendsv_hook)中调用。
    当通过挂起服务调用(iPendSVC)间接调用时,仍为中断挂起服务_FIFO;
    当在挂起服务钩子(pendsv_hook)中调用时,为中断挂起服务_FLAG。
    部分服务调整为支持返回,具体包括 PendSV中(p)恢复任务、挂起任务、删除任务、清除阻塞、设置阻塞、设置任务优先级,均返回错误码。
  • 部分 中断挂起服务_FIFO 支持错误调用返回,便于用户实现错误处理。
    具体包括 中断中(i)恢复任务、挂起任务、删除任务、清除阻塞、设置阻塞、设置任务优先级、发送消息,均返回错误码。
    回调函数均在 sv_int_pend_fifo.c 中弱定义,并在 ur_api.h 中声明。
  • for 8051,如果启用了XBPSTACK的任务切换现场保护,任务栈SIZE允许大于255,最大可为65535。
  • 创建定时中断钩子、定时查询钩子 时,不用再输入钩子名称,由系统自动生成。
  • 更新日期:2025.08.04

V2.0.1

  • 解决了GCC下,DEBUG串口接收解析的异常问题。
  • 修复了AC5下,移植文件中有关 Cortex-M0 的 BUG。
  • 更新日期:2025.08.13

V2.0.2

  • port_cmx_s.c 文件中,针对GCC编译器,增强了对 thumb-2指令集 的支持,以有效解决当编译M0处理器时的报错:在thumb16模式下不支持thumb-2指令。
  • 更新日期:2025.08.15

V2.0.3

  • 针对 8051、80251,提供了对 小数兆赫系统时钟(如 11.0592MHZ 等) 的有效支持,使得当用户使用 小数兆赫系统时钟 时,对系统节拍精度的影响可降至最低。
  • 更新日期:2025.08.19

V2.0.4 ~ V2.0.5

  • 进一步性能优化,性能得到全方位提升,共涉及 os_handler.c、sv_task.c、port_cmx.h、port_cmx_iar.s 四个文件。
  • 更新日期:2025.11.04

V2.0.6

  • 任务管理器中,任务状态-浮动状态,调整为独立显示。
    以前版本,浮动状态被视为阻塞状态,显示 阻塞类型,如: bin、 mut、 sem、 fet、 mal、 msg、 gro、dly。
    新调整后,浮动状态将进行独立处理,显示 ~阻塞类型,如:~bin、~mut、~sem、~fet、~mal、~msg、~gro。
  • 更新日期:2025.11.06

V2.0.7

  • os_handler.c 中,优化了 blocktype 的条件判断位置。
  • 更新日期:2025.11.07

V2.0.8

  • 更正了移植和配置文件中,有关 “互斥访问机制” 的相关说明。
  • 优化了 “中断FIFO服务装载器” > “互斥访问机制” 的相关代码。
  • 更新日期:2025.11.19

V2.1.0

  • 重构了任务软件定时器,采用了改良的Linux时间轮,以适用于嵌入式场景。
  • 部分关键字重命名。
  • 修复了有关互斥信号量的一个深层BUG。
  • 更新日期:2025.12.15

V2.1.1

  • 安全运行时的单位,由时间片调整为滴答周期,使安全运行时功能可在各种任务调度算法下正常使用。
  • 用户定时中断/查询总数,由最大64减少为32。
  • 更新日期:2025.12.24

V2.2.0

  • 中断FIFO服务技术全面升级,完善了FIFO溢出检测机制和最大深度统计功能,运行更可靠,同时性能进一步提升。
  • 本次升级仅涉及到所有的port文件。
  • 更新日期:2026.01.13

V2.2.1

  • AC6/IAR-EWARM/GCC-ARM 内联汇编,在语法上取得突破,使得在字符串中可引用宏定义,因此相关代码做出优化和调整。
  • 本次调整仅涉及 port_cmx.h、port_cmx_s.c 两个文件。
  • 更新日期:2026.01.16

V2.2.2

  • 修复了ARM“互斥访问机制”中的一个漏洞,并进一步优化了性能,更高效、更安全。
  • 本次调整仅涉及 port_cmx.h、port_cmx.c、port_cmx_s.c 三个文件。
  • 更新日期:2026.01.19

V2.2.3

  • ARM“互斥访问机制”,得以进一步性能优化,已达历史最高水平,无法再精进。
    在“互斥访问__LOOP”未被打断的情形下,“互斥访问机制”仅比“互斥访问指令”多执行8条指令,
    性能已经十分强劲,完全具有实用价值,这是广大M0用户的福音。
  • 更新日期:2026.01.20

V2.2.4

  • 优化了[basepri]寄存器 的相关操作,代码更规范,运行更高效。
  • 本次调整仅涉及 port_cmx.h、port_cmx.c 两个文件。
  • 更新日期:2026.01.23

V2.3.0

  • 重构了私信,与之前版本相比,更为易用和高效、也更加可靠。
    新版私信特点:
    1、与处理器架构(移植文件)解耦;
    2、私信参数数量支持 1~8个,各个参数的数据类型为任意,但名称有要求,必须是 tm1、tm2、tm3...
    3、与之前版本不同,发送私信已支持寄存器传参,性能显著提升;
    4、与之前版本不同,无需任何预处理指令相配合,对优化等级亦无要求;
    5、不会有任何警告或错误,除非用户自己未使用私信或应用错误;
    6、创建私信任务的API 与 原有创建任务的API 分离,互不干涉。
  • 本次调整涉及到大部分内核文件。
  • 更新日期:2026.02.02

V2.3.1

  • 优化了 CosyOS-启动,提升可靠性。
  • Cortex-M0,中断FIFO服务装载器-互斥访问方案 做出调整,增加了新的方案。
    新版方案包括:<1=> 互斥访问指令 <2=> 互斥访问机制一 <3=> 互斥访问机制二 <0=> 关闭总中断
  • 新增 中断FIFO服务处理器-最大并发执行数,具体见 MCU配置头文件。
  • 更新日期:2026.03.01

V2.3.2

  • DEBUG输出(包括任务管理器和命令行)扩展至 中英文双语。
  • 更新日期:2026.03.10

V2.3.3

  • CosyOS-III Cube 新版发布,完美支持中文路径,无论是 CosyOS路径 还是 工程路径,都可随意用中文,不会有问题。
    同时修复了路径识别上的bug,可应对各种复杂路径,确保成功安装。
  • 更新日期:2026.04.06

V2.3.4

  • 优化了协作式调度和时间片轮转调度相关算法和细节。
  • uYieldTasking(),调整为:当开启相同优先级任务的协作式调度或时间片轮转调度时,才支持此项服务。
  • 更新日期:2026.04.16

V2.3.5

  • 部分关键字重命名,包括数据类型、变量名称、宏定义等。
  • 调整了大部分 const、volatile 关键字的位置,由数据类型之前调整为之后。
  • syscfg.h 中增加了选项,可配置安全运行时计数器的位数。
  • 更新日期:2026.06.10

V2.3.6

  • 有关任务启动的三个全局变量封装在一个结构体中。
  • 启动任务增加了新的安全策略,避免重复启动同一个任务。
  • 修复了一处有关任务调度的隐形bug。
  • 更新日期:2026.06.11

V2.3.7

  • 修复了 port_cmx_s.c 中的一处遗漏重命名。
  • 进一步优化了启动任务,提高可靠性。
  • 增加了一项新的服务,重置任务。
  • 更新日期:2026.06.13

V2.3.8

  • 超时链表由单向链表调整为双向链表。
  • 安全运行时,彻底解决其在特定情况下的不可靠因素。
  • 更新日期:2026.06.15

V2.3.9

  • 增加了新的栈监控机制,使得对主栈和任务栈用量的检查更为准确,进一步提高了可靠性并降低了栈溢出的风险。
  • 更新日期:2026.06.20

V2.4.0

  • 进一步优化了主栈检查,提升可靠性和易用性。
  • 修复了GCC编译器会产生警告的问题。
  • 更新日期:2026.06.22

V2.4.1

  • 增加配置选项,是否需要在用户中断中接收消息?
  • 创建服务功能升级,互斥信号量、二值信号量、计数信号量、飞信、邮箱等,提供了创建不初始化服务,
    该功能可用来创建相应的数组,或把它们封装在结构体中。
  • 更新日期:2026.06.28

V2.4.2

  • 内核代码和移植文件中,部分关键路径添加屏障指令,以保安全。
  • 裁剪掉了 for Cortex-M0 的 互斥访问机制二。
  • 更新日期:2026.07.04

V3.0.0

  • 重构了移植架构,为使未来的移植工作可以更顺利的进行。
  • 新增了对 RISC-V32 指令集架构的支持,并针对 青稞V4系列微处理器 进行测试和调优。
  • 中断FIFO服务技术进一步升级,优化了包括 中断FIFO服务装载器、中断FIFO服务处理器。
    针对 80251 推出了新的 中断FIFO服务互斥访问方案,新增方案包括 [INC]指令、关闭总中断。
  • 其它调整及优化。
  • 更新日期:2026.07.21

V3.0.1

  • 针对 RISC-V32,推出了自研先进技术,可实现 CH32V 全程开启硬件压栈。
    该技术为纯软件实现,不依赖特定硬件(0x804->bit5),V103、203 等皆可完美支持。
  • 优化了中断FIFO服务装载器,性能进一步提升。同时增加了新的互斥访问方案:关闭总中断(嵌套方式)。
  • 更新日期:2026.07.30

V3.0.2

  • 解决了 V3.0.1 版本中,硬件压栈相关技术的不可靠因素,确保系统稳定可靠运行。
  • 更新日期:2026.08.03