找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 73|回复: 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  STM80 j  d1 r( ~1 w, }+ E5 \8 N
较以前版本将RaySRTOS主文件和不同CPU平台文件分开,形成了以下目录:2 N" C) C' }( z; ?' l. O
RaySRTOS(总体文件夹)
* X: c0 W  G; ^  ^  C& [" P5 S( f                    |Kernel(文件夹)|RaySRTOS.c 系统平台无关主文件. s2 C9 u: y) T. u+ M" t
                    |                |RaySRTOS.h 系统平台无关头文件
9 b) ^8 S6 B7 y, Q7 H% {- L0 Z                    |
) p: K! h9 `, g  {! M: `/ X                    |CPU(文件夹)  |8051_KEIL(文件夹)|CPU.c          特定平台CPU相关c文件
3 D4 e, z  l6 f9 u8 J4 O5 I                    |                |                |CPU_ASM.asm    特定平台调度代码
* Y( H$ p2 u- o! R                    |                |                |CPU_CFG.h      特定平台数据定义以及系统配置
1 S. w/ H. ?3 \) H                    |                |
5 ^' A) \5 C+ j5 I: f, d! R4 j                    |                |AVR_GCC(文件夹)  |......
! G0 \" M. j& W6 O+ a1 ^                    |# \  V# |+ ^/ N& h
                    |- q5 c( m4 c( M( t# v& ~
                    |
3 j8 L) e1 [2 Q$ A0 C+ f- h                    |DEMO(文件夹)    |各种平台演示代码工程
- z! g* _$ a3 K' g5 N
4 O5 \7 A2 n3 c! T$ j该实时操作系统具备以下几个优点:
) }8 H& k! A. `* F6 \6 H2 b" i3 S  O% @4 F5 ~5 c/ M3 a- u
1:全抢占式优先级调度
9 W* G' A9 q5 I7 g0 C+ u' k5 I# O2:小型化,适用于单片机
% P; g1 S$ u6 E9 H) s* y
8 Q0 k& F  x$ R8 \  C0 @0 {* r8 x. J7 |# Z/ N& i4 k; u& v; T

% D1 f: v5 t8 G/ m) o; w+ k" ?' Z& U( w1 F$ E" Y1 {, ]% L! G
51版本  
% I$ `; D% c! T( U7 @! c, \% Rkeil4编译版本,89c52单片机运行,仿真proteus7.5sp3  1 D2 T, m) d; Z" T! d
由于是优先级抢占式调度,建立了两个任务,占用ram稍微较大,flash占用还可以,占用情况如下:  6 c/ j! Z$ l1 l  M) E+ Y! W  ?
Program Size: data=92.0 xdata=0 code=950  : r( W* Q! c6 g5 J6 c
下面是系统函数声明  
# W/ s9 g6 s- [% y/*--------------------------------------------------------------------------------------+  
9 M8 f4 P/ E0 o- X: {4 u|系统函数声明    |  * o. s, O: J9 e+ t6 f, A- a
+---------------------------------------------------------------------------------------*/  7 S3 t* D% e+ b- N3 T1 W
void RAYS_TaskCreate(void (*Task)(void),INT8U *Stack,INT8U t_Prio);//创建任务  $ _& C  ~+ n4 L6 E. y" E+ |4 c
void RAYS_Start(void); //系统启动函数  ; u9 V& ^9 z0 D" c1 a  R
void RAYS_TaskResume(INT8U prio);  //任务恢复函数  & w2 z  v) f- c7 k) }
void RAYS_TaskSuspend(INT8U prio); //任务挂起函数  
' g0 y. d* L; s; x" [- G; ^void OSSched(void); //汇编调度函数  # R! ?: V* H- \4 v8 i- H
void RAYS_TimeDelay(INT16U ticks);  //任务延时函数  
% C# S/ {3 E  u) \4 Bvoid Idle_Task(void);  
6 h8 G) |5 F% Q4 Jvoid RAYS_Init(void); //系统初始化  5 h( M4 t1 F  |9 y
void TickIntHook(void);  //系统节拍钩子函数 / b6 s# q/ ^# B- h& V' Z6 W& g& H
! D$ F- ?3 k' F2 ~6 }- g: E9 G

" v( k* R/ M! e: w
0 L0 W; r& m3 I! ~( J3 W" ~( ]avr版本  : p, T. R; W0 |. Y9 g" w
用winavr20060421编译,ide选择的是avr studio,也可以用winavr编译,仿真同样是proteus7.5sp3,调度在16兆只用10us(avrstudio软测)
) H) O8 _( p8 |单片机型号分别测试了mega128 和mega8和mega88,都可以运行,但程序如果大于64k的话调度部分pc需要改动一下  8 V( y  D# n: V8 m! B. P; A
由于是优先级抢占式调度,建立了3个任务,占用情况如下:  
. j/ _0 S1 Y9 Y& Z, B1 {$ E' n
  b* t( E2 I3 }  Q) X) gProgram:    1178 bytes  
% \: X  X* |/ {: Z7 g* Q4 [% K(.text + .data + .bootloader)  * C5 G6 u" I4 ?) w% o

4 t7 }: P3 e1 tData:        225 bytes  ( G* z5 C( W2 d
(.data + .bss + .noinit)  
" y6 z! z0 r6 d8 D6 R! c默认优先级0s  
" Q: s! X: @$ s% K5 N/*--------------------------------------------------------------------------------------+  
) K4 M0 z1 C" ~- v- F|系统函数声明    |  ! o( f/ p- ?$ m. k
+---------------------------------------------------------------------------------------*/  : J$ V  b, ]9 P+ w
void RAYS_TaskCreate(void (*Task)(void),INT8U *Stack,INT8U t_Prio);//创建任务  . s- H) v5 W. Q9 h4 H& U/ v
void RAYS_Start(void); //系统启动函数  * f: v4 _6 q5 u- c# w1 J8 j) ^
void RAYS_TaskResume(INT8U prio);  //任务恢复函数  , p( e* P0 t% L7 N. D; @2 D
void RAYS_TaskSuspend(INT8U prio); //任务挂起函数  
# o8 U, e! F, \! qvoid OSSched(void); //汇编调度函数  ( Z- ?8 a0 Z) e; F  ~
void RAYS_TimeDelay(INT16U ticks);  //任务延时函数  
$ f- ?1 G; E9 I. ?. O7 |: ^void Idle_Task(void);  + N' L+ d, O" h
void RAYS_Init(void); //系统初始化  
1 ~  D; Z" g+ w$ D: @, f0 n$ ^void TickIntHook(void);  //系统节拍钩子函数  ( t  K' r6 [6 }5 ^# r, o7 J

, D7 J' y( g1 z, t1 |. `! a! ^8 K; Y; i; J
最后来stm8s105c6版本,本人手上只有这个小小的discovery板子,100块买的,所以先拿它做的测试,很稳定!  
( V) K" ]4 c& x0 {4 v编译器选择的是IAR,因为它里边支持c语言是用的模拟寄存器!!!!stvd好像用的是堆栈,导致在stvd上做系统几乎不可能  ; v9 Z, g1 q2 [/ b
stm8工程,是stm8s105c6版本,仿真是硬件仿真,因为proteus不支持stm8STM8IAR.rar)  4 g" {8 q0 o+ V" O1 r2 W
; q0 C, P) h+ {) v2 H9 q# N
flash和ram占用情况如下:  
2 j4 u3 V% v0 P. J; Q/ g* e- R  941 bytes of readonly  code memory  
; m! B4 P( R  Z* ?, ~% u1 D  132 bytes of readonly  data memory  8 L7 E  B4 Y& Q
  499 bytes of readwrite data memory  
( m4 o  M9 U5 a  G6 [我感觉ram占用有点大,后来我编写了个什么都没有的main函数,ram占用是272B,所以本系统ram占用应该是499-272=227B  
, s' }! T$ j4 d9 S* Z优化级别选则balance.  
* n4 G& @# a# f/*--------------------------------------------------------------------------------------+  
8 Z9 G( w+ `# f1 w2 E2 y: P|系统函数声明    |  : C4 Q1 J' F+ ~8 D) N0 U; K5 G
+---------------------------------------------------------------------------------------*/  " C) f9 T1 M% x0 w/ h) k! L
void RAYS_TaskCreate(void (*Task)(void),INT8U *Stack,INT8U t_Prio);//创建任务  3 [# j4 P- m# P) a" \
void RAYS_Start(void); //系统启动函数  & H9 V: c3 c' W( C1 M7 [
void RAYS_TaskResume(INT8U prio);  //任务恢复函数  + Z$ i( s5 G) t6 g( l& s2 g* S
void RAYS_TaskSuspend(INT8U prio); //任务挂起函数  + n- v4 g3 n- a% q
void OSSched(void); //汇编调度函数    q" p) K0 W! ~3 w+ ]- n
void RAYS_TimeDelay(INT16U ticks);  //任务延时函数  
% a8 G; B4 u& m1 gvoid Idle_Task(void);  
- U4 Y+ t& g( r# x9 C6 Jvoid RAYS_Init(void); //系统初始化  3 \) J# C9 _5 {* I  p
void TickIntHook(void);  //系统节拍钩子函数  ' w# t' ~$ {+ ~" z0 H$ E

: L/ O" l9 Q7 V  G4 |% `# x  0 N# g) U' ?: S# s: l1 V( O
欢迎大家测试,我是新手,难免有很多bug,三种版本90%代码都一样,与cpu最相关的RaysRTOS_ASM文件差异较大,不过格式也一样.  
- P* y& M& I1 K3 `" j0 E7 P  X7 ]: s我的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 | 只看该作者
谢谢楼主,一步步来,学习中……4 p4 w0 v7 y( s% d, K5 ]8 a

156

主题

543

帖子

1180

积分

四级会员(40)

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

积分
1180
3#
发表于 2016-7-4 15:22 | 只看该作者
好资料哈,童鞋们有福咯!$ a! c+ o9 k! W# b# q! Q$ X

154

主题

485

帖子

1156

积分

四级会员(40)

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

积分
1156
4#
发表于 2016-7-4 15:55 | 只看该作者
感谢楼主分享!!!
4 W# Y/ M: S1 L; X7 P; w( q' ?3 Q" L7 v
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2024-11-15 23:59 , Processed in 0.059945 second(s), 35 queries , Gzip On.

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

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

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