找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 70|回复: 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 c& i. \5 v" |, A
较以前版本将RaySRTOS主文件和不同CPU平台文件分开,形成了以下目录:
- d; v' r/ P- b% Y+ ^RaySRTOS(总体文件夹)) {% z9 f! P6 ]/ A
                    |Kernel(文件夹)|RaySRTOS.c 系统平台无关主文件% o7 |9 v6 V4 H  V
                    |                |RaySRTOS.h 系统平台无关头文件' o, M. b0 Q% [/ D6 `( @. P
                    |. ]0 W3 g- g1 d/ ]1 P8 M
                    |CPU(文件夹)  |8051_KEIL(文件夹)|CPU.c          特定平台CPU相关c文件' w! V6 C1 J6 P$ }
                    |                |                |CPU_ASM.asm    特定平台调度代码
1 ?1 B5 }7 P; @, \- S                    |                |                |CPU_CFG.h      特定平台数据定义以及系统配置
) Z# v' S4 n. g9 W7 J; B: N                    |                |7 ?9 @# |4 u3 n5 I
                    |                |AVR_GCC(文件夹)  |......
) `& o$ i% e  Q4 u2 I                    |! H$ g( d8 A, L- r3 |$ N
                    |
. }! T0 U6 i( e6 s) j6 [; k                    |* K9 I# z3 g' K+ s% M/ P
                    |DEMO(文件夹)    |各种平台演示代码工程
% A8 A# C4 U# t3 b. T& P/ u$ S3 @* S0 p0 r
该实时操作系统具备以下几个优点:
; z  f& w* K. F& w, ]8 `1 d" l- S: K2 W, \' [
1:全抢占式优先级调度" K9 w1 Y4 l1 W
2:小型化,适用于单片机
# D" F% }( v/ p+ q! y" w
4 W5 R/ N+ l; B; P! H
& U9 _& m# g+ c+ d
; h2 V6 Q0 u2 ]. H+ f- m+ h7 D6 R! s: U9 \
51版本  $ q* D" D( G* Y7 I
keil4编译版本,89c52单片机运行,仿真proteus7.5sp3  
( T0 m- M/ ?* O# `5 D! [由于是优先级抢占式调度,建立了两个任务,占用ram稍微较大,flash占用还可以,占用情况如下:  1 E, l- F+ S1 t2 u/ S3 g% E3 f
Program Size: data=92.0 xdata=0 code=950  6 C, ]6 v6 y  |. b" J/ N3 k5 |
下面是系统函数声明  
: b, n; B/ r9 D2 o1 B6 p/*--------------------------------------------------------------------------------------+  ( B' C$ W) M# z9 F
|系统函数声明    |  2 F1 a% g2 `- k* @; H" ^
+---------------------------------------------------------------------------------------*/  
5 J- X% u. \. [  ^/ H! ivoid RAYS_TaskCreate(void (*Task)(void),INT8U *Stack,INT8U t_Prio);//创建任务  
9 J6 t- |2 ?, h0 A, b9 I* Hvoid RAYS_Start(void); //系统启动函数  3 S: @! @) a& B- j( Z
void RAYS_TaskResume(INT8U prio);  //任务恢复函数  
) }) L% c5 {, q+ X9 C6 K6 evoid RAYS_TaskSuspend(INT8U prio); //任务挂起函数  9 F* k9 ]4 K: ^- V5 h, G. D; L; b
void OSSched(void); //汇编调度函数  . S% n  B0 [) d0 a/ X/ I: ~
void RAYS_TimeDelay(INT16U ticks);  //任务延时函数  
( E0 t# u0 U" v& S. U, tvoid Idle_Task(void);  
# H+ o7 U& z& P* ivoid RAYS_Init(void); //系统初始化  
8 \2 B, I+ I0 @+ i. P3 W3 ^void TickIntHook(void);  //系统节拍钩子函数 ) C/ L5 ?# d& S* ?! v; f* v

$ Z% s! [& j) g  }+ W& F# ~! C1 v+ u" f

) R& b" @& P6 w8 l+ ~; ]avr版本  . ^+ z5 T: U' _8 m
用winavr20060421编译,ide选择的是avr studio,也可以用winavr编译,仿真同样是proteus7.5sp3,调度在16兆只用10us(avrstudio软测)
3 t* X+ ~& y/ m) {, Z5 a单片机型号分别测试了mega128 和mega8和mega88,都可以运行,但程序如果大于64k的话调度部分pc需要改动一下  " u& A5 M7 X, h
由于是优先级抢占式调度,建立了3个任务,占用情况如下:  5 ]( N# [4 K3 w8 ?
+ h; a: I. K, g' g% {' O8 b8 _
Program:    1178 bytes  - I7 ^& A/ h6 i' B* z; B$ u
(.text + .data + .bootloader)  
5 o+ T2 r' u* M0 r8 n' Y
$ j) C* \2 N4 R# M( \Data:        225 bytes  * ^5 `* m: \7 _7 a
(.data + .bss + .noinit)  
  ~& y/ E% \! Q7 O4 Q默认优先级0s  
% H* Q6 ]+ k) G  U/*--------------------------------------------------------------------------------------+  # J2 ^( m, V  ]: q! C( Y5 z
|系统函数声明    |  + ~1 I7 X8 z) w; z
+---------------------------------------------------------------------------------------*/  ' I) \& [; M( [# ?; h
void RAYS_TaskCreate(void (*Task)(void),INT8U *Stack,INT8U t_Prio);//创建任务  
1 G; N- |' F- ?- c6 C4 g8 P# C) t, Ovoid RAYS_Start(void); //系统启动函数  
  J8 p5 m+ Z0 I/ e1 I! Z6 ovoid RAYS_TaskResume(INT8U prio);  //任务恢复函数  
1 Y6 P& _1 J/ Z" ^void RAYS_TaskSuspend(INT8U prio); //任务挂起函数  ; ?: ]5 }* `  {0 E5 K* E  s
void OSSched(void); //汇编调度函数  0 I; F+ V- H7 m  P4 P; w& }
void RAYS_TimeDelay(INT16U ticks);  //任务延时函数  
8 U5 _/ d' b1 I/ {void Idle_Task(void);  . t1 E4 D. U% Q4 u/ M! ?" m
void RAYS_Init(void); //系统初始化  
3 l" T  Q& y; s* o) rvoid TickIntHook(void);  //系统节拍钩子函数  
3 R! P8 ?5 N% P- B, O( R: {
9 |/ ^* y4 @- S5 X  \& ^  [; o- S" }, a6 O5 O0 b
最后来stm8s105c6版本,本人手上只有这个小小的discovery板子,100块买的,所以先拿它做的测试,很稳定!  ; a; y. h. \- H5 h5 c$ G5 N. i, g
编译器选择的是IAR,因为它里边支持c语言是用的模拟寄存器!!!!stvd好像用的是堆栈,导致在stvd上做系统几乎不可能  
+ H. t5 B, \, Gstm8工程,是stm8s105c6版本,仿真是硬件仿真,因为proteus不支持stm8STM8IAR.rar)  
$ G- I& X+ G* {9 H  _3 ^4 @
8 J5 g! o. X8 g, l+ Sflash和ram占用情况如下:  . y% q0 z2 w& {/ v
  941 bytes of readonly  code memory  
0 o" t, T6 r# m5 P, i: P  132 bytes of readonly  data memory  - Z0 u8 Y, I2 A5 T
  499 bytes of readwrite data memory  
1 e/ }3 `0 P9 v" n. y+ g, b9 X9 z我感觉ram占用有点大,后来我编写了个什么都没有的main函数,ram占用是272B,所以本系统ram占用应该是499-272=227B  
& I. y( D9 ^& e优化级别选则balance.  
% f, T5 Y7 ?$ E' r0 ]1 t9 G/*--------------------------------------------------------------------------------------+  
: A4 ~6 E' v1 c% C/ \9 k, X) {" ]. k|系统函数声明    |  , I1 z- g8 q& s6 Z
+---------------------------------------------------------------------------------------*/  
$ P" `+ h7 K& R2 Z: vvoid RAYS_TaskCreate(void (*Task)(void),INT8U *Stack,INT8U t_Prio);//创建任务  % `5 R, O: n6 j
void RAYS_Start(void); //系统启动函数  / M/ O9 u7 {) ^" l4 [. U* w! f" O
void RAYS_TaskResume(INT8U prio);  //任务恢复函数  
& ]2 C1 Q- B6 C7 D" B9 qvoid RAYS_TaskSuspend(INT8U prio); //任务挂起函数  1 T, B& A9 {8 q/ `4 S5 o
void OSSched(void); //汇编调度函数  ' q. Q$ y; ~% s, X6 }& d: F
void RAYS_TimeDelay(INT16U ticks);  //任务延时函数  + v/ s& }  n9 w9 C; \2 P) U
void Idle_Task(void);  
, m, n: q8 ~' k4 @1 zvoid RAYS_Init(void); //系统初始化  
: b% |" F) [. y. u0 X5 r+ Rvoid TickIntHook(void);  //系统节拍钩子函数  ; x/ B# U9 L* D+ @

8 A) p  S4 R1 C5 L& t  , d5 W8 A8 U+ `; x! R
欢迎大家测试,我是新手,难免有很多bug,三种版本90%代码都一样,与cpu最相关的RaysRTOS_ASM文件差异较大,不过格式也一样.  ; i+ K( f/ @: A4 j' @# S6 |
我的qq 771992497 大家多多测试,有问题及时反馈

RaySRTOS0.3版本.rar

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

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

154

主题

485

帖子

1156

积分

四级会员(40)

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

积分
1156
4#
发表于 2016-7-4 15:55 | 只看该作者
感谢楼主分享!!!
" p/ G5 L& l/ y. J! W

156

主题

543

帖子

1180

积分

四级会员(40)

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

积分
1180
3#
发表于 2016-7-4 15:22 | 只看该作者
好资料哈,童鞋们有福咯!
% i8 Q6 s0 t  _% m. p, K: F* V

155

主题

662

帖子

1191

积分

四级会员(40)

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

积分
1191
2#
发表于 2016-7-4 14:24 | 只看该作者
谢谢楼主,一步步来,学习中……
, q* \: _# h4 D: ]. l+ s* H
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2024-11-15 21:41 , Processed in 0.077153 second(s), 35 queries , Gzip On.

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

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

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