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
查看完整版本: uC/OS-II @Ai8051U 移植版,AI8051U,32G8K64,32G12K128