前言

源码请在https://github.com/ifreecoding/MbedRtos.git下载

前言

目前我所见的绝大部分介绍操作系统的书籍只是从应用的角度告诉读者应该如何使用操作系统,而且相当一部分书籍只是把原有的用户手册整理了一下便出书了,这样的书籍只能当做一本使用手册去查,从学习的角度来说意义不大,一不介绍实现背景、原理,二不介绍应用例子,无法让读者深刻体会操作系统的用法。本手册最大特点是从操作系统的结构设计、编码的角度讲述操作系统内核原理。本手册不是在操作系统写完后才写的,而是一边设计一边编码一边编写,记录了操作系统从无到有的过程,讲解了操作系统实现的原理,只要读者了解C语言,再对汇编语言和硬件稍微有所了解便能看懂本手册。

05年4月,经历了漫长的学生时代我终于参加工作了!

在学校里接触了少的可怜的硬件开发,由于无人指导再加上本人做和尚撞钟,因此所调试的单板问题百出。进入公司后,当我可在硬件与底层软件之间选择时我毫不犹豫的选择了软件,直至走到今天。最开始被分配到做微码,后来又阴错阳差的搞起了C语言底层软件开发。我刚入公司时可谓软件基础太差,学校里学的知识也使我仅知道一点C语言的概念,从来没有实战过。好在当时所作的项目编码阶段已经结束,我的工作就是学习别人的代码并帮助测试、修改问题,当然,做的也并不好。现在回想起来,在这平淡的工作过程中有三点对我至关重要,一、正是在这段时间培养起我比较扎实的C语言基础,不能说学到了很多,但绝对是让我明白了很多最基本的概念,让我知道了学习的方法。二、正是在这段时间我接触了项目的开发,让我参与到历时几年几百人相互协助的项目开发中,看到大项目的开发过程,接触到了很多在学校里永远不会接触到的事物,这些经验对我今后至关重要,虽然只是冰山一角。三、正是在这段时间让我有机会第一次接触了嵌入式操作系统——vxworks,虽然仅仅是嵌入式操作系统的一些应用层概念。

由于我基础较差再加上我是慢热型,当时工作的并不好,一年半后几经周折我换到了一个小部门。以前几百人的开发团队不见了,众多的技术专家、牛人不见了,一二十层、几个、几十个CPU的板子不见了,取而代之的是巴掌大的单板,所谓专家就是我,我一个人就可以是整个项目的全部软件开发人员,设计软件结构、编写从驱动层到业务层的所有代码。以前所做的工作是冰山一角,只知功能不识业务,现如今则需要我承担与软件相关的所有工作。正是在这种环境中我可以借鉴以前的一些经验并按照自己现有的想法设计软件,在实现系统功能的同时也证明了我在硬件、底层软件所掌握知识的正确性。从做大系统的冰山一角,到做麻雀虽小五脏俱全的小系统,各有各的难处,但也各有各的优点,这也为我编写这本手册提供了必要条件。

在做这些小系统时有一个问题一直困扰着我,我所作的设备需要与主设备对接,主设备会实时下发命令给我们执行,并且需要实时回应消息,这样看来如果有一个嵌入式操作系统就会比较好实现。但我们的小系统硬件资源受限制,主频低、存储空间少,使得我很难找到一个合适的操作系统。现有的一些能用的操作系统需要收费,有些不提供源码,但让我最不能接受的是资料不全,真看不明白,使用这些操作系统如果在项目开发过程中出了问题又没有很好的技术支持将是很大的风险,因此在做这些小系统时我一直是裸奔。裸奔是可以搞定一切,但对于系统设计、维护来说确实是比较费劲。

在一个项目中我抛弃了原有的51单片机,使用了ARM7TDMI处理器。随着反复查看ARM芯片手册并在项目调试过程中对ARM7芯片的逐步了解,我逐渐意识到实现一个简单的操作系统内核调度功能似乎并没有想象中的那么困难,原以为实现操作系统调度功能需要深入了解编译器的知识,现在发现只要使用标准的C语言、一些汇编语言和芯片硬件知识就可以实现。

整理一下我目前所处的情况:

1. 迫切需要一个适合小系统的嵌入式操作系统,但又没有合适的。

2. 了解了嵌入式操作系统的一些概念。

3. 掌握了ARM7芯片的硬件结构、C语言和汇编语言知识。

4. 找不到一本可以较好的介绍操作系统的书籍,希望能让更多的人了解嵌入式操作系统内核调度的基本原理,并以一种简单易懂的方式让更多的人接受。

事已如此,万事具备!现在,我们就开始一起编写两个嵌入式操作系统内核——Wanlix和Mindows!

Wanlix是一个内核非常小的嵌入式操作系统,只有几百个字节(大小与编译器、编译选项也有关),但功能也非常少,只提供任务切换功能,而且需要主动调用函数切换任务。但,它确实可以实现任务调度功能,最难能可贵的是它的小巧,非常适合资源特别少但又需要任务切换的小项目。在这个源码开放的时代,Linux、Unix遍地生根,它就跟我姓了,因此叫Wanlix。

地球人都知道Windows,它是一种大型PC机操作系统,它是分时操作系统,它是PC机通用操作系统。而我们将要编写的Mindows则是一种小型操作系统,是实时的,是用在嵌入式设备上的嵌入式实时操作系统,一切都是与Windows相反的!因此这个操作系统就叫Mindows!

本手册只讲解Wanlix、Mindows操作系统的内核,至于其它的例如BSP、文件系统、协议栈等内容过于庞大,本人没有精力也没有能力实现。这两个操作系统已经提供了源码,有兴趣的朋友可以在此基础上自己试着实现其它功能,与他人互相讨论、交流,共同提高。在此我为大家提供了一个网站:

http://blog.sina.com.cn/ifreecoding

大家可以登录此网站下载相关资料,并可进入其中的论坛交流经验。

本手册假定读者具有一定的软硬件基础,对于其中软件编码方面的基础问题不再赘述。

另外需要特殊说明的是,我使用vxworks嵌入式操作系统时间只有一年左右,而且只是使用过极其简单的几个最基本的功能,在后来的一个项目中还简单使用过TI DSP的BIOS操作系统,因此本人对嵌入式操作系统的了解仅限皮毛,本手册也仅是根据本人在使用上述两种操作系统中所建立的感官印象并按照我自己的想法来实现的,错误、疏漏之处在所难免,还请各位多多包涵,如有问题,可以反馈到论坛。

本人免费提供Wanlix和Mindows的源码,但不承担您使用本操作系统为您带来的损失。

另外,本人语文水平实在有限,当我还年轻的时候就因为高中还需要写作文,就没有报考高中,后来是班主任硬逼着改报的高中,在此向当年的班主任孙老师表示感谢!因此,本手册无法顾及语言优美逻辑顺通,只要大家能看明白就行了,有问题我们可以再交流。

最后,向那些无偿付出自己知识的兄弟姐妹们表示敬意!在编写操作系统过程中,确实遇到了一些问题,正是在网上查到你们贡献出的宝贵经验才能让我得以完成此操作系统的编写,因此,我也将这本手册无偿提供给大家,供大家参考,希望本手册能给你能带来一些帮助!

2011.09.23 深圳坂田

将《底层工作者手册之C语言基础及项目开发》改名为《底层开发者手册之C语言基础及项目开发》,并做了一些修改,更新到2.4.5节。不过其中有一些章节还没有写完。先凑合看吧   《C》这本手册是《底层开发者手册》系列的第二本,但它却是我第一个开始写的,早在2008年年底时我就开始着手写这本手册,但写了没多久就因为发生了一个意外而终止了。在2010年年初的时候我开始了第四本手册的写作——嵌入式操作系统内核,目前已接近完工状态(我的博客可以下载,blog.sina.com.cn/ifreecoding),现在我又回过头来重新写《C》这本手册,将会采用与《嵌》一样的方式,写一部分就在网上发布一部分,在这同时我又在收集第一本和第三本手册的材料,准备将这4本手册同时写完,使读者可以按照顺序阅读这4本手册,层层深入底层开发者的工作。   一个良好的C语言基础是编写嵌入式设备底层代码的必要条件,如今介绍C语言的书不少,介绍嵌入式C的书也不少,但几乎没有结合实际项目来介绍C语言的,看完这样的书,C语言会用了,但做出来的产品只能称之为中国校园式产品,为求实现功能不择手段,根本不适合在项目中使用。另有一些自称C语言精华的书或网上的面试宝典,尽是讲一些偏题怪题,这可能满足了作者的虚荣心,但却在将新手引向一个错误的方向。当然,仁者见仁智者见智,这仅是我个人的观点,也一定会被他人所反驳的,正是出现百家争鸣的局面社会才能进步。   本手册分为2部分,第一部分介绍C语言基础,在介绍C基础时会结合嵌入式中的应用加以介绍,将重点介绍在项目开发中有用的内容,对于过分追求技术但又没有什么实际用处的内容不做过多的介绍,对于这些内容最多会提一下,让读者知道有这种情况存在。第二部分介绍项目开发,从项目需求、分析、设计、编码、测试、维护的角度来介绍编写代码。记住,编码只是项目中的一个部分,在中国校园式产品中这可能几乎就是全部了,但在一个可以称之为产品的项目中,它只是一部分,并且项目越大它所占的比重越小。   我在看书学习新知识时,希望看到的是那些写的多一些详细一些,也就是废话多一些的书,可以傻瓜式的一步步跟下来,不希望看到那些对关键之处一笔带过还故作高深的书,所以本手册就以废话多为原则,可能会写的罗嗦一些,只求能看的明白一些。当然,本人知识水平有限,有些知识会有理解上的错误,或者有未触及的地方,错误一定是有的,就像做产品一样,不可能没有错误。我写本手册的目的在于分享我的知识,注重实际应用,这对某一论坛上的某些只会空谈经验、分析汉字语法的理想C语言文艺专家们来说可能会不屑一顾。如有问题,请登录我的博客blog.sina.com.cn/ifreecoding反馈,我虚心接受,但我拒绝那些假大空的为了批评而批评的建议。我们做项目不是写论文,是实实在在的东西!   为新手写一本介绍C语言的书很难,因为它牵涉到非常多的知识作为基础,其中的一些知识很可能需要使用另外几本书的篇幅来介绍,而且知识是耦合在一起的,在介绍前面的时候会涉及到后面的知识,对于新手来说,没有对C形成一个全貌,无法理解。因此给新手的建议是只能多看几遍,第一遍大致看看,掌握全貌,不要细读,然后再多读几遍,仔细分析各种问题,并结合例子,自己动手编程,调试,这个过程非常重要,一定要自己动手编程,光看是没有用的,只有自己动手解决了问题,才能从根本上理解问题。 C语言入门可能会比较容易,但不要指望几个月时间就能熟练掌握C语言,如果做底层编码的话则需要以年为单位来衡量。
Mindows操作系统更新5.1~5.3节,将wanlix从ARM7内核移植到cortex内核,更多资料请登陆www.ifreecoding.com下载。 前面基础知识介绍完毕,本节开始真刀真枪的移植代码了。本节将Wanlix3.3节的代码从ARM7内核移植到TI和ST的cortex内核的芯片上,移植完成后通过串口打印可以看到移植的效果。 如果你有STM32的板子,现在就可以跑! /***************************************************************************/ Wanlix是一个内核非常小的嵌入式操作系统,只有几百个字节,但功能少,只提供任务切换功能,非常适合资源特别少但又需要任务切换的小项目。 Mindows可提供多种操作系统功能,是实时抢占式操作系统,任务支持多种优先级抢占调度,将实时性高的任务设置为高优先级就可以保证软件系统的实时性,用户也可根据自身需求选取需要的部分,也可在此基础上编写代码增加自己需要的功能,具有可裁剪性。 我将Wanlix和Mindows的开发过程记录下来,就形成了这本“底层工作者手册之嵌入式操作系统内核”一书,本手册不仅仅是从应用的角度介绍操作系统如何使用,更重要的是从原理的角度对操作系统的功能做了分析、设计,从无到有循序渐进一点点的增加操作系统的功能,并且每增加一个功能便配以一个例子加以演示,让读者能立刻看到代码运行的结果。 本手册记录了我从对操作系统内核不了解到写出操作系统内核的过程,这样的一个过程对你来说应该也是一个最好的学习过程。 如果你有一定的C语言基础,并且对硬件也有稍微的了解,那么我相信你一定会看明白本手册!也一定可以随心所欲的修改、扩展你需要的操作系统功能! 请登陆www.ifreecoding.com获取更多资料 /***************************************************************************/
Mindows操作系统更新到4.4节看,增加任务任务切换钩子功能,更多资料请登陆www.ifreecoding.com下载。 Wanlix是一个内核非常小的嵌入式操作系统,只有几百个字节,但功能少,只提供任务切换功能,非常适合资源特别少但又需要任务切换的小项目。 Mindows可提供多种操作系统功能,是实时抢占式操作系统,任务支持多种优先级抢占调度,将实时性高的任务设置为高优先级就可以保证软件系统的实时性,用户也可根据自身需求选取需要的部分,也可在此基础上编写代码增加自己需要的功能,具有可裁剪性。 我将Wanlix和Mindows的开发过程记录下来,就形成了这本“底层工作者手册之嵌入式操作系统内核”一书,本手册不仅仅是从应用的角度介绍操作系统如何使用,更重要的是从原理的角度对操作系统的功能做了分析、设计,从无到有循序渐进一点点的增加操作系统的功能,并且每增加一个功能便配以一个例子加以演示,让读者能立刻看到代码运行的结果。 本手册记录了我从对操作系统内核不了解到写出操作系统内核的过程,这样的一个过程对你来说应该也是一个最好的学习过程。 如果你有一定的C语言基础,并且对硬件也有稍微的了解,那么我相信你一定会看明白本手册!也一定可以随心所欲的修改、扩展你需要的操作系统功能! 请登陆www.ifreecoding.com获取更多资料
新鲜出炉,提供源码!wanlix和mindows嵌入式操作系统 好不好,看过文档再说,我觉得,里面的很多东西是你在别的书上看不到的,包括一些ARM和CORTEX芯片的知识。 从现在开始,本网站将陆续发布Wanlix和Mindows操作系统内核。 Wanlix是一个内核非常小的嵌入式操作系统,只有几百个字节,但功能少,只提供任务切换功能,非常适合资源特别少但又需要任务切换的小项目。 Mindows可提供多种操作系统功能,是实时抢占式操作系统,任务支持多种优先级抢占调度,将实时性高的任务设置为高优先级就可以保证软件系统的实时性,用户也可根据自身需求选取需要的部分,也可在此基础上编写代码增加自己需要的功能,具有可裁剪性。 我将Wanlix和Mindows的开发过程记录下来,就形成了这本“底层工作者手册之嵌入式操作系统内核”一书,本手册不仅仅是从应用的角度介绍操作系统如何使用,更重要的是从原理的角度对操作系统的功能做了分析、设计,从无到有循序渐进一点点的增加操作系统的功能,并且每增加一个功能便配以一个例子加以演示,让读者能立刻看到代码运行的结果。 本手册记录了我从对操作系统内核不了解到写出操作系统内核的过程,这样的一个过程对你来说应该也是一个最好的学习过程。 如果你有一定的C语言基础,并且对硬件也有稍微的了解,那么我相信你一定会看明白本手册!也一定可以随心所欲的修改、扩展你需要的操作系统功能! 请登陆www.ifreecoding.com获取更多资料
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值