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

uC/OS-II @Ai8051U 移植版,AI8051U,32G8K64,32G12K128

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:497
  • 最近打卡:2025-04-30 20:48:13
已绑定手机

151

主题

589

回帖

1196

积分

金牌会员

积分
1196
发表于 2024-2-10 09:37:30 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-30 07:46:22

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-3-19 14:05:58 | 显示全部楼层
本帖最后由 tzz1983 于 2024-3-19 14:36 编辑

uCOS-II 版本更新通知:

优化:        V1.06        2024/3/19

优化项: 取消了V1.05版自定义的MSP_STK[],改用 "STARTUP.A51" 中的 ?STACK 替代,从而节省了内存的使用量(约256字节EDATA)
新增项: 新增主堆栈检查函数 OS_MSP_StkChk(), 如使用此功能, 需提前在STARTUP.A51启动文件中清零EDATA区域

EDATA对于STC32G来说,龙为珍贵,新的项目建议使用V1.06版,大概节约了256字节的EDATA。
已经使用V1.05版的老项目也不用着急换,V1.05版没有BUG。

回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:99
  • 最近打卡:2025-04-30 14:12:35

19

主题

217

回帖

1805

积分

版主

STC

积分
1805
发表于 2024-3-19 14:15:45 | 显示全部楼层
tzz1*** 发表于 2024-3-19 14:05
uCOS-II 版本更新通知:

优化:        V1.06        2024/3/19

电话:0513-55012982、18106296593 (微信同)
QQ : 1347154513
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-30 07:46:22

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-3-28 10:01:33 | 显示全部楼层

V1.06代码存在BUG, 下载链接已更新为V1.07 (出BUG本人表示比较尴尬
新的项目建议使用V1.07版,比1.05版大概节约了256字节的EDATA。
已经使用V1.05版的老项目也不用着急换,V1.05版没有BUG。


BUG修复: V1.07        2024/3/28
os_isr_251.c 第509行 宏定义格式错误的使用了#, 没有意识到宏把参数变成了字符串, 自己还不知道
原:     #define _ISR_PUSH_(x)   __asm { PUSH #x}
修改后  #define _ISR_PUSH_00H()   __asm { PUSH #00H}


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-30 07:46:22

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-7-6 10:55:45 | 显示全部楼层
2024/7/6
迎接STC8051U到手, uC/OS-II @251_Xsmall+Large 版,
对小尺寸edata的型号支持力度加大. 2K edata 多任务轻松运行

OS运行printf页面
截图202407061049233001.jpg


新到手的芯片
微信图片_20240706105120.jpg


很久没用过89C52兼容引脚的板子了,找了个老古董,
手工焊下载线
代码直接从STC32G套过来,很顺利,直接能用
微信图片_20240706105133.jpg


简介: 用于 STC MCU 251内核上的 uC/OS-2.93 移植版本.
*支持 xsmalllarge  两种编译模式
*支持 指定OS全局变量存放于 edataxdata. 不受编译模式影响.
*支持 MSP+PSP 模式, 可大量节省edata的使用量.
*支持 不受OS管理的中断选项.

测试:例程已包含并通过了 "计数信号量,消息邮箱,标志集,邮箱队列,互斥信号量,内存管理,软件定时器,
任务上锁/解锁,任务挂起/解挂,获取OS时间,统计任务,堆栈检查,"  的简单功能测试.

最新版 uC/OS-II @251_Xsmall+Large 移植 代码请上顶楼下载

2024/7/6

点评

你 Large模型 用全局可重入了吗?测试发现问题没有?  详情 回复 发表于 2024-7-7 15:09
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:432
  • 最近打卡:2025-05-01 16:19:56

5

主题

1127

回帖

4263

积分

荣誉版主

积分
4263
发表于 2024-7-7 15:09:37 | 显示全部楼层
tzz1*** 发表于 2024-7-6 10:55
2024/7/6
迎接STC8051U到手, uC/OS-II @251_Xsmall+Large 版,
对小尺寸edata的型号支持力度加大. 2K edata ...

你 Large模型 用全局可重入了吗?测试发现问题没有?

点评

全部都是用全局重入, 暂时没有发现问题, 连续运行了几天, 另外加大负荷, 把MSC例程加进去一并测试, 也通过. 你和我 遇到的问题应该是编译器对指针的处理上有瑕,同样的代码, 不同的结果, 很难找出问题 ,像大海捞针  详情 回复 发表于 2024-7-7 15:32
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-30 07:46:22

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-7-7 15:32:05 | 显示全部楼层
本帖最后由 tzz1983 于 2024-7-7 19:28 编辑
Cos*** 发表于 2024-7-7 15:09
你 Large模型 用全局可重入了吗?测试发现问题没有?

全部都是用全局重入, 比较省事一点.

暂时没有发现问题, 连续运行了几天, 另外加大负荷, 把MSC例程加进去一并测试, 也通过.

之前遇到的问题应该是编译器对指针的处理上有瑕,同样的代码, 不同的结果, 很难找出问题 ,像大海捞针一样的.

我现在是强制OS的结构体和指针用2字节指针, 这样它想错也没有第三字节给他玩, 暂时没有问题, 和51核和做法差不多. 如下代码:

#if OS_USE_XDATA
#define OsMemType xdata
#else
#define OsMemType edata
#endif


typedef struct os_tcb {
    ......//省略
}OsMemType OS_TCB;


这样以后, 用 OS_TCB 定义的指针是两字节指针,  
用 OS_TCB 定义的全局变量会存在 OsMemType 指定的内存类型

这样做有一个缺点 , OS_TCB  如果定义局部变量, 可能实际存储类型与 OsMemType 并不一至,
所幸的是, UCOS从来都没有用 OS_TCB  来定义局部变量, 局部只有指针.











回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-03-10 16:08:45

6

主题

131

回帖

666

积分

高级会员

积分
666
发表于 2024-7-11 05:40:24 | 显示全部楼层
杨*** 发表于 2023-10-30 12:37
(1)你在本贴第15楼对中断嵌套时切换任务的过程和会产生的危害的描述堪称经典。你对中断嵌套保护(有中 ...

中断被高优先级中断嵌入, 应该也是要等待ISV入口处

第一条指令完成后, 下一条指令不是特殊指令再执行一条, 才会被嵌入


如此,应该是ISV入口开始2条指令才有可能被中断嵌入。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-03-10 16:08:45

6

主题

131

回帖

666

积分

高级会员

积分
666
发表于 2024-7-11 07:42:56 | 显示全部楼层
tzz1*** 发表于 2023-11-3 11:19
是51内核吧,你做的OS能避开“搬栈”吗? 有没有办法 避开“搬栈”? 这个点我想了好久都没想到办法避开。 ...

我似乎找了51中断一个不用搬栈的方法,就是现场除了断点,保存在中断嵌入层专用xdata_cache(1~4+NMI), 自然 TRAP_DEP和中断ISV也管理了,只放ISR(ISH+IST)给服务例程

代码还在写,我小看了RTOS, 哪怕是最小的功能集合
不过还是很有用的一个努力。。。

任务主动切换现场只有断点
任务被动切换,由核心切换历程保存任务专用现场到task_xdata_cache

这是时候,其实只要切SP而不用搬栈就可

本质上,是一个可靠的中断嵌入计数机制和配套的虚拟寄存器

点评

好的,祝你早日成功,分享给我们学习  详情 回复 发表于 2024-7-11 08:17
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-30 07:46:22

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-7-11 08:17:29 | 显示全部楼层
139182*** 发表于 2024-7-11 07:42
我似乎找了51中断一个不用搬栈的方法,就是现场除了断点,保存在中断嵌入层专用xdata_cache(1~4+NMI),  ...

好的,祝你早日成功,分享给我们学习
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 06:41 , Processed in 0.185249 second(s), 125 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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