自己写了个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)
-----------------------------------------------------------------------
借鉴了挺多地方的,比如任务优先级的算法是学的Linux查表,对于像STC这种大ROM小RAM,cpu也不怎么样的单片机很适合。
这个OS的关键就是把堆栈转移到XRAM中,dptr只能用inc自加,却不能自减,不能像普通OS那样先入后出,后入先出。
一周热门 更多>