380091044
发表于 2024-2-10 09:37:30
神农鼎 发表于 2024-2-10 09:20
新年好{:handshake:}
tzz1983
发表于 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。
大刀阔斧
发表于 2024-3-19 14:15:45
tzz1983 发表于 2024-3-19 14:05
uCOS-II 版本更新通知:
优化: V1.06 2024/3/19
{:4_250:}
tzz1983
发表于 2024-3-28 10:01:33
V1.06代码存在BUG, 下载链接已更新为V1.07 (出BUG本人表示比较尴尬{:sweat:})
新的项目建议使用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}
tzz1983
发表于 2024-7-6 10:55:45
2024/7/6
迎接STC8051U到手, uC/OS-II @251_Xsmall+Large 版,
对小尺寸edata的型号支持力度加大. 2K edata 多任务轻松运行
OS运行printf页面
新到手的芯片
很久没用过89C52兼容引脚的板子了,找了个老古董,
手工焊下载线{:lol:},
代码直接从STC32G套过来,很顺利,直接能用
简介: 用于 STC MCU 251内核上的 uC/OS-2.93 移植版本.
*支持 xsmall 和 large两种编译模式
*支持 指定OS全局变量存放于 edata 或 xdata. 不受编译模式影响.
*支持 MSP+PSP 模式, 可大量节省edata的使用量.
*支持 不受OS管理的中断选项.
测试:例程已包含并通过了 "计数信号量,消息邮箱,标志集,邮箱队列,互斥信号量,内存管理,软件定时器,
任务上锁/解锁,任务挂起/解挂,获取OS时间,统计任务,堆栈检查,"的简单功能测试.
最新版 uC/OS-II @251_Xsmall+Large 移植 代码请上顶楼下载
2024/7/6
CosyOS
发表于 2024-7-7 15:09:37
tzz1983 发表于 2024-7-6 10:55
2024/7/6
迎接STC8051U到手, uC/OS-II @251_Xsmall+Large 版,
对小尺寸edata的型号支持力度加大. 2K edata ...
你 Large模型 用全局可重入了吗?测试发现问题没有?
tzz1983
发表于 2024-7-7 15:32:05
本帖最后由 tzz1983 于 2024-7-7 19:28 编辑
CosyOS 发表于 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来定义局部变量, 局部只有指针.
13918210822
发表于 2024-7-11 05:40:24
杨为民 发表于 2023-10-30 12:37
(1)你在本贴第15楼对中断嵌套时切换任务的过程和会产生的危害的描述堪称经典。你对中断嵌套保护(有中 ...
中断被高优先级中断嵌入, 应该也是要等待ISV入口处
第一条指令完成后, 下一条指令不是特殊指令再执行一条, 才会被嵌入
如此,应该是ISV入口开始2条指令才有可能被中断嵌入。
13918210822
发表于 2024-7-11 07:42:56
tzz1983 发表于 2023-11-3 11:19
是51内核吧,你做的OS能避开“搬栈”吗? 有没有办法 避开“搬栈”? 这个点我想了好久都没想到办法避开。 ...
我似乎找了51中断一个不用搬栈的方法,就是现场除了断点,保存在中断嵌入层专用xdata_cache(1~4+NMI), 自然 TRAP_DEP和中断ISV也管理了,只放ISR(ISH+IST)给服务例程
代码还在写,我小看了RTOS, 哪怕是最小的功能集合
不过还是很有用的一个努力。。。
任务主动切换现场只有断点
任务被动切换,由核心切换历程保存任务专用现场到task_xdata_cache
这是时候,其实只要切SP而不用搬栈就可
本质上,是一个可靠的中断嵌入计数机制和配套的虚拟寄存器
tzz1983
发表于 2024-7-11 08:17:29
13918210822 发表于 2024-7-11 07:42
我似乎找了51中断一个不用搬栈的方法,就是现场除了断点,保存在中断嵌入层专用xdata_cache(1~4+NMI),...
好的,祝你早日成功,分享给我们学习
页:
1
2
3
4
5
6
7
8
9
[10]
11
12
13