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