本书从最底层来深入阐述嵌入式操作系统,分享给大家提供源码,让大家理解含义.
讲述原理 从无到有,和你一起一步步编写实时嵌入式操作系统内核
操作系统内核也许并没有像你想象的那么神秘
目前我所见的绝大部分介绍操作系统的书籍只是从应用的角度告诉读者应该如何使用操作系统 , 而且相当一部分书籍只是把原有的用户手册整理了一下便出书了 , 这样的书籍只能当做一本使用手册去查 , 从学习的角度来说意义不大 , 一不介绍实现背景 、 原理 , 二不介
绍应用例子 , 无法让读者深刻体会操作系统的用法 。 本手册最大特点是从操作系统的结构设计 、 编码的角度讲述操作系统内核原理 。 本手册不是在操作系统写完后才写的 , 而是一边设计一边编码一边编写 , 记录了操作系统从无到有的过程 , 讲解了操作系统实现的原理 , 只要
读者了解 C 语言,再对汇编语言和硬件稍微有所了解便能看懂本手册。
05 年 4 月,经历了漫长的学生时代我终于参加工作了!
在学校里接触了少的可怜的硬件开发 , 由于无人指导再加上本人做和尚撞钟 , 因此所调试的单板问题百出 。 进入公司后 , 当我可在硬件与底层软件之间选择时我毫不犹豫的选择了软件,直至走到今天。最开始被分配到做微码,后来又阴错阳差的搞起了 C 语言底层软件开发 。 我刚入公司时可谓软件基础太差 , 学校里学的知识也使我仅知道一点 C 语言的概念 ,从来没有实战过 。 好在当时所作的项目编码阶段已经结束 , 我的工作就是学习别人的代码并帮助测试 、 修改问题 , 当然 , 做的也并不好 。 现在回想起来 , 在这平淡的工作过程中有三点对我至关重要 , 一 、 正是在这段时间培养起我比较扎实的 C 语言基础 , 不能说学到了很多 ,但绝对是让我明白了很多最基本的概念 , 让我知道了学习的方法 。 二 、 正是在这段时间我接
触了项目的开发 , 让我参与到历时几年几百人相互协助的项目开发中 , 看到大项目的开发过程 , 接触到了很多在学校里永远不会接触到的事物 , 这些经验对我今后至关重要 , 虽然只是冰山一角。三、正是在这段时间让我有机会第一次接触了嵌入式操作系统 —— vxworks ,虽
然仅仅是嵌入式操作系统的一些应用层概念。
由于我基础较差再加上我是慢热型 , 当时工作的并不好 , 一年半后几经周折我换到了一个小部门 。 以前几百人的开发团队不见了 , 众多的技术专家 、 牛人不见了 , 一二十层 、 几个 、几十个 CPU 的板子不见了,取而代之的是巴掌大的单板,所谓专家就是我,我一个人就可以是整个项目的全部软件开发人员,设计软件结构、编写从驱动层到业务层的所有代码 。 以前所做的工作是冰山一角 , 只知功能不识业务 , 现如今则需要我承担与软件相关的所有工作 。
正是在这种环境中我可以借鉴以前的一些经验并按照自己现有的想法设计软件 , 在实现系统功能的同时也证明了我在硬件、底层软件所掌握知识的正确性。从做大系统的冰山一角 , 到做麻雀虽小五脏俱全的小系统 , 各有各的难处 , 但也各有各的优点 , 这也为我编写这本手册
提供了必要条件。
在做这些小系统时有一个问题一直困扰着我 , 我所作的设备需要与主设备对接 , 主设备会实时下发命令给我们执行 , 并且需要实时回应消息 , 这样看来如果有一个嵌入式操作系统就会比较好实现 。 但我们的小系统硬件资源受限制 , 主频低 、 存储空间少 , 使得我很难找到一个合适的操作系统 。 现有的一些能用的操作系统需要收费 , 有些不提供源码 , 但让我最不能接受的是资料不全 , 真看不明白 , 使用这些操作系统如果在项目开发过程中出了问题又没有很好的技术支持将是很大的风险 , 因此在做这些小系统时我一直是裸奔 。 裸奔是可以搞定一切,但对于系统设计、维护来说确实是比较费劲。
在一个项目中我抛弃了原有的 51 单片机,使用了 ARM7TDMI 处理器。随着反复查 看ARM 芯片手册并在项目调试过程中对 ARM7 芯片的逐步了解 , 我逐渐意识到实现一个简单的操作系统内核调度功能似乎并没有想象中的那么困难 , 原以为实现操作系统调度功能需要深入了解编译器的知识,现在发现只要使用标准的 C 语言、一些汇编语言和芯片硬件知识就可以实现。
整理一下我目前所处的情况:
1. 迫切需要一个适合小系统的嵌入式操作系统,但又没有合适的。
2. 了解了嵌入式操作系统的一些概念。
3. 掌握了 ARM7 芯片的硬件结构、 C 语言和汇编语言知识。
4. 找不到一本可以较好的介绍操作系统的书籍 , 希望能让更多的人了解嵌入式操作系统内核调度的基本原理,并以一种简单易懂的方式让更多的人接受。
事已如此 , 万事具备 ! 现在 , 我们就开始一起编写两个嵌入式操作系统内核 —— Wanli x和 Mindows !
Wanlix 是一个内核非常小的嵌入式操作系统,只有几百个字节(大小与编译器、编译选项也有关 ) ,但功能也非常少,只提供任务切换功能,而且需要主动调用函数切换任务。但 , 它确实可以实现任务调度功能 , 最难能可贵的是它的小巧 , 非常适合资源特别少但又需要任务切换的小项目。在这个源码开放的时代, Linux 、 Unix 遍地生根,它就跟我姓了 , 因此叫 Wanlix 。
地球人都知道 Windows ,它是一种大型 PC 机操作系统,它是分时操作系统,它是 P C机通用操作系统。而我们将要编写的 Mindows 则是一种小型操作系统,是实时的,是用在嵌入式设备上的嵌入式实时操作系统,一切都是与 Windows 相反的!因此这个操作系统就
叫 Mindows !
本手册假定读者具有一定的软硬件基础,对于其中软件编码方面的基础问题不再赘述 。另外需要特殊说明的是 , 我使用 vxworks 嵌入式操作系统时间只有一年左右 , 而且只是使用过极其简单的几个最基本的功能,在后来的一个项目中还简单使用过 TI DSP 的 BIOS操作系统 , 因此本人对嵌入式操作系统的了解仅限皮毛 , 本手册也仅是根据本人在使用上述两种操作系统中所建立的感官印象并按照我自己的想法来实现的 , 错误 、 疏漏之处在所难免 ,还请各位多多包涵,如有问题,可以反馈到论坛。
本人免费提 供 Wanli x 和 Mindow s 的源码 , 但不承担您使用本操作系统为您带来的损失 。另外 , 本人语文水平实在有限 , 当我还年轻的时候就因为高中还需要写作文 , 就没有报考高中,后来是班主任硬逼着改报的高中,在此向当年的班主任孙老师表示感谢!因此 , 本手册无法顾及语言优美逻辑顺通,只要大家能看明白就行了,有问题我们可以再交流。
最后 , 向那些无偿付出自己知识的兄弟姐妹们表示敬意 ! 在编写操作系统过程中 , 确实遇到了一些问题 , 正是在网上查到你们贡献出的宝贵经验才能让我得以完成此操作系统的编写 , 因此 , 我也将这本手册无偿提供给大家 , 供大家参考 , 希望本手册能给你能带来一些帮助!
内容截图:
完整的pdf格式文档51黑下载地址(共219页):
底层工作者手册之嵌入式操作系统内核.pdf
(5.19 MB, 下载次数: 905)
|