找回密码
 立即注册
楼主: CosyOS

全局不关总中断的 RTOS,CosyOS-III-V1.2.0, 送 擎天柱-AI8051U转89C52核心板

 火... [复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:486
  • 最近打卡:2025-08-19 22:25:03

5

主题

1192

回帖

4697

积分

荣誉版主

积分
4697
发表于 2025-7-15 15:28:32 | 显示全部楼层
gzl*** 发表于 2025-7-15 10:39
顶楼没看到更新的1.6.5版本,还没测试发布吗

以后都不在论坛上发布了,以后也不会有工程模板了,都是通过 Cube 升级安装了,用户需自行gitee下载了。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:486
  • 最近打卡:2025-08-19 22:25:03

5

主题

1192

回帖

4697

积分

荣誉版主

积分
4697
发表于 2025-7-15 15:44:04 | 显示全部楼层
为了更加准确且有效的指导用户使用 CosyOS-III for 8051 的“虚拟中断”,
配置文件中的注释说明,现做出如下调整:

截图202507151531092884.jpg

另外提醒用户不要一味的屏蔽告警 L5/L30,因为如果硬件中断也同时存在相同的告警,
你就不知道了,就要出问题了,如下方示例:
截图202507151540085997.jpg
红框里的为48号硬件中断,
下面是各个任务的虚拟中断,
如果一味的屏蔽告警 L5/L30,48号硬件中断重定义你就不知道了。



回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:486
  • 最近打卡:2025-08-19 22:25:03

5

主题

1192

回帖

4697

积分

荣誉版主

积分
4697
发表于 2025-7-16 22:38:28 | 显示全部楼层
CosyOS-III Cube 新版刚刚发布,实现了已经通过Cube配置或转码的配置文件,
当工程再次升级安装时,不会再此配置或转码(因为二次转码会乱码)
通过Cube配置或转码的配置文件,会有一个显著特征:
截图202507162218182858.jpg
Cube 就是通过查找 <CubeSet> 来判断,该文件是否已经通过Cube自动配置或转码。



对于51来说,当使用新版Cube升级安装时,编译器配置会自动配置为 NOOVERLAY
CosyOS-III for 8051,优先推荐 NOOVERLAY方案此方案易用性较好,而且可靠性最高。

当内存资源紧张时,用户再考虑 OVERLAY方案(虚拟中断 or 手动修改调用树),以节约内存。
当使用 OVERLAY方案时,用户还需查看内存地图,来判断所有函数指针是否使用了内存?
如果用了内存,会存在一定风险,因为C51对函数指针的调用树及覆盖分析有些是错误的,
这也就是为什么C51只有采用 NOOVERLAY方案 才是最可靠的(对于 CosyOS 来说)。


那么CosyOS内核中都哪里会用到函数指针呢?


sv_int_pend_fifo.c 中的所有函数,都是通过函数指针间接调用的,
但它们的调用关系却是正确的,用户不必理会。
截图202507162223325290.jpg
通过内存地图可以看出,OS_PendSV_Handler(PendSV中断)调用了 sPendSV_Handler,
而 sPendSV_Handler 调用了 mPendSV_FIFOHandler,
而 mPendSV_FIFOHandler 调用了 _fifo_0_、_fifo_1_,
而 _fifo_0_、_fifo_1_ 调用了 SV_INT_PEND_FIFO,也就是 中断挂起服务_FIFO - 执行函数。
可见,虽然这些函数都是通过函数指针间接调用的,但它们的调用关系却是正确的,覆盖分析不会有错。


但是,所有定时中断钩子、定时查询钩子、定时查询事件,也都是通过函数指针间接调用的,
它们的调用关系却是错误的(内存地图中 被 ?C_INITSEG 调用),用户需通过内存地图
查看它们是否使用了内存。所以这些钩子的内容要尽量简单一些,以避免用到内存,而且
只有简单了才能高效运行,才符合钩子的意义,因为它们都是在 SysTick中断 中被真实调用的。


再补充一点,通过服务 iPendSVC(fp) 调用的函数,最终是在PendSV中断中通过函数指针间接调用的,
调用关系也是错误的,需格外注意。



- END -





回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:77
  • 最近打卡:2025-08-23 16:01:58
已绑定手机

0

主题

66

回帖

456

积分

中级会员

积分
456
发表于 2025-7-29 08:10:28 | 显示全部楼层
有RTOS加持后的STC单片机,非常强大
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-07-29 17:22:48
已绑定手机

0

主题

1

回帖

14

积分

新手上路

积分
14
发表于 2025-7-29 17:22:48 | 显示全部楼层
Cos*** 发表于 2023-5-6 13:04
关于内存的占用,我现在还不能提供一个准确的数字,一般情况下,8K内存跑十多个任务还是绰绰有余的。然而 ...

我看STC8H8K64U芯片模版,启动文件配置堆栈为“?STACK          SEGMENT   IDATA”是在IDATA中,IDATA最大256字节,可是IDATA空间很小,担心任务嵌套使用多了空间占用太多,楼主可否出优化任务堆栈放到XDATA空间的版本呢?XDATA空间有8K。

点评

你的想法很好,但那是不可能实现的。 51先天的架构就决定了,硬件栈必须在IDATA中,硬件栈的最大SIZE 一定会小于 248 Bytes, 这一点是任何人都无法改变的。 但是任务栈却是可以放在XDATA中,事实上CosyOS的任务栈从  详情 回复 发表于 2025-8-4 01:20
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-08-21 14:50:19
已绑定手机

0

主题

1

回帖

14

积分

新手上路

积分
14
发表于 2025-8-3 21:45:18 来自手机 | 显示全部楼层
为啥我移植到STC8上会卡死?调试的时候发现会卡死在一个标志判断语句上,移植的是最新的CosyOS III

点评

可能会有各种原因,可以先检查一下各任务栈size,可以先大一些避免溢出,最大不可超过255. 而后先使用 NOOVERLAY方案。 再检查 系统配置、MCU配置。  详情 回复 发表于 2025-8-4 00:52
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-08-24 01:36:52

7

主题

16

回帖

218

积分

中级会员

积分
218
发表于 2025-8-3 23:17:05 | 显示全部楼层
大家拿到版本3的stc8h案例之后可以运行吗,为什么我的会报错,是因为这个工程需要二次改写才能使用吗

我的项目会报这个错误
截图202508032316425111.jpg

点评

标准头文件中,屏蔽掉 #include #include 这两个包含, 哪个C文件中需要它们时再单独包含,问题就解决了。  详情 回复 发表于 2025-8-4 01:25
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:486
  • 最近打卡:2025-08-19 22:25:03

5

主题

1192

回帖

4697

积分

荣誉版主

积分
4697
发表于 2025-8-4 00:52:55 | 显示全部楼层
Kevin*** 发表于 2025-8-3 21:45
为啥我移植到STC8上会卡死?调试的时候发现会卡死在一个标志判断语句上,移植的是最新的CosyOS III ...

可能会有各种原因,可以先检查一下各任务栈size,可以先大一些避免溢出,最大不可超过255.
而后先使用 NOOVERLAY方案。
再检查 系统配置、MCU配置。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:486
  • 最近打卡:2025-08-19 22:25:03

5

主题

1192

回帖

4697

积分

荣誉版主

积分
4697
发表于 2025-8-4 01:20:59 | 显示全部楼层
mlkp*** 发表于 2025-7-29 17:22
我看STC8H8K64U芯片模版,启动文件配置堆栈为“?STACK          SEGMENT   IDATA”是在IDATA中,IDATA最 ...

你的想法很好,但那是不可能实现的。
51先天的架构就决定了,硬件栈必须在IDATA中,硬件栈的最大SIZE 一定会小于 248 Bytes,
这一点是任何人都无法改变的。
但是任务栈却是可以放在XDATA中,事实上CosyOS的任务栈从古至今也一直都是在XDATA中。
任务切换时要保护现场、恢复现场。保护现场时,硬件栈中的内容保存至任务栈;恢复现场时,任务栈中的内容再搬回硬件栈。
默认情况下,CosyOS不使用C51的XBP栈,所以,任务栈中仅保存硬件栈中的内容和可能的极少数的用户自定义的任务切换现场保护寄存器,所以,任务栈最大SIZE为255已经足够用了,所以,任务栈SIZE相关数据类型默认被定义为 uint8_t,也就是任务栈SIZE的最大值为255.

CosyOS-III 新版过几日即将推出,届时,如果用户启用了C51的XBPSTACK的任务切换现场保护,任务栈SIZE相关数据类型将被定义为 uint16_t,也就是任务栈SIZE的最大值可为65535.
原因是,当启用了C51的XBPSTACK的任务切换现场保护时,XBP栈就在当前任务的任务栈中,XBP栈顶指针指向了各个任务栈的末尾处,此时,任务栈中保存的除了硬件栈中的内容外,还包括了XBP栈中的内容,所以,任务栈SIZE有必要允许其大于255,以防任务栈中硬件栈的内容与XBP栈的内容相互覆盖。

总结:
CosyOS-III for 8051,如果不启用XBPSTACK的任务切换现场保护,任务栈SIZE最大可为255.
CosyOS-III 新版即将推出,届时如果启用了XBPSTACK的任务切换现场保护,任务栈SIZE最大可为65535.



回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:486
  • 最近打卡:2025-08-19 22:25:03

5

主题

1192

回帖

4697

积分

荣誉版主

积分
4697
发表于 2025-8-4 01:25:20 | 显示全部楼层
13*** 发表于 2025-8-3 23:17
大家拿到版本3的stc8h案例之后可以运行吗,为什么我的会报错,是因为这个工程需要二次改写才能使用吗

我的 ...

标准头文件中,屏蔽掉
#include "stdio.h"
#include "intrins.h"
这两个包含,
哪个C文件中需要它们时再单独包含,问题就解决了。

回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-8-24 04:21 , Processed in 0.143228 second(s), 108 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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