自己写了个51的OS,抢占式,支持16个任务。堆栈设在XRAM

2020-01-12 17:14发布

自己写了个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。

(原文件名:未标题-1.jpg)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
15条回答
xiaob135
2020-01-13 18:33
回复【7楼】19001579
-----------------------------------------------------------------------

借鉴了挺多地方的,比如任务优先级的算法是学的Linux查表,对于像STC这种大ROM小RAM,cpu也不怎么样的单片机很适合。

这个OS的关键就是把堆栈转移到XRAM中,dptr只能用inc自加,却不能自减,不能像普通OS那样先入后出,后入先出。

一周热门 更多>