自己写了个51的OS,抢占式,支持16个任务。堆栈设在XRAM
自己写了个51的OS,抢占式,支持16个任务。堆栈设在XRAM。本着开源的原则与大家共享!一起来测试它的稳定性。变量尽量设成静态的!没有信号量,切换周期大约400。
点击此处下载 ourdev_590122L84N9C.rar(文件大小:76K) (原文件名:myOS.rar)
51的OS与avr,stm等有较大的不同。51的SP只有8bit,不能指向XRAM的部分,需要先把状态压栈,然后把栈拷贝到XRAM中,再把现在要运行的任务的堆栈恢复。同时为了加快任务调度的速度需要计算一下压栈的深度,根据压栈的深度来保存有用的数据。
keil编译。
适合STC,在STC12C5A60S2上试了一下,很稳定!
为了兼容51,没有用双dptr。
http://cache.amobbs.com/bbs_upload782111/files_34/ourdev_590123TRPWSZ.jpg
(原文件名:未标题-1.jpg) 顶一个,向峰哥看齐 不错,最近怎么很多人在搞OS了呀. 汇编,,厉害 下载来学习一下,谢谢楼主!。 感谢分享,学习一下。 唉,想搞OS,可是自己笨的可以…… 很像是从UCOS过来的 回复【7楼】19001579
-----------------------------------------------------------------------
借鉴了挺多地方的,比如任务优先级的算法是学的Linux查表,对于像STC这种大ROM小RAM,cpu也不怎么样的单片机很适合。
这个OS的关键就是把堆栈转移到XRAM中,dptr只能用inc自加,却不能自减,不能像普通OS那样先入后出,后入先出。 学习中,谢谢了!!!!!!!!!!!! 楼主强大,支持一个 学习一下...... 本帖最后由 sky5566 于 2013-1-2 23:59 编辑
如何解决(变量不用设成静态的){:cry:}
这个是分时多工,必须使用time0做系统分时使用. 兄弟可以改成avr,iar的吗 学习一下 下来学习参考下。 顶一个,学习 你们的技术真的 高了,哎 谢谢分享!要是再发几个例程就更好了! 收藏膜拜 先收藏,有空学习 下来学习一下 楼主,怎么下载不了 看看{:smile:}{:smile:}{:smile:}
页:
[1]