出版时间:2011-1 出版社:北京航空航天大学 作者:周航慈 页数:265
Tag标签:无
前言
20世纪90年代,单片机在我国迅速普及,很难找到一种没有使用单片机的电子新产品。笔者在那时出版了《单片机应用程序设计技术》和《单片机程序设计基础》两部著作,也算为推动我国单片机应用尽了一份力。由于那时的单片机以8位机为主,本身的硬件资源有限,所处理的问题也不是很复杂,故程序设计方法绝大多数还是“基于裸机编程”的,即不使用操作系统。进入21世纪后,一大批所谓“信息电子产品”开始普及,其特点是处理对象包含多媒体信息流,CPU的信息吞吐量极大提高,系统功能复杂,人机界面丰富,有网络接口等。这类产品的硬件系统集成度非常高,大多采用32位CPU,存储器资源充足,具备了操作系统所需要的运行条件。这类产品的软件系统规模非常大,如果不使用操作系统来管理,就几乎不可能开发成功。电子工程师熟练掌握“基于嵌入式实时操作系统的程序设计技术”已经是开发这类信息电子产品的必备条件。搞电子产品设计的技术人员几乎都是“电子类”专业出身的,其硬件功底不容置疑,但所学软件课程有限,大多只学过“C程序设计”、“单片机原理与应用”、“汇编语言程序设计”这几门课,基本没有学过“数据结构”、“算法分析”、“操作系统”等软件课程,大多数工程技术人员还是靠一边工作一边自学来提高自己。各种软件书籍和教材大多采用“一本正经”的论述风格,对于软件功底不深的自学者来说,就像是难啃的天书。笔者是电子类专业“科班出身”的大学教师,长期从事电子专业教学,并以程序设计类课程为主;为了教学需要,也自学了若干相关的软件课程,深深体会到其中的艰辛。近年来,笔者开始为电子类专业研究生上“嵌入式实时操作系统”的课程,对如何给电子类专业的学生讲授这门课有了一些体会,萌生了用电子类专业人员看得懂的叙述风格写一本书的想法,并在2006年利用暑假的教学空闲时间撰写了《基于嵌入式实时操作系统的程序设计技术》的第1版,完成了这个心愿。第1版出版至今已有4年,期间笔者收到不少读者的反馈意见,认为其起点还是高了一些,必须先学习好“实时操作系统”,才能看懂。另一方面,在这4年中,电子信息产业发展迅速,ARM芯片更新换代很快,软硬件开发平台也不断更新。为此,笔者决定撰写第2版。与第1版相比,第2版中硬件环境从ARM7内核转到ARM Cortex-M3内核,内容上增加了实时操作系统的入门基础知识,并将这些基础知识分散安排到相关章节之中,从而大大降低了学习的起点,使读者不必预先花费较长时间学习实时操作系统课程,就可以开始学习使用实时操作系统,以达到提高学习效率、缩短学习周期的目的。
内容概要
本书介绍了在“嵌入式实时操作系统”环境下的程序设计技术,共分15章。内容有绪论、建立开发环境、有关任务的基本知识、任务设计、中断服务程序设计、行为同步、资源同步、数据通信、时间管理、采样任务设计、串行通信任务设计、键盘任务设计、显示任务设计、嵌入式操作系统的裁剪和设计示例。书中介绍的内容以源码开放的嵌入式实时操作系统“UC/OS-II为软件运行环境,以SmartCortex M3-1700通用教学/竞赛/工控开发平台为硬件环境。其内容深入浅出。为便于读者加深理解,书中还带有很多程序设计实例和实验。 本书可作为大学电子类本科生和研究生的学习参考书,也可以作为从事嵌入式应用系统研制开发的电子技术人员的参考书。
书籍目录
第1章 绪论 1.1 嵌入式系统的编程环境 1.2 学习使用实时操作系统之前必须具备的能力 1.3 实时操作系统的快速人门方法第2章 建立开发环境 2.1 CPU芯片与硬件平台的选择 2.2 嵌入式实时操作系统的选择 2.3 嵌入式实时操作系统的移植 2.4 开发调试环境的建立 2.5 工程模板分析 2.6 工程模板的使用第3章 有关任务的基本知识 3.1 仿多CPU环境的实现 3.2 任务的特性 3.3 任务的划分 3.4 任务的可调度性分析 3.5 与任务管理有关的常用函数第4章 任务设计 4.1 任务函数的结构 4.2 任务优先级安排 4.3 任务的数据结构设计 4.4 任务函数设计中的问题 4.5 任务函数的代码设计过程第5章 中断服务程序设计 5.1 中断优先级 5.2 在工程模板中加人中断服务程序 5.3 中断服务程序设计第6章 行为同步 6.1 用于行为同步的通信手段 6.2 行为同步第7章 资源同步 7.1 关中断 7.2 关调度 7.3 使用互斥信号量 7.4 使用计数信号量第8章 数据通信 8.1 全局变量 8.2 内存数据块 8.3 消息邮箱 8.4 消息队列第9章 时间管理 9.1 控制任务的执行周期 9.2 控制任务的运行节奏 9.3 状态查询 9.4 终止周期性任务第10章 采样任务设计第11章 串行通信任务设计第12章 键盘任务设计第13章 显示任务设计第14章 嵌入式操作系统的裁剪第15章 设计示例后记参考文献
章节摘录
插图:人们通常根据需要达到的目标来合理选择工作方式和需要使用的工具。例如去不远的超市购物,我们会走着去,然后将买好的东西拎回来。如果开着汽车去附近的超市,虽然只要一两分钟就可以到达,但找停车位和付停车费可能会更麻烦。如果是要到外地出差,我们会坐汽车或者火车去,甚至坐飞机去,没有人会徒步去外地出差。这里就有两种本质不同的环境:徒步行走(脚沾地)的出行环境和使用交通工具(脚不沾地)的出行环境。同样的道理,在电子产品的软件设计过程中,也需要根据软件的规模和复杂程度来合理选择编程环境:直接与所有硬件打交道的“基于裸机的编程环境”和基本上与硬件隔离的“基于嵌入式实时操作系统的编程环境”。本节将介绍这两种基本的编程环境。现在用一个直观的例子来说明这两种编程环境下产生的软件有什么本质不同。假设有三种工作(做饭、打扫卫生和洗衣服)需要在规定的时间之内同时完成,一般我们会选择以下两种方式之一:①请一个厨师来完成做饭的任务,请一个清洁工来完成打扫卫生的任务,再请一个洗衣工来完成洗衣服的任务。三个人各做各的工作,在规定的时间之内完成各自的任务将是非常轻松的事情,但三个人的工资总和肯定不低。
后记
由于本书的硬件平台与第1版不同,因此导致所有程序都需要进行重新设计和调试,但程序设计的基本思路是一致的。为了使读者更容易入门,本书又适当增加了一些实时操作系统基本原理的内容。学习完本书后,读者应该基本上熟悉了基于实时操作系统的程序设计风格,悟性高的读者应该基本掌握了实时操作系统提供的主要系统服务函数的用法,并且能够独立进行初步程序设计。学习完本书并不意味着学习实时操作系统过程的结束,实际上这仅仅是开始,因为有很多事情并没有在本书中真正交代清楚。实时操作系统用什么来表示任务的状态?任务状态的改变是如何实现的?实时操作系统如何知道当前有哪些任务处于就绪状态?很多与任务有关的问题都与“任务控制块”和“任务就绪表”有关,如果能够把“任务控制块”和“任务就绪表”的细节搞清楚,这些问题也就自然明白了。同样的道理,实时操作系统提供的各种通信手段都与“事件控制块”有关,如果能够把“事件控制块’’的细节搞清楚,对这些通信手段的理解就会更加深刻。实时操作系统的核心功能是“任务调度”,如果能够搞清楚“任务调度”的实现过程,则对实时操作系统的理解就上了一个台阶。
编辑推荐
《基于嵌入式实时操作系统的程序设计技术(第2版)》:嵌入式系统软件设计基础丛书
图书封面
图书标签Tags
无
评论、评分、阅读与下载