感谢Lisuwei《简易多任务OS设计》一文,我也写出了我的RaysRTOS(光芒实时系统),全抢
首先上51版本keil3编译版本,89c52单片机运行,仿真proteus7.5sp3 点击此处下载 ourdev_567612UF5VUQ.rar(文件大小:59K) (原文件名:RaysRTOS-89C52keil.rar)
由于是优先级抢占式调度,建立了两个任务,占用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选择的是Eclipse,也可以用winavr编译,仿真同样是proteus7.5sp3,调度在16兆只用10us(avrstudio软测)
avr-gcc编译器,Eclipse环境ourdev_567624QETN34.rar(文件大小:47K) (原文件名:RaysRTOS-Eclipse.rar)
avrstudio环境ourdev_567625AL5P0E.rar(文件大小:35K) (原文件名:RaysRTOS-avrstudioMega88.rar)
单片机型号分别测试了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块买的,所以先拿它做的测试,很稳定!
http://cache.amobbs.com/bbs_upload782111/files_30/ourdev_567627NGBB8L.jpg
(原文件名:ourdev_567250APXFN6.jpg)
编译器选择的是IAR,因为它里边支持c语言是用的模拟寄存器!!!!stvd好像用的是堆栈,导致在stvd上做系统几乎不可能
stm8工程,是stm8s105c6版本,仿真是硬件仿真,因为proteus不支持stm8: 点击此处下载 ourdev_567629MGG77S.rar(文件大小:44K) (原文件名:RaysRTOS-STM8IAR.rar)
flash和ram占用情况如下:
941 bytes of readonlycode memory
132 bytes of readonlydata 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
最后还想来个版本,就是lisuwei的那个版本的修改版,2440平台,因为它的那个版本没有初始化mmu,所以导致只能在nor里运行,这个修改版是在ram或者nand里边运行的,和正常的2440_test什么的程序一样,通过boot下载到nand 0x000地址或者ram的0x30000000地址都可以运行!!!
考虑到开发2440习惯,有人熟悉ads,有人喜欢keil4,所以我修改成了两个版本,都可以跑,希望大家测试
ads1.2版本工程ourdev_567630TCEFTQ.rar(文件大小:51K) (原文件名:2440os.rar)
keil4版本工程ourdev_567631AQ74MT.rar(文件大小:324K) (原文件名:2440os-rvmdk.rar)
最后再感谢lisuwei把我带入rtos大门,还要感谢上官兄,没他的代码参考我弄不出stm8汇编来。 hao.... 沙发,顶 希望测试的都回个帖,有其他热门的单片机也推荐一下,我做做移植
现阶段先做内核,内核稳定后再做任务间通信。
其实我做了几个课题都没怎么用信号量,消息队列啦,大都是任务间一个触发信号。 mark 简易多任务OS设计ourdev_567676O5L8Z6.pdf(文件大小:374K) (原文件名:简易多任务OS设计.pdf) 强 回复【楼主位】avr-arm 光芒
-----------------------------------------------------------------------
dddddddddddddddddddddddddddddddddddddddd mark! 厉害学习了!!! 记号~~ 哇,越来越多的OS了! mark mark mark 不错,帮顶 thank you very much. mark 自己顶! mark Mark! MARK 真不会这个,帮顶 不错,好好的学习!!!!!!!!! good!学习学习 顶一个 学习了~~~~~~~ mark 学习 学习! mark 再接再厉
./emotion/em093.gif
这两天正为USB头疼,初步方案是stm32,后来改为stm8+ch375,过后再慢慢道来原因 简易多任务OS设计
相当不错@ 学习下 很好! 写OS的DX,俺都很佩服,膜拜一下! 学习下 mark学习 好东西!顶一下! mark学习一下 mark mark 记号一下 Mark 很厉害啊! 谢谢。 GOOD mark! 支持 回复【3楼】avr-arm光芒电子
希望测试的都回个帖,有其他热门的单片机也推荐一下,我做做移植
现阶段先做内核,内核稳定后再做任务间通信。
其实我做了几个课题都没怎么用信号量,消息队列啦,大都是任务间一个触发信号。
-----------------------------------------------------------------------
谢谢分享!楼主可以考虑移植到新唐M051上,这个应该会比较热的了 记号! 先做个记号 谢谢这个以后用的上 mark mark MARK 好东西啊 支持楼主 回复【楼主位】avr-arm 光芒电子
-----------------------------------------------------------------------
非常感谢,好好学习下,操作系统 thx....... mark 小弟最近忙于开发板设计与加工、包装等各方面打理,又天天上班,时间好紧
为了让系统再模块话一点,我抽功夫将源码动动手术,将三种平台分别写成CPU核心代码+公共C源码形式
现在变成了一下文件目录,取了个拙名0.3版本
RaySRTOS(总体文件夹)
|Kernel(文件夹)|RaySRTOS.c 系统平台无关主文件
| |RaySRTOS.h 系统平台无关头文件
|
|CPU(文件夹) |8051_KEIL(文件夹)|CPU.c 特定平台CPU相关c文件
| | |CPU_ASM.asm 特定平台调度代码
| | |CPU_CFG.h 特定平台数据定义以及系统配置
| |
| |AVR_GCC(文件夹)|......
|
|
|
|DEMO(文件夹) |各种平台演示代码工程
好了,上传完毕
0.3版本RaySRTOSourdev_615786FZ5OP7.rar(文件大小:143K) (原文件名:RaySRTOS0.3版本.rar) 我也想学习系统 不错 学习学习 mark mark mark mark mark 学习 wo。。。。。牛 但不知道怎么用啊。。不知道适不适合平时用 标记!!!!! 学习下 mark MARK 不错!正在学习OS 有时间学习下。 这个一定顶! 学习 标记一下 不太懂...有时间再学习下....顶 mark mark mark mark mark!好东西 MARK 好东西要顶... mark 标记 mark mark MARK mark!! Mark Mark mark== mark 真好,有能耐的青年 eeee mark
页:
[1]
2