找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 69|回复: 3
打印 上一主题 下一主题

【开源】RaysRTOS(光芒实时系统),全抢占式优先级调度,我写了51,AVR,STM8三个版本,欢

[复制链接]

193

主题

569

帖子

1397

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1397
跳转到指定楼层
1#
发表于 2016-7-2 14:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您!

您需要 登录 才可以下载或查看,没有帐号?注册

x
RaySRTOS0.3版本 支持三种平台:51  AVR  STM84 v# N4 x) @1 _( I
较以前版本将RaySRTOS主文件和不同CPU平台文件分开,形成了以下目录:
& a% R% S9 v; G. Z( h6 eRaySRTOS(总体文件夹)
% }2 Q- W3 s" ^' A                    |Kernel(文件夹)|RaySRTOS.c 系统平台无关主文件
5 E8 A. L  }/ F: {' Q/ K                    |                |RaySRTOS.h 系统平台无关头文件
  b2 q& T' b. h- r, L* @9 S                    |
  k3 @5 i# D: o                    |CPU(文件夹)  |8051_KEIL(文件夹)|CPU.c          特定平台CPU相关c文件- U( E8 X; k8 o' R3 x. T( z+ L7 J
                    |                |                |CPU_ASM.asm    特定平台调度代码
8 B& N" G. g5 D; L3 @                    |                |                |CPU_CFG.h      特定平台数据定义以及系统配置% ?2 F& V, N5 z& Q# s! ~" I( t1 Y
                    |                |5 c4 ~1 G- D) A' o. Z; m: I
                    |                |AVR_GCC(文件夹)  |......: ~/ V2 V  ^* D& y% I) R
                    |6 ^: q& T) a* w$ Z- Q' J" |
                    |
: C  y5 h4 z2 X: }7 P4 v6 Q                    |; F8 p! U3 n- {' U
                    |DEMO(文件夹)    |各种平台演示代码工程
! }& Z, Y* f3 I# w5 J& d
# j5 s& q* S2 H. p5 Z) C该实时操作系统具备以下几个优点:7 q5 `. Q. f2 n. Y

  k, K: o5 C) y; f- ~( J" C1:全抢占式优先级调度
6 E, d0 X- v7 M+ V) ^* N2:小型化,适用于单片机* r4 N) `& B% B* g" h1 r) y. W

: ~/ l1 g2 c) B0 |; \8 |
9 c' ^& V6 a& a1 V. Z% F
+ ~# W( X5 M4 n) B
- ?: x$ E: ]( \1 a! ]- v9 M4 t5 Y51版本  2 Q9 x" U& m4 @0 j2 Q
keil4编译版本,89c52单片机运行,仿真proteus7.5sp3  ' n  o5 Q" D* G. h: l6 h
由于是优先级抢占式调度,建立了两个任务,占用ram稍微较大,flash占用还可以,占用情况如下:  2 @( ^7 |+ q. n
Program Size: data=92.0 xdata=0 code=950  
0 E8 `* _; c9 t+ `( r下面是系统函数声明  ; \; d9 Z5 p9 U7 v
/*--------------------------------------------------------------------------------------+  
' L- q/ U* i% ?5 ]1 q+ c) k|系统函数声明    |  
- h1 R. b( S) H1 M6 L+---------------------------------------------------------------------------------------*/  1 o& L5 D  K* O" N4 l
void RAYS_TaskCreate(void (*Task)(void),INT8U *Stack,INT8U t_Prio);//创建任务  / @% u; ?# h- w$ P' |8 ^& w
void RAYS_Start(void); //系统启动函数  5 H) f! F, ~& V7 R- D, M
void RAYS_TaskResume(INT8U prio);  //任务恢复函数  0 D/ U/ j; D7 I7 G# g% n
void RAYS_TaskSuspend(INT8U prio); //任务挂起函数  $ N* S/ n0 I, ?7 \, ~0 n
void OSSched(void); //汇编调度函数  & H2 D4 r3 z3 G7 ~! D2 v, C3 p
void RAYS_TimeDelay(INT16U ticks);  //任务延时函数  0 J7 |0 D, u' Z4 T) H9 `6 P
void Idle_Task(void);  0 Z- j$ {/ h0 Q# O: l
void RAYS_Init(void); //系统初始化  3 d! P4 F6 O" u) C: s( K
void TickIntHook(void);  //系统节拍钩子函数 3 T6 E# e9 l& v: Q! e1 o+ z, v
2 Z1 t5 y  ]; _- c+ s2 N
6 f1 h# u) b1 u$ D0 M

' w. w9 C* f7 javr版本  
0 A, M& v) Y4 R用winavr20060421编译,ide选择的是avr studio,也可以用winavr编译,仿真同样是proteus7.5sp3,调度在16兆只用10us(avrstudio软测) $ c9 s) L+ a1 \  N
单片机型号分别测试了mega128 和mega8和mega88,都可以运行,但程序如果大于64k的话调度部分pc需要改动一下  * t* e' ^6 D' J
由于是优先级抢占式调度,建立了3个任务,占用情况如下:  
% [9 A, a7 w' S5 U" k! g# P# P
% S+ Y6 K* P& |  E! G& I: l( uProgram:    1178 bytes  % A" ^* W* T, p6 s' a
(.text + .data + .bootloader)  
- t9 q: o: n0 ^( E* \+ p% v
% h( C( y" D$ T* G+ u% }# [Data:        225 bytes  : l8 X5 Q9 |: u( F" i( l2 [6 R
(.data + .bss + .noinit)  - T# t/ S% ?; i/ |& Y
默认优先级0s  6 M; A+ m1 l) d$ S7 J
/*--------------------------------------------------------------------------------------+  . ^; a* s# V: r: X1 H* ^
|系统函数声明    |  
% [1 Q0 C/ Y8 k3 A# ~) S7 j* h3 B/ R+---------------------------------------------------------------------------------------*/  
. }8 @) e# n2 N; g# s2 ~& Jvoid RAYS_TaskCreate(void (*Task)(void),INT8U *Stack,INT8U t_Prio);//创建任务  
) q+ l1 k( X# z* S! A- E+ s0 lvoid RAYS_Start(void); //系统启动函数  * G, y! P. V4 x0 }" t( f
void RAYS_TaskResume(INT8U prio);  //任务恢复函数  
( J5 t6 L) t7 Fvoid RAYS_TaskSuspend(INT8U prio); //任务挂起函数  ( b! a/ ]& d1 z/ b; i/ v
void OSSched(void); //汇编调度函数  3 l$ U- H- z/ }/ n
void RAYS_TimeDelay(INT16U ticks);  //任务延时函数  ( P  x; E# m  F& U6 L& s- \
void Idle_Task(void);  2 o" r; _1 k" o3 D
void RAYS_Init(void); //系统初始化  
0 V* A6 i1 D+ ovoid TickIntHook(void);  //系统节拍钩子函数  0 D' v; a  C8 H2 r3 n
" }) o' U0 L$ b$ m" J3 F' f( F3 Z

3 a* c1 R! \3 X' Y% x, F! W最后来stm8s105c6版本,本人手上只有这个小小的discovery板子,100块买的,所以先拿它做的测试,很稳定!  9 e6 x- C7 @3 g! A. x" T
编译器选择的是IAR,因为它里边支持c语言是用的模拟寄存器!!!!stvd好像用的是堆栈,导致在stvd上做系统几乎不可能  ; f# U# h. B9 }( O
stm8工程,是stm8s105c6版本,仿真是硬件仿真,因为proteus不支持stm8STM8IAR.rar)  5 \( w/ V; r4 `) ?8 j; g3 S

/ f3 C; g4 a2 x- f: x' ~flash和ram占用情况如下:  / @+ X* V* H5 w6 V4 ~6 _8 P
  941 bytes of readonly  code memory  
" o  k  F& Q" H! l2 ~/ Z1 @5 S  132 bytes of readonly  data memory  
' a& T' l$ D1 Z: ~% o  499 bytes of readwrite data memory  
) U# x: G' l4 E2 z) w我感觉ram占用有点大,后来我编写了个什么都没有的main函数,ram占用是272B,所以本系统ram占用应该是499-272=227B  
6 `7 Y; Q: _- g. v优化级别选则balance.  / l" X9 s6 b# u  q
/*--------------------------------------------------------------------------------------+  
, s2 f3 G$ p, |, o( w9 A; ?|系统函数声明    |  
" ]7 F4 g8 x8 y6 t9 ^" f+ X+---------------------------------------------------------------------------------------*/  
5 w; [# L0 w+ S1 avoid RAYS_TaskCreate(void (*Task)(void),INT8U *Stack,INT8U t_Prio);//创建任务  
- Z: m& t+ e1 s9 G) k1 i/ M& Uvoid RAYS_Start(void); //系统启动函数  
& D* J8 y, ]( f8 l) `: B* D8 Z+ svoid RAYS_TaskResume(INT8U prio);  //任务恢复函数  ; S. f6 P% y. K* O3 l
void RAYS_TaskSuspend(INT8U prio); //任务挂起函数  + j0 e2 Y* L; u5 ]) k
void OSSched(void); //汇编调度函数  7 n$ ?( x7 v) M; d) U- s/ \' Q, U
void RAYS_TimeDelay(INT16U ticks);  //任务延时函数  % w9 K( q/ c4 w% _8 o
void Idle_Task(void);  
0 k: ?. K* v! ivoid RAYS_Init(void); //系统初始化  
) Y9 \. q; g1 b# A. }1 xvoid TickIntHook(void);  //系统节拍钩子函数  + U) A+ T* ^$ F& D8 F: i

! u3 A% U. u4 F  
$ R% k2 V# \3 }2 h! t; r欢迎大家测试,我是新手,难免有很多bug,三种版本90%代码都一样,与cpu最相关的RaysRTOS_ASM文件差异较大,不过格式也一样.  
1 x; p1 v- p: v3 V我的qq 771992497 大家多多测试,有问题及时反馈

RaySRTOS0.3版本.rar

139.82 KB, 下载次数: 1, 下载积分: 威望 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

155

主题

662

帖子

1191

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1191
2#
发表于 2016-7-4 14:24 | 只看该作者
谢谢楼主,一步步来,学习中……9 P3 J( \6 o/ g" ]( H$ o& b1 q3 n! a

156

主题

543

帖子

1180

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1180
3#
发表于 2016-7-4 15:22 | 只看该作者
好资料哈,童鞋们有福咯!
6 r' s+ i1 R7 ^6 N

154

主题

485

帖子

1156

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1156
4#
发表于 2016-7-4 15:55 | 只看该作者
感谢楼主分享!!!' g* {  ^. x+ w  R
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2024-11-15 19:37 , Processed in 0.069361 second(s), 35 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表