⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 note.txt

📁 51下的超轻量多任务操作系统,具有任务切换开销极小(指令周期数<10/任务),任务切换速度极快(<100us/任务,STC 1T单片机上可达到20us/任务).注意,最好在拥有256字节的
💻 TXT
字号:
说明:

这是一个最简单最轻量的操作系统,连同测试函数一起才70个字节.

关于是否写这篇文章,我思考过很久,理由是:
1.大部分人(包括我在内)都认为像89C51这样的单片机是不适合使用操作系统的.
2.写了十年51程序(当然不是十年都在写,我偶尔写写,业余爱好)也未用操作系统写过应用程序.

我一直使用状态机的机制来实现多任务,用熟了也其实也很简单---先将任务函数按单任务方式写好,然后分解开,再将它们扔到一个case-switch中,完事了.
简单吗?哈哈,其实麻烦得要死,因为代码不直观了,经常把一个函数拆得七零八落扔得到处都是,实在是有点审美疲劳.

相比之下,在OS下多任务机制的支持下,代码是以直观的方式组织的,轻松而优雅,相信这对很多人来说,诱惑仍是巨大的.
于是乎,在痛苦的状态机式多任务机方式中"挣扎"多年后,我终于痛下决心将操作系统搬进了51.

很多人会问,成熟的多任务操作系统一大堆,你费那牛劲DIY有必要吗?
其实理由很简单:
1.任务切换开销太大.拿TINY51来说,切换时要保存一大堆的上下文,切换最短周期长达70(单位忘了是周期还是微秒),这明显限制了它的应用----对于很多应用来说是无法忍受的.
2.代码不透明.要么是闭源的,要么是汇编写的.对于"专业人士"们来说,这本不是什么问题,但是可苦了一堆受好者们---那一堆乱七八糟的东西太占屏幕,看着上面忘了下面,还是C的"压缩能力"强.
3.弹性太小.很多时候只需要一小部分功能,却要附带一堆机制.这就好比我想买个包子,而老板给出的条件是,只收你包子钱,但你同时得吃下一只鸡.我晕了,撑啊...

又有人会说了,哈哈,那你写一个出来放在网上给大家下载,就没有以上问题了吗?
嘿嘿,你说对了,不管是张三写的李四写的,都有这些问题,所以我的目的并不是提供一个OS给大家用,而是让大家知道如何在短时间内(我目前是5分钟)根据实际需求现场写一个轻量级多任务操作系统出来.

最后要说的是,其实要写一个简单的操作系统并不难,难的是51那可怜有限的资源无法满足你对完美的追求.
要知道人的欲望是无止尽的,当你拥有了多任务并行后,你会希望拥有更多,你会希望它支持睡眠机制,你会希望它支持任务的动态换入换出,你会希望它支持消息机制,你甚至会在拥有了这一些之会提出"要是能再支持内存分配就更完美了".我晕,我日,人的欲望真是魔鬼.
其实这一切都可以实现,基本硬件需求是X52(51因内存太少只能实现多任务),问题仅在于,你愿意想花多少时间来建造它.即使是傻子也不会花上比构建应用系统本身还多的时间去构造一个操作系统.
请记住:适可而止,够用就好,simple is more.



如果你对这个操作系统有兴趣,或希望得到更强大的版本,更多信息请去以下网址了解
http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=1398508&bbs_page_no=1&search_mode=3&search_text=rainyss&bbs_id=9999

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -