前言
嵌入式系统是研究手机、数码相机、微波炉、医院B超、小汽车及工业自动化等设备中专用计算机系统的一门学科。它是随着电子集成电路技术的发展和32位嵌入式处理器的广泛使用而带来的产物。嵌入式系统(Embedded System)在国外出现的历史要长些,但在国内,直到2002年左右这一名词才开始大量出现在媒体上,此后迅速成为IT技术的一个研究热点,国内很多高校相继开设了相关课程或专业方向。笔者于2007年开始组织和编写本书,历时5年完成,本书力图体现如下特色。
(1)突出重点、难点,抓住“抓手”。
例如异常中断,既是重点,又是难点,本书不但在内容上不惜笔墨,而且在讲授方式上也煞费苦心,设法将它以一种最易接受的方式呈现给读者;又如嵌入式系统硬件设计,本书抓住总线结构及设备控制器这个“抓手”,使硬件设计变得简单容易;再如µC/OS-II功能函数,笔者着力于源码的分析,通过源码理解其功能及工作原理。
(2)通过典型实例阐述嵌入式系统原理及设计方法。
嵌入式系统涉及面广、复杂、抽象,若没有实例物化、深化、固化,学生不容易掌握。故在讲授完ARM架构与μC/OS-II操作系统后,本书虚构了一个应用需求,给出了能完成这一需求的嵌入式系统组成架构,随后各章的讲授都围绕这一架构的实现来展开。
(3)采取“自顶向下+模块化”方式讲授设计实例。
嵌入式系统设计实例能否被学生掌握是决定本门课程成败的关键,但实例本身太复杂,初学者不易掌握。常听学生如此抱怨:“前面汇编感觉还不错,但到后面的设计实例就晕了。”故从承担这门课起,笔者一直在思考如何讲授设计实例,并做了不少尝试,逐渐摸索出了讲授实例最有效的方式:自顶向下+模块化。
所谓“自顶向下”就是先讲授嵌入式系统架构,再讲授实现细节;“模块化”就是将复杂的嵌入式系统划分为模块,一个模块一个模块地进行设计介绍。“自顶”使学生登高望远,一览众山小,以掌握嵌入式系统整体结构;“向下”使学生深入其中,掌握嵌入式系统技术细节。“模块化”又将复杂的嵌入式系统做了简化,便于学习掌握。故自从采取“自顶向下+模块化”方式讲授设计实例后,讲课感觉轻松多了,也听不到先前的抱怨了。所以,本书在结构设计上有一定程度的创新,即在紧随ARM架构及μC/OS-II操作系统介绍后,增加一章专门分析研究嵌入式系统架构,接着进行模块划分,将复杂的嵌入式系统设计实例划分为一个个模块,逐一讲授每个模块的硬件与底层驱动设计,最后一章则利用前面提出的架构与设计的模块,给出了完成相同事务处理的嵌入式系统应用程序的无核(单任务)及有核(多任务)实现。
目前,国内开设嵌入式系统及其相关课程的专业通常有计算机科学与技术、电子信息科学与技术、电子信息工程、软件工程与自动化等。但无论是在哪个专业开设,不外乎两种情况:一种情况是学分少,作为导论课开设;另一种情况是学分较多,作为专业方向课开设。本书作为嵌入式系统系列课程中最基础的入门课,两种情况均适宜。对于第一种情况,由于开设的是嵌入式系统导论课,建议讲授完本书的全部内容,但第7章可以删掉一些模块。对于第二种情况,由于专业方向课程均会由几门课组成,建议重点讲授本书除第5章以外的所有章节,第5章所涉内容可以另设一门课来讲授。
为方便教学,本书配有电子课件,任课教师可以登录华信教育资源网(www.hxedu.com.cn)免费注册下载。
本书得以顺利出版,感谢家人的支持,感谢学校特色教材项目的资助,感谢电子工业出版社索蓉霞编辑的有益建议和史鹏举编辑付出的努力。
在多年的教学摸索中,笔者从教学实际需求的角度观察、思考,并试图尝试新的表述方式展现嵌入式系统的全貌,但由于水平有限,书中难免有不妥之处,恳请指正。
作者