完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
我利用空闲时间,日夜赶工,花了三个星期写了一个实时操作系统即RTOS,因目标代码小,我称之为OS_MINI,我的RTOS有如下特点:
1)精简版的OS_MINI,目标代码系统代码只有430字节,系统所占内存约为30字节, 最大支持16个任务,(在AT89c2051上最大只支持8个,每个任务所占堆栈至少6个,用于保存ACC,PSW,R0,R1,以及任务返回地址两字节,其他寄存器没有保存,属于共享资源) 本系统为优先级抢占式任务调度,当任务超时时,支持优先级反转, 2)使用任务为N个时,所占内存为30+6*N+(1+1bit)*n,其中n为每个任务定时模块的个数,可以根据需求加减,在AT89C2051中堆栈地址为50H,堆栈顶为7FH,共48字节,可以支持8个,不过最好不要超过8个,因为堆栈满了,就会造成堆栈溢出 同时每个任务可以设定一个定时模块,用于资源或时间等待,系统也占用一个定时模块,用于任务超时时系统自动切换任务 3)系统中的任务具有如下状态:运行、就绪、挂起,即Task_current,Task_ready,Task_wait,,每个任务就有不同的优先级,任务在挂起过程中支持系统唤起操作,任务唤起操作。 本系统有一个特点,在就绪队列中,各任务优先级相同,轮流运行,只有等待任务唤醒或超时情况下可以抢占CPU,【1.当等待任务唤起时,根据该任务优先级与当前任务比较来决定是否立即运行或切换】或者【2.当当前任务超时时,当前任务就会被抢占,避免每个任务占用过多的时间】,所以实时性比较好 4) 任务间通信可以采用Send(task_id,message,stat),Receive(message,stat),check(task_id,message,stat)方式通信,精简版的OS_mini不支持这些函数,采用全局变量通信,因为要占额外的内存 5)该系统支持动态堆栈功能,仿照的是RTX的堆栈管理方式,优先级高的在低地址,优先级低的在高地址,当下一个任务优先级高时,当前任务向高地址搬迁,反之,向低地址搬迁,中间空出一定的堆栈空间作为当前任务堆栈使用,所以内存的利用率很高 6)系统占用了一个定时器,为任务定时模块、系统定时模块提供时钟,调整范围为T0_INT=1MS-5MS, 任务超时时间为N*T0_INT,N可以设定超时时间长短最大255。 7) 该系统支持中断调用任务调度函数,同时,任务自己也可调用任务调度函数来放弃CPU,如果不自动放弃,任务会因超时,自动被系统剥夺CPU,然后插入就绪列表 以上的介绍是我写的精简版的OS_MINI,还有完整版的OS_mini_full,支持邮箱,优先级继承,信号量通信函数等, 所有的操作系统均用汇编来写的,所以结构精简,代码可以最大的优化,但移植性比较差,不过算法是同样的,同样的思想可以用于不同的单片机
OS_mini_short.rar
(247.05 KB, 下载次数: 51
)
|
|
相关推荐
7 个讨论
|
|
|
谢谢 认真学习!非常好的许习资料。谢谢分享
|
|
|
|
|
|
|
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
【瑞萨RA6E2】瑞萨E2S软件安装过程,等待过程玩下97_e2 studio_ZGZZ
140 浏览 0 评论
483 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
815 浏览 0 评论
1346 浏览 2 评论
804 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16907 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 20:45 , Processed in 1.007656 second(s), Total 66, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
6099