前言
当前,嵌入式计算机已经形成一个规模庞大的产业,嵌入式产品遍及天空、陆地和海洋,市场对各类嵌入式产品提出了巨大的需求,一方面促进了嵌入式技术的进一步发展,另一方面也导致需求和供给之间的矛盾,体现为嵌入式人才的巨大缺口,这是呈现在高校计算机教学领域的严峻课题。
本书作者自2005年以来,一直在大连理工大学软件学院讲授“嵌入式系统程序设计”课程,教学内容为介绍基于ARM处理器/嵌入式Linux操作系统的C语言程序设计方法。开课伊始,遇到了教材缺乏的困难。当时图书市场中介绍嵌入式系统的书籍较多,大体可以分为4类: 嵌入式系统概述性质的书籍;从硬件角度讲解ARM处理器体系结构及汇编语言程序设计的书籍;各种介绍其他体系结构嵌入式处理器的书籍,例如8051、龙珠处理器等;介绍嵌入式操作系统的书籍,例如uC/OS Ⅱ、VxWorks等。仅有的几种嵌入式程序设计类书籍,内容全部基于8051单片机,描述C51程序设计。在图书市场中,没有一本介绍基于32位ARM处理器/嵌入式Linux操作系统的C语言程序设计的书籍。不但如此,当时国内各个高校,也几乎没有开设“嵌入式系统程序设计”类似课程的先例。在这种情况下,笔者萌发了编写一本教材的想法。在各位同行的帮助下,一边学习,一边总结摸索,通过搜集大量资料,结合自身在实验设备上的各种尝试,逐步设计出了课程的教学大纲和教学课件,然后在授课过程中根据学生的反馈意见不断完善授课内容,经过几年的磨砺,最终形成了一套比较稳定的教学资源。2008年春,清华大学出版社来我院开办书展,经过和出版社梁颖编辑协商,决定把几年来的教学资料加以整理,编写一本专门教材,这就是本书诞生的经过。
本书正文部分内容共7章: 第1章介绍一些背景知识,力争使读者建立起嵌入式系统程序设计的完整概念; 第2章介绍一些前导知识,包括ARM体系结构、Linux操作系统、本书相关硬件平台等内容,有基础的读者可以跳过此章; 第3章介绍C语言在嵌入式系统中的应用; 第4章介绍GNU开发工具链,这部分知识适合于本地开发环境和交叉开发环境; 第5章介绍基于ARM7处理器的uCLinux系统的建立和程序设计步骤,包括驱动程序设计等; 第6章介绍基于ARM9处理器的ARM Linux系统的建立以及图形用户界面的移植过程; 第7章以一个运行于ARM9/Linux平台完整实例的介绍作为本书正文部分的结尾。本书还包含5个附录,介绍具体硬件平台相关的操作步骤、知识点的背景常识等内容。
本书的大部分内容来自于作者的教学实践,另有部分内容参考了其他相关书籍以及网络上的资料,作者已尽量在参考文献中列出来源。由于本书编写过程漫长,且初期资料整理缺乏条理,因此有部分资料,现已无法找到准确的出处,在此向各位作者致歉,并请相关作者和本人联系。此外,本书的4.7、6.6小节部分内容分别来自于徐海兵和于强(大漠孤狼)两位网友,经他们允许编入本书,感谢这两位朋友及其他更多未曾谋面的老师和同行!
本书内容涉及的嵌入式平台为深圳英蓓特信息技术有限公司设计的Embest EduKitⅢ型教学实验平台。为了保持正文叙述的流畅性,在编写过程中,作者刻意把一些背景和细节内容安排到附录中,供没有基础的读者查询。书中的典型概念,第一次出现时都有对应的英文缩写以及英文全称,便于读者与英文原版教材接轨; 书中的所有代码,都经调试验证无误; 所有操作步骤,都有详细解释; 重要步骤有截图供参考; 如果读者采用相同的开发环境,可以顺利完成书中介绍的每一项操作。
本书的编写,历时将近3年,在这个过程中,得到了很多人的帮助,在此向大家致以衷心的感谢!首先感谢我的爷爷奶奶和父母家人,是你们教导我做一个正直的人,并引导我走上今天的人生道路; 其次感谢大连理工大学电信学院的王孝良、梁茵、王伟、刘全利老师,是你们把我带入了计算机知识的海洋; 感谢清华大学出版社,让本书的面世成为可能; 特别感谢深圳市英蓓特信息技术有限公司的黄日新、周麒、尹锐、梁华骥工程师为我提供的无私帮助; 感谢大连理工大学软件学院的惠晓丽、郭禾、周宽久、吴国伟、张政凯、惠煌等老师给我提供了一个宽松的工作环境; 感谢李守维、杨洋、陈铁仁、施元超、陈超卓、李丽坤等朋友在本书内容和校对方面的贡献; 感谢陈洁为本书编写付出的种种努力; 最后,也是最重要的,感谢我曾经的学生们和将来的学生们,是你们带给了我工作的乐趣和动力!
由于作者经验有限,加之时间仓促,书中不可避免会有很多不足之处,恳请读者不吝批评指正。所有关于本书的意见,请发送电子邮件到armprogram@gmail.com信箱,希望在和读者交流的过程中能有所裨益。
编者2009年3月于大连