本书特点
嵌入式系统软件开发是目前信息技术领域非常具有发展前景的方向之一。随着微电子技术、计算机技术等的飞速发展,目前基于32位嵌入式微处理器的计算机应用正处于迅猛发展的时期。然而,相关的嵌入式软件的开发却远远滞后于硬件的发展,尤其是精通嵌入式系统软件开发的人才在世界范围内,尤其是在国内还很稀少。这主要是由以下一些原因造成的: 第一,开发嵌入式系统软件一般需要嵌入式硬件设备的支持,而对于初学者(特别是学生)而言,购置嵌入式硬件设备的开销较难以承受。第二,目前在学习嵌入式系统开发的过程中,大多缺少比较全面的实践过程,大部分读者只停留在对书本所介绍的知识的了解阶段,导致实际动手能力较差和缺乏实践经验。第三,在台式机和服务器领域,主流软件开发基本上围绕着Intel x86 CPU,以及Microsoft的Windows平台或Linux平台,而目前在嵌入式领域,各种嵌入式系统千差万别,没有一个占绝大多数的开发平台,这导致初学者很难选择一个利于入门且资源丰富的开发环境。
针对上述问题,我们通过嵌入式系统开发的实践过程,总结出嵌入式系统开发需要掌握的知识和经验,编写了这本书。与以往单纯介绍嵌入式系统知识的丛书相比,本书更注重实践性,它具有如下一些特点:
第一,本书提供了模拟嵌入式环境的仿真开发平台——SkyEye,使得读者在没有嵌入式硬件的情况下,只要有一台PC机,就可以通过SkyEye硬件模拟平台进行嵌入式软件的学习、调试与开发,从而可以真正从实践中了解和掌握嵌入式系统的开发知识。
第二,在各式各样的32位嵌入式CPU中,基于ARM CPU内核的嵌入式微处理器所占的比例是最高的,而且它基于RISC架构,利于学习和掌握。为此,本书选择基于ARM CPU内核的嵌入式系统作为我们研究、移植和开发的CPU核心,提供了多达6种基于ARM CPU内核的常见开发板的操作系统和相关系统软件的分析和移植过程,包含了许多开发者宝贵的移植方法和经验。
第三,本书选择μC/OSⅡ和Linux作为我们研究的嵌入式操作系统。前者是一个简单易懂的实时嵌入式操作系统,目前被国内多所大学用于教学和科研。尤其是在清华大学的邵贝贝教授翻译了Jean J.Labrosse所著的《μC/OSⅡ:the Real Time Kernel》一书之后,更是推动了μC/OSⅡ和嵌入式操作系统学习在中国的普及。至于Linux,它是功能强大的操作系统,横跨了服务器、台式机和嵌入式系统3个硬件领域,是全世界的电脑爱好者共同的智慧结晶。它们都是开放源代码的,因此读者可以深入地分析和了解它们的实现细节,从而可以更深入地了解嵌入式操作系统的核心技术,而这是其他一些商业操作系统无法比拟的。
第四,本书选择基于GPL协议和Open Source协议的高质量软件——GNU Tools作为我们的嵌入式开发工具,本书介绍的操作系统和系统软件实例都是用GNU Tools开发的。目前许多人认为基于命令行的GNU Tools软件不好用,质量没有保证,愿意使用一些商业开发工具软件,例如Microsoft的Vistual Studio等。而我们认为,如果要开发面向嵌入式领域的系统级软件或操作系统,选择GNU Tools有很多优势。目前GNU Tools支持的嵌入式CPU种类是最多的,远远超过其他的嵌入式开发工具。而且目前还有多种高质量的IDE集成开发环境都支持GNU Tools,这样
开发人员也不需要直接使用基于命令行的GNU Tools。掌握了GNU Tools,就可以以不变应万变。
第五,本书配有光盘,光盘上有本书介绍到的各种硬件文档、嵌入式软件开发工具、嵌入式操作系统和本书作者实现的软件实例。读者在阅读本书的时候,可以参考相关的硬件文档,并通过光盘提供的软件进行实践。
内容组织
本书由基础篇和实践篇构成,第1章~第7章为基础篇,主要以我们在嵌入式领域的开发经验为指导,介绍了在嵌入式系统开发过程中需要使用的各种开发工具和开发技巧,为下一步在具体的硬件板上进行开发打下基础。第8章~第12章为实践篇,主要介绍了在各种具体的开发板和SkyEye上移植、运行和调试操作系统和系统软件的过程。具体内容如下。
基础篇
1 第1章介绍嵌入式系统的基本知识和嵌入式开发的简要过程。
2 第2章讲述GNU Tools的使用,特别是ld、gcc、gdb、make的使用细节。
3 第3章讲述SkyEye嵌入式系统模拟环境的具体实现以及扩展和使用SkyEye的方法。
4 第4章介绍Boot Loader的基本概念和框架结构,特别对Armboot和RedBoot进行了深入的分析。
5 第5、6章讲述μC/OSⅡ和Linux的基础知识、移植这两种操作系统的基本方法、文件系统的基本知识和安装方法以及对相关应用的移植分析。并讲解了如何使用SkyEye运行面向具体开发板的操作系统和应用。
6 第7章讲述嵌入式系统的硬件调试、软件调试等,包括基于JTAG方式的JTAGER调试、GDB远程调试、KGDB远程内核调试、KDB内核调试、printk调试方式等多种技术。
实践篇
7 第8章以基于Intel StrongARM CPU的开发板为例,全面详细地讲解对μC/OSⅡ和ARM Linux的移植过程和方法。从而让读者对嵌入式系统软件开发过程有一个全面和比较细致的了解。
.8 第9、10、11、12章分别以基于Samsung s3c4510、Samsung 44B0、Atmel AT91X40、Intel XScale PXA 255、Cirrus Logic EP7312等CPU的开发板为例,详细讲解μC/OSⅡ、μClinux或ARM Linux的移植过程和方法。部分章节还讲解如何使用SkyEye来模拟相关的硬件,并在其上运行和调试操作系统。
阅读建议
为了更好地阅读本书,我们希望读者熟悉C语言,对计算机体系结构、ARM体系结构和汇编指令有一定的了解,能够掌握Linux的基本使用方法。由于本书中部分内容与硬件相关,为此我们在提到特定硬件时,给出了必要的相关信息。同时随本书提供的光盘中有更详细的硬件相关文档,有助于读者更深入地分析相关硬件。
本书的大多数实验都是在Linux上运行的,所以熟悉使用Linux是能够实践本书讲解内容的基础。如果您是嵌入式系统的初学者,建议先看看附录,学习Linux的常用命令。如果读者从未使用过Linux,建议先利用VMware for Windows软件在Windows操作系统上安装一个Linux操作系统,然后在VMware环境下的Linux操作系统中学习基本的Linux使用方法。建议读者一边看本书,一边参照本书的内容在Linux系统上进行各种实践。如果没有真实的开发板,则可以用SkyEye代替开发板进行实践。
如果你已经熟悉了Linux环境,建议的阅读顺序为:先读第1章,了解嵌入式开发的基本知识,然后阅读第2、3章了解嵌入式开发的一些常用软件工具,之后阅读第5章和第9章中有关μC/OSⅡ的部分,这样就可以用GNU Tools软件和SkyEye软件来编译、调试和运行第5章和第9章中介绍的μC/OSⅡ。
如果你对嵌入式系统有一定的了解,可能就不需要读第1章。对于适合初学者阅读的其他部分,可根据具体情况选择阅读和实践。然后,读者可阅读第6章,掌握移植Linux的基本方法。接下来,阅读第4章可以了解BootLoader的基础和典型BootLoader的具体实现。阅读第7章可以学习到许多比较有深度的调试技术,对于操作系统级或系统软件级开发很有帮助。第8章对如何在具体开发板上移植操作系统和应用进行了详细讲解,然后读者可以根据具体的兴趣和要求,参看从第8章~第12章介绍的在各种具体开发板上移植操作系统和应用。注意,在阅读本书的同时,可通过GNU Tools软件和SkyEye软件进行实践。
作者与论坛
参与本书写作的有陈渝(SkyEye项目发起人)、李明(清华BBS嵌入式系统版版主)、杨晔(Intel中国上海研发中心工程师)、詹荣开(LinuxForum论坛Linux Driver版版主)、尹首一(清华BBS Xwindows版版主)、刘宇洪、王利明(大连理工大学BBS技术主管)、谢军、焦振强、宋磊、苏杭、许拥军、高崝。冯刚、殷庆轩、尹文超、康烁、王华勇、布和等也参与了本书的完善工作。全书由陈渝统稿。
虽然本书作者认真地对本书进行了检查,但本书中难免还会有错误或笔误。我们欢迎讨论和指正,大家可以给yuchen@tsinghua.edu.cn发email告诉我们书中还存在错误。我们在SkyEye网站http://www.skyeye.org上设置了错误纠正网页,会即时公布错误纠正信息。同时我们在SkyEye网站上设立了一个论坛,欢迎大家就书中的问题或嵌入式开发方面的情况进行交流。
致谢
下面是参与SkyEye开发的人员,SkyEye的发展和壮大有他们的汗水和心血,本书的内容中也有他们的成果。目前参与开发SkyEye的人员有: 陈渝、李明、杨晔、王利明、尹首一、刘宇洪、康烁、尹文超、曾益、谢军、焦振强、王宇轩、王曦、肖贺、Simone Zinanni、Trilok Soni等。
下面是帮助过SkyEye开发的单位和个人: AKA embedded 兴趣小组提供了嵌入式学习的场所和工具;北京理工大学的马忠梅老师和她的学生叶楠、MiniGUI项目的开发者魏永明对SkyEye的LCD模拟开发提供了大量的帮助;gro.clinux.org网站为SkyEye提供了类SourceForge分布式协同开发环境;www.linuxfans.org网站提供了SkyEye的论坛;中国科技大学的qsluo设计了SkyEye的网站;Intel中国公司、ARM中国公司、周立功单片机发展公司、思创嵌入式开发小组提供了多种嵌入式开发板给SkyEye开发小组。
感谢北京理工大学的马忠梅老师和清华大学的邵贝贝教授,正是他们的建议和帮助,促成了本书的面世。同时感谢北京航空航天出版社的编辑人员,由于他们高效的工作,才使得本书能够及时与读者见面。
陈渝
2004年5月