序言
随着电子技术及信息技术的发展,嵌入式技术已广泛应用于工业、民用、军事、能源、环保等领域,是当前热门也很有发展前途的技术。大到航空航天、汽车电子、电力系统、石油化工系统等,小到智能手机、GPS、MP3 等都离不开嵌入式系统。要高效地开发嵌入式系统,就离不开嵌入式操作系统。一方面,高实时性的操作系统软件是嵌入式软件的基本要求;另一方面,嵌入式软件开发要想走向标准化,就必须使用多任务的操作系统。
我们身边的电子设备,如智能冰箱,考虑到成本和体积,控制电路的核心或者是单片机、DSP或ARM,或者是有软核FPGA或其他嵌入式系统。在嵌入式的环境下,如果做多任务的系统,就离不开嵌入式操作系统。例如,所谓的智能手机,就是具有嵌入式操作系统的手机。进一步,如果我们的嵌入式系统运用到火箭、飞机等设备,就不能不考虑实时性的要求,也就是任务要在规定的时间内完成,这个时间可以是毫秒级或微秒级,取决于具体的需要,因此必须采用实时性很强的操作系统。
μC/OS 正是这样的操作系统,它是高实时性、多任务的操作系统,是源代码对非商业用途开放的操作系统。μC/OS 适用于嵌入式开发,并已在各领域得到广泛的应用且获得认可。在百度上搜索μC/OS,得到的信息条数约125万条。在www.micrium.com网站就可以获得内核源代码及TCP、GUI等应用的源代码。本书对最新版本的μC/OSII-2.91进行深入剖析,从实时操作系统的原理开始,对重要的数据结构和代码进行解析,采用从原理到数据结构和代码解析,再给出实例以印证和加强的方法,以便于读者掌握。
各专业读者学习方向不同,有些已经学习过操作系统原理,对一般的操作系统原理有一定的认识,有些电子专业的读者并没有深入学习过操作系统原理,另外有些读者对C语言掌握的程度并不太高,因此本书采用由浅入深,层层推进的方法,在第 1 章介绍实时操作系统的基本原来,为以后各章的学习打下基础,满足未学习过操作系统只是的读者学习,而学习过操作系统的读者也要掌握本章的内容,因为嵌入式实时操作系统有其个性。第 2章任务管理部分详尽地讲解了代码方面的内容。从第 3 章介绍中断和时间管理,因为读者已经具备了或提高了C语言的能力,对读者已经掌握的内容就不再赘述,但对新的难点仍给出详尽解析。
实践是检验真理的标准,所学的知识必须结合实际。除了基于NIOS II的FPGA系统上移植的例子外,前面各章例子都是通过将μC/OS移植到PC中,在虚拟的平台上运行μC/OS来得到印证。所有代码都包含在 VC 的一个工程中,打开工程文件就可以看到结构清晰的源代码,因此非常适合读者学习。
通过本书的学习,读者应能较为全面、深入地掌握嵌入式实时操作系统的基本原理,能够读懂读通μC/OS,包括内核、任务管理、时间和中断管理、信号量管理、互斥信号量管理、事件标志组管理、消息邮箱管理、消息队列管理、内存管理的源代码,能将μC/OS移植到不同平台,并能在移植的过程中知其然又知其所以然,不会出现在没有掌握μC/OS而强做移植时出现的困难和错误。
因此,结合笔者嵌入式操作系统的教学及实践经验,本书适合一般层次相关技术人员及相关专业大学生、研究生学习,本书具有以下特点。
1.采用逐步深入,反复印证的方法
首先给出μC/OS涉及的基本原理,对不涉及的操作系统原理部分不做论述。原理部分在第 1 章给出,但在后续章节中分块详细论述。先有概念,再加深理解,循序渐进,避免读者读死书。
2.采用从数据结构的设计入手,再到代码分析、示例验证的剖析方法。给出在虚拟平台下的移植示例和针对各章内容的示例
对μC/OS的核心部分分章论述,每一部分先给出关键的数据结构,说明相关的宏定义,然后结合原理分析核心代码,并给出示例。这一部分的例子是将μC/OS移植到PC中,而使用VC6作为编译环境,这样读者能够非常方便地看到运行结果。读者在学完一章后,一方面将涉及的原理完全吃透,一方面对关键的代码能读懂读通,在做操作系统的移植的时候才能胸有成竹,并能灵活应用。
3.给出在基于NIOS II的FPGA系统上移植的例子
嵌入式操作系统最终要移植到嵌入式平台。如今FPGA作为可编程逻辑器件的主要产品,在通信、消费电子、汽车电子、工业控制等领域得到迅速应用,不断向 ASIC、ASSP、DSP和嵌入式产品的传统领域渗透,且通过嵌入处理器核NIOS取代MCU,FPGA未来发展空间更加广阔。而在基于NIOS II的FPGA上移植μC/OS的例子却不多见,而且如果掌握了在基于NIOS II的FPGA系统上移植μC/OS的技术,就能够很容易地做到在其他嵌入式平台进行移植。
4.表格、图形化的风格
在对重要的数据结构、原理等的论述,以及代码的分析中,尽可能地采用图形化的描述来说明问题,使读者更容易掌握。例如空闲链表,用图形化的描述无疑使读者一目了然。
5.适用面广
本书适用于计算机、电子、通信、自动化及相关专业大学本科、研究生,也适用于广大嵌入式开发工程技术人员、电子技术研究人员、操作系统研究人员。
6.对于没有学习过操作系统原理的读者,完全没有障碍
本书的第 1章就是原理性的描述,是有针对性而精炼的,不需要再去刻意读一本操作系统原理的教材。
学习操作系统,掌握的不只是操作系统。学习μC/OS后,不光掌握了μC/OS,能够进行移植乃至修改,更重要的是对开发设计的思想有一个质的提升,并极大地提高C语言开发水平。本书对计算机专业和非计算机专业读者同样适用,对没有学过操作系统而可能从事嵌入式开发电子类技术人员更有益处。通过本书的学习,以及实践,可以对所学知识融会贯通,应用到实际的项目当中。
作为电子科技大学的一名普通教师,平时除教学外也要从事科研任务,理解操作系统对于电子、通信、自动化及计算机等领域的重要性。笔者认为学好一门嵌入式操作系统对知识层次的提升、工程应用技能的提升,乃至择业都有不小的好处。
本书中第1章是操作系统和嵌入式实时操作系统的基本原理,对于对原理掌握已经比较好的有一定基础的读者可以选择跳过或略读。第2章是任务管理,是基本内容,需要对数据结构和源代码仔细体会。第3章是中断和事件管理,时间管理包括一些函数,中断管理主要是中断的流程。第4章、第5章是事件和消息部分,包含了各种事件和消息机制。第6章是内存管理。第7章是移植的流程分析和在虚拟平台及具有软核的FPGA下的移植。
学习本课程的先前知识是C语言、软件技术基础或数据结构,可以同步学习微机原理。
另外欢迎各位老师将本书选作教材。如果作为教材,建议第 4、5、6 章的内容每章选择2~3 节讲解。本书在每章后提供了习题,另外笔者也编写了 PPT,适合 32~48学时对高年级本科生或低年级研究生讲授。
为方便读者学习,在电子工业出版社博文视点公司网站提供了可在 VC 下编译的完整源代码,包括例子程序的代码及相关 PPT,以用于教学或学习目的,另外也可通过邮箱luyl@uestc.edu.cn联系笔者,读者还可以到www.micrium.com网站下载μC/OS操作系统的源代码及查找相关资料。
在编写的过程中,得到了电子科技大学,尤其是能源科学与工程学院、自动化工程学院的大力支持,另外也得到电子工业出版社的大力支持,在这里一并表示感谢。
计算机技术发展迅速,个人的力量和水平有限,在本书的编写中难免有不妥之处,欢迎广大读者批评指正。
卢有亮
2011年于电子科技大学