前言

来源:互联网 发布:top域名有什么用 编辑:程序博客网 时间:2024/06/04 17:02

目前更新到5.3节,请在
http://dl.dbank.com/c02ackpwp6下载5.3节的全部文档

前言

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

 

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

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

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

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

 

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

 

2011.09.23 深圳坂田

原创粉丝点击