论坛» 嵌入式开发» 国产MCU

全局不关总中断的RTOS/CosyOS-IIforSTCMCU

菜鸟
2024-04-25 10:34 1楼

国产原创RTOSfor32位8051,STC32G12K128 线上免费课程
国产原创RTOSfor1T8051, STC8H8K64U线上免费课程
国产原创RTOS腾讯会议线上免费教学直播通知,16课时
腾讯会议直播号497-3446-6072
(安装腾讯会议软件后,输入该会议号)

全局不关总中断的RTOS/ CosyOS-II forSTCMCU
2024/4/26,周五下午 14:00 ~ 16:30
2024/4/28,周日下午 14:00 ~ 16:30

节后时间另行通知,待定

或点击专属链接入会,或添加至会议列表:
https://meeting.tencent.com/dw/ODPLiRyypohy

全局不关总中断的RTOS/ CosyOS-II forSTCMCU
公告
最新版本:V2.2.1,2024/4/21 发布!
CosyOS 取得重大技术突破,现已升级至CosyOS-II,代码风格焕然一新,说明文档持续更新中。。。
CosyOS-II 现已支持Cortex-M系列全部内核,M0/M0+/M23/M3/M4/M33/M7。
CosyOS-II 自V2.1.0版本开始,采用尤为高效的任务调度算法,任务调度与切换性能大幅提升!

简介
CosyOS是一款来自中国的开源实时操作系统,从经典的8051内核,到流行的Arm Cortex-M内核,
均可实现全局不关总中断、零中断延迟适用于对系统实时性及中断响应速度有较高要求的场合
此外,CosyOS的任务切换效率无与伦比,易用性也完全超乎你的想象,更拥有多项安全关键技术,
助你打造更加实时安全的嵌入式产品。

支持内核
CosyOS原生支持8051/STC8HSTC32位8051/STC32G12K128、Cortex-M等内核,未来会陆续添加对其它内核的支持。
实际用STC8H、STC32进行了开发测试,可以说是STC8051世界量身定做无需移植

编译环境
CosyOS是在Keil C51、C251、MDK-Arm编译器下开发的,对其支持最好。未来,将会陆续优化调整对其它编译器的支持。

突破创新
支持内核均已实现全局不关总中断、零中断延迟,从系统层面保证了用户中断的实时响应
独家技术实现系统服务函数的可重入,使51彻底摆脱可重入栈、全面提速
针对51做了高度的性能优化,使51迸发出蓬勃生机、熠熠生辉
251支持MSPPSP两种栈模式,其中PSP模式可使任务的切换效率等同于Cortex-M
定时服务(软件定时器中断),支持钩子和任务,任务优先级都可由用户灵活配置
独创的飞信极简类型、极速通信,是线程间通信的利器
独创的私信随意定义,灵活多变,便于多条消息的传递
消息邮箱,任意类型,指针引用
消息队列,支持静态队列和动态队列,传输模式支持FIFO、LIFO,采用高效的指针引用方式
事件标志组,声明标志组的同时定义标志位,不同标志组的标志位可以重名,
对标志组和标志位的访问通过组名和位名来实现,极大的方便了标志组的应用
全局变量访问,支持在任意任务和中断中对全局变量的安全访问,而不必担心重入的发生
软件RTC,支持设置时间和获取时间,可替代硬件RTC
安全关键技术,拥有多项安全关键技术,如中断挂起服务空间隔离、安全运行时等,可靠性高
任务栈监控,拥有多项任务栈监控措施,可提前预判任务栈溢出的风险


因循守旧
● 完全开源的免版税、确定性的RTOS
● 任务调度支持抢占式调度、时间片轮转调度
● 用户任务数量不限,且每个任务都可以有255级优先级(0~254)
● 简洁高效的代码,极低的硬件资源占用,使CosyOS可轻松应用于各种小型MCU
● 任务管理器,可实时监控各任务的运行,便于开发者急时发现设计中存在的潜在问题


什么是零中断延迟
零中断延迟并非是中断响应时间为零,而是指当引入了RTOS以后,中断响应时间仍然能够达到MCU内核特性的响应时间,
即只要中断发生,就能按中断优先级立即抢占,不存在指令级延误。也就是说,中断响应时间不受RTOS影响,与裸机编程是一样的。

CosyOS - 实时运行模型

  • 中断层【用户中断按中断优先级实时抢占(零中断延迟)】

    • 用户中断
      ->中断本地服务的执行
      ->中断挂起服务的装载

  • 服务层【内核服务】

    • SysTick[minpri]
      ->软件RTC/定时器计数
      ->恢复定时任务
      ->调用定时钩子/滴答钩子(滴答服务的执行)

    • PendSV[minpri]
      ->中断挂起服务的执行
      ->任务调度/切换

    • 任务临界区[关闭SysTick/PendSV]
      ->任务服务的执行

  • 任务层【不同优先级的任务抢占式调度,相同优先级的任务时间片轮转调度】

    • Taskmgr[maxpri]

    • Debugger[maxpri]

    • Starter[maxpri-1]

    • 一般用户任务[maxpri-1 ~ minpri+1:1]

    • 用户空闲任务[minpri:0]

    • 系统空闲任务[minpri:0]

CosyOS-零中断延迟基本原理

一、服务层中,SysTick、PendSV、任务临界区,三者间是互斥访问的。换言之,整个服务层是一个大临界区(服务层临界区)。
二、所有内核服务(中断本地服务除外),均在“服务层临界区”执行,从而保证服务的“操作流”不会被打断。
三、中断本地服务采用互斥访问机制。

CosyOS-II 内核对象大小:


任务对象大小:
sizeof 静态创建:taskhandle + tasknode + taskstack;
sizeof 动态创建:taskhandle + taskhand + malloc(tasknode) + malloc(taskstack);

注解:
TMR:软件定时器
TID:任务ID
SRT:安全运行时
DBG:debug调试功能
REG:REGBANK0(当最低优先级中断REGBANK非BANK0时需要+8)
C251 的 ptr-2、ptr-4,是指内核对象指针变量的size,由 mcucfg_80251.h 中的“内存方案配置”选项来决定。

STC32 内存方案配置:

针对STC32,提供了内存方案配置,可更有效的综合利用 edata、xdata。
相信,CosyOS将会成为www.STCAIMCU.com的加速器,助力STC32位8051腾飞!

CosyOS-II示例代码
基于 FreeRTOS-STC32G-CORE-V1.0.2-Library-DemoCode-20220817 修改的,将FreeRTOS替换为CosyOS的示例代码,
目的是能让用户快速掌握CosyOS的基本应用,降低使用门槛。
作者仅做了必要的调整,调整的地方多是先注释掉原来的代码,再在下方重写,以便用户比较CosyOS与FreeRTOS的异同。
示例代码简要说明:
配置情况:
系统时钟24MHz,任务管理器使用UART1(切换至P1.6/P1.7,波特率460800),PendSV_Handler使用外部中断0。
任务管理器已配置为开机自动启动,USB-TTL接入P1.6/P1.7,打开串口助手设置正确的波特率即可输出。
配置文件:
syscfg.h (系统配置文件,.\Sources\Config\syscfg.h)
mcucfg_80251.h(MCU配置文件,.\Sources\Config\mcucfg_80251.h)
CosyOS.h (用户配置文件,.\Sources\User\include\CosyOS.h)

CosyOS-II专业版测试程序
专门用于测试CosyOS的各项系统服务在极限条件下运行的稳定性、可靠性及性能。
详细说明:
全局不关总中断的RTOS / CosyOS-II for STC MCU,线上课程跟帖报名,盖楼到500层开课 - 第14页 - FreeRTOS/uCOS,GUI-uGFX/U8g2,文件系统/嵌入式系统/实时操作系统 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)

详细配置情况查看“init_hook.c”。

2024/4/21:
CosyOS-II最新版V2.2.1-beta发布!

请顶楼下载!
专业版测试程序中已加入必要说明,描述任务切换原理,TASK_A、TASK_B合作流程图等。
专业版测试程序充分展示了 CosyOS 实现线程同步的各种手段。

最新版本下载:
1、CosyOS-II-STC32G-TEST-V2.2.1-20240421(CosyOS-II内核版本 V2.2.1-beta,STC32G12K128)下载:

CosyOS-II-STC32G-TEST-V2.2.1-20240421.rar

2、CosyOS-II-STC8H-TEST-V2.2.1-20240421(CosyOS-II内核版本 V2.2.1-beta,STC8H8K64U)下载:

CosyOS-II-STC8H-TEST-V2.2.1-20240421.rar

以后最新版本均在此处提供下载,如测试发现问题请及时反馈!

高工
2024-03-26 21:54 2楼

这彩色的文档,看着真是炫丽啊

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]