- 打卡等级:以坛为家II
- 打卡总天数:435
- 最近打卡:2025-05-04 20:54:20
荣誉版主
- 积分
- 4275
|
发表于 2024-7-8 17:41:09
|
显示全部楼层
本帖最后由 CosyOS 于 2024-7-8 17:47 编辑
CosyOS-II 最新版 V3.0.1 发布 !
新版特性:
一、修复了 C51 下,对 XBPSTACK 支持的BUG。
在 C51 下,CosyOS-II 仅支持 XBPSTACK,不支持 IBPSTACK 和 PBPSTACK,
各任务的任务栈 即为 各任务的XBP栈,任务栈数据初始化时,其XBP栈顶指针 指向 任务栈顶 +1。
用户可在 mcucfg_8051.h 中,配置 是否启用 ?C_XBP 的任务切换现场保护,默认为不启用。
需注意,XBP栈的应用,会存在关闭总中断EA的情况,但时间都是极短的、确定的。
CosyOS-II 仅在 任务切换 - 恢复 ?C_XBP 时,存在关EA行为:
IF MCUCFG_XBPSTACK == __ENABLED__ ; RESTORE ?C_XBP
MOVX A, @DPTR
MOV R0, A
INC DPTR
MOVX A, @DPTR
JBC EA, __EA
MOV ?C_XBP, R0
MOV ?C_XBP+1, A
SJMP RETURN
__EA: MOV ?C_XBP, R0
MOV ?C_XBP+1, A
SETB EA
ENDIF
C51编译器 在对 ?C_XBP 的相关处理中,也存在关EA行为。
使用 XBP栈 时,各任务栈要有更充分的预留,以防 任务栈数据 与 XBP栈数据 相互覆盖,
CosyOS 无法对 XBP栈 进行有效监控,就靠用户自己了。
二、增加了 用户自定义任务切换现场保护,对 自定义数组/任务栈 中,寄存器数据的初始化。
详见,MCU配置头文件。
三、新增 51、251 启动文件,并重命名为 startup_8051.s、startup_80251.s,
以替换 Keil 自带的启动文件,在组 Port 中。
startup_8051.s:基于 STARTUP.A51 而修改,摒弃了一些不常用的或用不到的功能,
并添加更为丰富的中文注释。
startup_80251.s:基于 START251.A51 而修改,摒弃了一些不常用的或用不到的功能,
重写了 内存清零 的代码,内存清零速度 较 START251.A51,可提升 3~4 倍。
251的PSP模式,主栈被划分到edata最后512,使edata内存增加了STACKSIZE(默认值256):
RSEG ?STACK
IF MCUCFG_TASKSTACK_MODE == __MSP__
DS STACKSIZE
ELSE
DS 1
ENDIF
IF MCUCFG_TASKSTACK_MODE == __MSP__
MOV DR60, #WORD0 (?STACK-1)
ELSE
MOV DR60, #EDATALEN-512-1
ENDIF
251搬栈,分为两种模式,节约flash 和 卓越性能,在 mcucfg_80251.h 中配置。
卓越性能 比 节约flash,代码大了 大概 200 多一点,同时搬栈可减少 28~40 左右个周期。
四、251任务切换现场保护,调整为 PUSH DR56(原为 PUSH DPH/DPL)。
五、251 内存方案一~五,全面支持全局可重入,不必 NOOVERLAY。
六、其它调整及优化。
工程模板和测试程序,稍后在顶楼更新。
|
|