找回密码
 注册会员
搜索附件  
MCU资讯论坛 附件中心 单片机论坛 51单片机论坛 RaySRTOS0.3版本.rar

RaySRTOS0.3版本.rar

 

【开源】RaysRTOS(光芒实时系统),全抢占式优先级调度,我写了51,:

RaySRTOS0.3版本 支持三种平台:51 AVR STM8
较以前版本将RaySRTOS主文件和不同CPU平台文件分开,形成了以下目录:
RaySRTOS(总体文件夹)
|Kernel(文件夹)|RaySRTOS.c 系统平台无关主文件
| |RaySRTOS.h 系统平台无关头文件
|
|CPU(文件夹) |8051_KEIL(文件夹)|CPU.c 特定平台CPU相关c文件
| | |CPU_ASM.asm 特定平台调度代码
| | |CPU_CFG.h 特定平台数据定义以及系统配置
| |
| |AVR_GCC(文件夹) |......
|
|
|
|DEMO(文件夹) |各种平台演示代码工程

该实时操作系统具备以下几个优点:

1:全抢占式优先级调度
2:小型化,适用于单片机

51版本
keil4编译版本,89c52单片机运行,仿真proteus7.5sp3
由于是优先级抢占式调度,建立了两个任务,占用ram稍微较大,flash占用还可以,占用情况如下:
Program Size: data=92.0 xdata=0 code=950
下面是系统函数声明
/*--------------------------------------------------------------------------------------+
|系统函数声明 |
+---------------------------------------------------------------------------------------*/
void RAYS_TaskCreate(void (*Task)(void),INT8U *Stack,INT8U t_Prio);//创建任务
void RAYS_Start(void); //系统启动函数
void RAYS_TaskResume(INT8U prio); //任务恢复函数
void RAYS_TaskSuspend(INT8U prio); //任务挂起函数
void OSSched(void); //汇编调度函数
void RAYS_TimeDelay(INT16U ticks); //任务延时函数
void Idle_Task(void);
void RAYS_Init(void); //系统初始化
void TickIntHook(void); //系统节拍钩子函数



avr版本
用winavr20060421编译,ide选择的是avr studio,也可以用winavr编译,仿真同样是proteus7.5sp3,调度在16兆只用10us(avrstudio软测)
单片机型号分别测试了mega128 和mega8和mega88,都可以运行,但程序如果大于64k的话调度部分pc需要改动一下
由于是优先级抢占式调度,建立了3个任务,占用情况如下:

Program: 1178 bytes
(.text + .data + .bootloader)

Data: 225 bytes
(.data + .bss + .noinit)
默认优先级0s
/*--------------------------------------------------------------------------------------+
|系统函数声明 |
+---------------------------------------------------------------------------------------*/
void RAYS_TaskCreate(void (*Task)(void),INT8U *Stack,INT8U t_Prio);//创建任务
void RAYS_Start(void); //系统启动函数
void RAYS_TaskResume(INT8U prio); //任务恢复函数
void RAYS_TaskSuspend(INT8U prio); //任务挂起函数
void OSSched(void); //汇编调度函数
void RAYS_TimeDelay(INT16U ticks); //任务延时函数
void Idle_Task(void);
void RAYS_Init(void); //系统初始化
void TickIntHook(void); //系统节拍钩子函数


最后来stm8s105c6版本,本人手上只有这个小小的discovery板子,100块买的,所以先拿它做的测试,很稳定!

编译器选择的是IAR,因为它里边支持c语言是用的模拟寄存器!!!!stvd好像用的是堆栈,导致在stvd上做系统几乎不可能
stm8工程,是stm8s105c6版本,仿真是硬件仿真,因为proteus不支持stm8STM8IAR.rar)

flash和ram占用情况如下:
941 bytes of readonly code memory
132 bytes of readonly data memory
499 bytes of readwrite data memory
我感觉ram占用有点大,后来我编写了个什么都没有的main函数,ram占用是272B,所以本系统ram占用应该是499-272=227B
优化级别选则balance.
/*--------------------------------------------------------------------------------------+
|系统函数声明 |
+---------------------------------------------------------------------------------------*/
void RAYS_TaskCreate(void (*Task)(void),INT8U *Stack,INT8U t_Prio);//创建任务
void RAYS_Start(void); //系统启动函数
void RAYS_TaskResume(INT8U prio); //任务恢复函数
void RAYS_TaskSuspend(INT8U prio); //任务挂起函数
void OSSched(void); //汇编调度函数
void RAYS_TimeDelay(INT16U ticks); //任务延时函数
void Idle_Task(void);
void RAYS_Init(void); //系统初始化
void TickIntHook(void); //系统节拍钩子函数


欢迎大家测试,我是新手,难免有很多bug,三种版本90%代码都一样,与cpu最相关的RaysRTOS_ASM文件差异较大,不过格式也一样.
我的qq 771992497 大家多多测试,有问题及时反馈

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-24 21:25 , Processed in 0.035779 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

返回顶部