xiaob135 发表于 2010-10-15 19:01:44

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

chenao 发表于 2010-10-15 19:08:37

顶一个,向峰哥看齐

jianchangd 发表于 2010-10-15 19:48:14

不错,最近怎么很多人在搞OS了呀.

823032003 发表于 2010-10-15 21:00:52

汇编,,厉害

zuceyige 发表于 2010-10-15 21:24:30

下载来学习一下,谢谢楼主!。

laneasuka 发表于 2010-10-15 21:52:46

感谢分享,学习一下。

wdcyf15 发表于 2010-10-16 12:40:09

唉,想搞OS,可是自己笨的可以……

19001579 发表于 2010-10-16 13:38:18

很像是从UCOS过来的

xiaob135 发表于 2010-10-16 14:03:54

回复【7楼】19001579
-----------------------------------------------------------------------

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

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

hongguan 发表于 2012-9-29 22:30:23

学习中,谢谢了!!!!!!!!!!!!

260186221 发表于 2012-12-28 15:06:41

楼主强大,支持一个

jz701209李 发表于 2013-1-1 19:45:56

学习一下......

sky5566 发表于 2013-1-2 19:46:27

本帖最后由 sky5566 于 2013-1-2 23:59 编辑

如何解决(变量不用设成静态的){:cry:}
这个是分时多工,必须使用time0做系统分时使用.

cnxh 发表于 2019-11-24 15:54:22

兄弟可以改成avr,iar的吗

ju2320601 发表于 2019-11-25 00:18:52

学习一下

eddia2012 发表于 2020-6-28 22:42:09

下来学习参考下。

liyu7788962 发表于 2020-6-29 13:52:34

顶一个,学习

lvxinchao-206 发表于 2021-5-17 16:46:11

你们的技术真的 高了,哎

zwxoec 发表于 2021-5-20 18:11:48

谢谢分享!要是再发几个例程就更好了!

warrenyan7251 发表于 2021-5-28 08:21:15

收藏膜拜

TangCS 发表于 2021-9-19 10:56:35

先收藏,有空学习

新手上路110 发表于 2021-9-30 22:38:00

下来学习一下

新手上路110 发表于 2021-9-30 22:38:41

楼主,怎么下载不了

dinggong 发表于 2022-4-1 08:49:56

看看{:smile:}{:smile:}{:smile:}
页: [1]
查看完整版本: 自己写了个51的OS,抢占式,支持16个任务。堆栈设在XRAM