嵌入式操作系统内核调度:底层开发者手册

所需积分/C币:50 2016-12-02 17:36:02 79.89MB PDF
收藏 收藏 15
举报

《嵌入式操作系统内核调度:底层开发者手册》从程序员的角度设计、编写嵌入式操作系统,实现了内核调度功能。作者按照介绍原理、设计编码、举例验证的顺序逐一介绍各功能的编写方法,为读者理解和应用嵌入式操作系统提供了一种全新的思路。   本手册共分7章,第1章概述操作系统的基本概念;第2章介绍编写操作系统任务调度程序所需具备的基本知识;第3章讲解如何编写非抢占式嵌入式操作系统Wanlix;第4章和第5章讲解编写实时抢占式嵌入式操作系统Mindows的方法;第6章讲解在4种操作系统下分别编写相同结构的任务调度程序;第7章简述进程机制,并使用线程模拟多进程。   本手册可供从事嵌入式开发工作的程序员、高等院
嵌入式操作系统内核调度 底层开发者手册 王奇谷志茹。姜日凡编著 P316.2 2 京挑空航天头答出版社 内容简介 嵌入式操作系统内核调度—底层开发者手册》从程序员的角度设计、编写嵌入式操作系 统,实现了内核调度功能。作者按照介绍原理、设计编码、举例验证的顺序逐一介绍各功能的编写 方法,为读者理解和应用嵌入式操作系统提供了一种全新的思路 本手册共分7章,第1章概述操作系统的基本概念;第2章介绍编写操作系统任务调度程序所 需具备的基本知识;第3章讲解如何编写非抢占式嵌入式操作系统 Wanli;第4章和第5章讲解 编写实时抢占式嵌入式操作系统 Mindows的方法;第6章讲解在4种操作系统下分别编写相同结 构的任务调度程序;第7章简述进程机制,并使用线程模拟多进程。 本手册可供从事嵌入式开发工作的程序员、高等院校本科生及研究生参考,适合具有一定C 语言基础的读者阅读。 图书在版编目(CIP)数据 嵌入式操作系统内核调度:底层开发者手册/王奇, 谷志茹,姜日凡编著.-北京:北京航空航天大学出版 社,2015.1 ISBN978-7-5124-1611 I.①嵌…Ⅱ.①王…②谷…③姜…Ⅲ.①实时操 作系统Ⅳ.①TP316.2 中国版本图书馆CIP数据核字(2014)第241355号 版权所有,侵权必究。 嵌入式操作系统内核调度一—一底层开发者手册 王奇谷志茹姜日凡编著 责任编辑梅栾芳 北京航空航天大学出版社出版发行 北京市海淀区学院路37号(邮编100191)http://www.buaapress.com.cn 发行部电话:(010)82317024传真:(010)82328026 读者信箱:ebook@gmai.com邮购电话:(010)82316936 涿州市新华印刷有限公司印装各地书店经销 开本:710×1000116甲张:29.25字数:623千字 2015年1月第1版2015年1月第1次印刷印数:3000册 ISBN978-7-5124-1611-6定价:69.00元 若本书有倒页、脱页、缺页等印装质量问题,请与本社发行部联系调换。联系电话:010-82317024 一 , 序 本手册介绍实时嵌入式操作系统内核任务调度的实现方法及相关知识。 部分介绍操作系统的书籍只是从应用的角度讲解操作系统,有些可能连译者自 己都没搞清楚,就更不要说让读者明白了,有些甚至是直接翻译操作系统的用户手册 就出书了,这样的书籍对于学习操作系统原理来说意义不大。本手册最大的特点是 从操作系统结构设计、编写操作系统的角度讲述操作系统内核的调度原理,并结合多 个例子演示一个一边设计、一边编码、一边写书的过程,记录了操作系统从无到有的 过程,讲解了实现操作系统的基本原理,读者只要了解C语言,再对汇编语言和处理 器结构稍微有所了解便能看懂本手册。 2005年4月,经历了漫长的学生时代,我终于参加工作了。进入公司后,我选择 了做软件,直至今天。刚入公司时软件基础太差,学校里学的知识也仅使我知道一点 C语言的概念,几乎从来没编写过代码。好在当时所做的项目已过了编码阶段,我的 工作就是学习别人的代码并帮助测试、修改问题。现在回想起来,在这平淡的工作过 程中有三点对我至关重要:①正是在这段时间培养了我比较扎实的C语言基础,虽 不能说学到了很多,但是让我明白了很多最基本的概念,知道了学习的方法;②正是 在这段时间我接触了项目开发的一些流程,参与到历时几年几百人协作的项目开发 中,经历了大项目的开发过程,接触到了很多在学校里永远不会接触到的事物,这些 经验对我至关重要,虽然只是冰山一角;③正是在这段时间让我有机会接触到嵌入 式操作系统 VxWorks,尽管只是嵌入式操作系统的一些应用层用法。 工作一年半后我换到了一个小部门,从原有部门做大系统的冰山一角到做麻雀 虽小五脏俱全的整个小型嵌入式系统,各有各的难处,但也各有各的好处,这也为我 编写本手册提供了必要条件 在做小系统时有一个问题一直困扰着我:我所做的下位机设备需要与上位机设 备通信,上位机下发的消息需要下位机实时回应,并且下位机可能会同时处理多条消 息,这样看来,如果有一个嵌入式操作系统解决任务调度问题,那么下位机的设计就 会比较方便。但由于我们的小型嵌入式系统硬件资源受到一些限制,主频低、存储空 间少,很难找到一款合适的嵌入式操作系统。当时的一些符合硬件资源条件的操作 系统要么需要收费,要么不提供源码又没有可靠的服务保障,最不能接受的是资料不 全,使用起来非常不方便,因此我在做这些小系统时一直是“裸奔”。“裸奔”是可以搞 定一切,但对于系统设计、维护来说代价也是不小的。 序 嵌 后来在一个项目中我放弃了原有的51单片机,使用了一款ARM7处理器。随 入着反复查看ARM处理器手册并在项目开发过程中对ARM处理器的逐步了解,我 式意识到实现一个简单的操作系统任务调度功能并没有想象的那么困难,原以为实现 操 作操作系统任务调度功能需要深入了解编译器的知识,但我发现只需要使用标准的C 系语言、一些汇编语言和处理器知识就可以实现。 统 整理一下我当时所处的境况 核 (1)迫切需要一个适合小系统的嵌入式操作系统,但没有合适的 调 (2)了解了嵌入式操作系统的一些应用层概念 度(3)掌握了ARM7处理器的结构、C语言和汇编语言知识 (4)找不到一本可以较好地介绍操作系统内核调度的书籍,希望能让更多的人 底层开发者手册 了解嵌入式操作系统内核调度的基本原理,而不仅仅是如何使用。 既然如此,那么我们就开始一起编写具有任务调度功能的两个嵌入式操作系统 内核— Wanli和 Mindows Wanli是一个内核非常小的嵌入式操作系统,只有1KB左右(大小与编译器 编译选项等因素有关),功能也非常少,只提供任务切换功能,而且需要主动调用函数 切换任务。但是,它确实可以实现任务调度功能,最难能可贵的是它的小巧,非常适 合资源特别少但又需要任务切换的小项目。在这个源码开放的时代, Linux、Unix遍 地生根,考虑到我姓王,因此我将它叫作 Wanli。 Windows是一种大型PC机操作系统,它是分时操作系统,是PC机通用操作系 统,而我们将要编写的 Mindows则是一种小型操作系统,是实时的,是用在嵌入式设 备上的实时嵌入式操作系统,一切都是与 Windows相反的,因此这个操作系统就叫 作 Mindows! Mindows具有较多的功能,支持多优先级任务抢占,可以实现任务实 时切换,具有信号量、队列等机制,并且可以裁剪掉不需要的功能。 本手册只讲解Wanlⅸx和 Mindows操作系统的内核调度,至于其他的文件系统、 内存管理等,由于内容过于庞杂,本人没有能力也没有精力实现,只是在某些章节会 作一些浅显的介绍。这两个操作系统提供了源码,有兴趣的读者可以在此基础上自 己试着实现其他功能,与他人讨论、交流,共同提高,在此我为大家提供3个网址: 主力网站:www.ifreecoding..com 网站论坛:bbs.ifreecoding.com 新浪博客:blog.sina,com.cn/ /ifreecoding 大家可以登录这些网站下载本手册的源代码演示录像及参考资料、开发工具 等,并可在论坛进行交流。 本手册主要由王奇负责编写,湖南大学谷志茹博士、大连海事大学姜日凡博土参 与了部分章节的编写工作。感谢在华为工作时的同事郑朝晖、时峰、马继彬、潘玉园、 赵峰、贾国昌、何斌、王继松、赵虎、李佳、张婷婷等对本手册提出了许多宝贵的意见, 序 感谢我的主管张键、袁震等给予工作上的支持,感谢姜英华、曹昌平、喻妍等参与了本 书部分文字录人及校对工作。 最后,向那些无偿提供知识的兄弟姐妹们表示敬意!在编写操作系统过程中,确 实遇到了一些问题,正是你们贡献出的宝贵经验才让我得以完成此手册的编写工作 嵌入式操作系统内核调度 作者 2015年1月 底层开发者手册 前言 现在有很多介绍操作系统的书籍,介绍操作系统的概念、原理以及用法等,这些 书籍对读者学习操作系统有一定的帮助,但也会有不足之处。我一直认为,介绍一种 技术的书籍,首先要以最简单的方式让读者明白原理,“哦,原来是这么回事。”然后, 再结合例子加以演示,最好可以让读者亲自操作,让读者明白,“哦,原来这么用就可 以了。” 些介绍操作系统的书籍介绍的内容非常多,其中每一个功能都可以写成一本 书来介绍,因此,读这样的书只能大概了解,无法深入本质;或者这些书会假设你具备 了非常多的知识,否则你根本就不知道这书是在讲什么,如果你是希望入门的读者, 那么这个要求就太高了。 本手册正好相反,介绍的内容不多,你看不到操作系统多种功能的介绍,当然, 阅读本手册你也会学习到从其他书籍学习不到的知识。本手册只介绍嵌入式操作 系统最核心的功能任务调度功能,非常适合入门学习。这不需要你具备很多 有关操作系统的知识,你只要具有程序员的基本功就可以了,只需要你会用C语 言,如果对汇编语言和处理器也有那么一点了解就更好了,剩下的事情就交给我, 我将和你一起将C语言和一小部分汇编语言组装成操作系统程序,我们一起运行 这段程序,一步步实现与操作系统任务调度有关的多个功能。本手册的目的不是 推广手册中的操作系统商用,而是让读者能更好地了解操作系统的基本原理,能够 灵活应用。 本手册将按照下面的顺序编写: ◆第1章举例说明不使用操作系统编程会遇到的困难,然后介绍操作系统的分 类、功能。 ◆第2章介绍编写操作系统任务调度所需要具备的基本知识,介绍本手册所使 用的几条汇编指令以及所使用的处理器结构。 ◆第3章开始编写操作系统代码,介绍任务调度原理,并使用C语言和汇编语 言编程,实现2个固定任务间的切换,之后再扩展到任意多个任务间的切换, 最后再增加一些基本功能,完成 Wanli操作系统的编写。作为本章的结束, 将使用 Wanliⅸx操作系统编写一个交通红绿灯控制系统。 ◆第4章开始编写实时嵌入式操作系统 Mindows,介绍实时嵌入式操作系统的 调度原理,编写任务钩子、任务删除、信号量、队列等最基本的功能程序。作 前言 为本章的结束,将使用 Mindows操作系统编写一个俄罗斯方块游戏 ◆第5章继续完善 Mindows操作系统的功能,增加任务优先级继承、任务轮转 嵌入式操作系统内核调度 调度、栈异常打印、栈统计、CPU占有率统计等功能,这些功能都是可裁剪 的。作为本章的结束,将使用 Mindows操作系统编写一个嵌入式软件平台 ◆第6章将分别在 Mindows、μCos、 Windows和 Linux操作系统下编写任务调 度程序,采用相同的程序结构 ◆第7章简单介绍进程机制,并使用线程模拟多进程。 本手册每增加一个功能,会先对该功能的原理作一番介绍,然后进行结构设计并 编写代码实现该功能,最后使用一个例子演示该功能。例子可以在开发板上运行,通 过串口和LCD显示屏观察该功能的运行效果。在一些章节的最后,还会编写几个嵌 层开发者手册 入式应用程序,应用编写的操作系统 通过本手册,不但可以了解嵌入式操作系统的原理并一步步编码实现它,还可以 通过本手册中丰富的例子学习操作系统的使用方法,学习在一个项目中如何设计和 应用它。 另外,需要说明,我在编写本手册时参考的是其他操作系统的应用层功能,然后 自己再反过来设计并实现操作系统内核层功能,因此本手册所实现的操作系统任务 调度功能与其他操作系统在细节上可能会有些差异。 由于本人能力有限,工作之余写书,其中疏忽、错误在所难免。编码不易,写书不 易,如有问题请读者反馈给我,我将尽力修正,还请大家多多支持! 声明:本人提供 Wanli和 Mindows操作系统的源码,可以免费使用,可以到 www.ifreecoding.com、bbs.ifreecoding.com、blog.sina.com.cn/ifreecoding网站获 取相关的资料,但如果因使用本手册中的代码而带来损失,本人将不承担责任。 目录 第1章操作系统基础知识… 1.1为什么要使用操作系统 1.2操作系统的嵌入性和实时性 1.3操作系统功能介绍………………………………………………7 第2章编写操作系统前的预备知识………………………………………………9 2.1 Cortex-M3内核的基本结构 9 2.2 Thumb-2汇编语言简介…………………………………………………13 2.3函数间调用标准…………………………………………………………………22 2.4开发环境介绍 30 第3章编写 Wanli操作系统…………………………………………………33 3.1 Wanli的文件组织结构…… 33 3.2两个固定任务间的切换… 36 3.2.1原理介绍……………………………………………………………37 3.2.2程序设计及编码实现 39 3.2.3功能验证…………………………………………… 48 3.3多个任务间的切换… ………………………………………51 3.3.1原理介绍……………… …51 3.3.2程序设计及编码实现………………………………………………51 3.3.3功能验证…… …………………55 3.4用户程序入口—根任务………………………………………………58 3.4.1原理介绍… ………………………………………58 3.4.2程序设计及编码实现………… 59 3.4.3功能验证 …………………………………60

...展开详情
试读 127P 嵌入式操作系统内核调度:底层开发者手册
立即下载 低至0.43元/次 身份认证VIP会员低至7折
    一个资源只可评论一次,评论内容不能少于5个字
    hjx159 书不错,就是扫描版的
    2019-03-22
    回复
    刀刀客儿 很好哦,不错。
    2018-10-07
    回复
    lanmanck 来这里下载,只要1个比:https://download.csdn.net/download/lanmanck/10615863
    2018-08-20
    回复
    YANGL007 不错的资料
    2018-08-02
    回复
    xiajiagao 很好哦,不错。
    2018-01-29
    回复
    xiaocaovc 资料清晰可观,非常实用
    2017-10-13
    回复
    zx52902 资料不知道放哪去了,谢谢分享
    2017-09-27
    回复
    XD_L超能 不能打开啊 不是PDF吧
    2017-08-01
    回复
    fsllll 很好的资料,谢谢!内容是图片扫描的
    2017-05-23
    回复
    关注 私信 TA的资源
    上传资源赚积分,得勋章
    最新推荐
    嵌入式操作系统内核调度:底层开发者手册 50积分/C币 立即下载
    1/127
    嵌入式操作系统内核调度:底层开发者手册第1页
    嵌入式操作系统内核调度:底层开发者手册第2页
    嵌入式操作系统内核调度:底层开发者手册第3页
    嵌入式操作系统内核调度:底层开发者手册第4页
    嵌入式操作系统内核调度:底层开发者手册第5页
    嵌入式操作系统内核调度:底层开发者手册第6页
    嵌入式操作系统内核调度:底层开发者手册第7页
    嵌入式操作系统内核调度:底层开发者手册第8页
    嵌入式操作系统内核调度:底层开发者手册第9页
    嵌入式操作系统内核调度:底层开发者手册第10页
    嵌入式操作系统内核调度:底层开发者手册第11页
    嵌入式操作系统内核调度:底层开发者手册第12页
    嵌入式操作系统内核调度:底层开发者手册第13页
    嵌入式操作系统内核调度:底层开发者手册第14页
    嵌入式操作系统内核调度:底层开发者手册第15页
    嵌入式操作系统内核调度:底层开发者手册第16页
    嵌入式操作系统内核调度:底层开发者手册第17页
    嵌入式操作系统内核调度:底层开发者手册第18页
    嵌入式操作系统内核调度:底层开发者手册第19页
    嵌入式操作系统内核调度:底层开发者手册第20页

    试读已结束,剩余107页未读...

    50积分/C币 立即下载 >