今天,差不多每个电子设备的设计都要用到嵌入式系统。嵌入式系统藏在我们的手表里,录像机里,微波炉、手机、呼机里;军事上使用嵌入式系统为导弹制导、侦察敌方的飞机;没有嵌入式系统,通信卫星、空间探测和现代机械也就无从谈起。每个嵌入式系统都是独特和高度专用的。因此,嵌入式系统编程涉及很广,需要长期的实践才能熟练掌握。但是,如果你有编程经验,熟悉C/C++语言,本书简洁明快的风格,大量来自实战的专家建议,将帮助你快速登堂入室。\r\n 本书中的技术和范例代码均可直接应用于各种实际的嵌入式系统项目。有过嵌入式系统开发经验的读者,也将从中获益匪浅。本书内容包括:快速有效的测试存储器芯片、如何写入和擦除快闪存储器、用循环冗余校验码验证非易失性存储器数据、与芯片的内部外设和外部外设接口、设计和实现设备驱动、优化嵌入式软件、最大限度高性能的应用C++特性。\r\n 本书适用于嵌入式系统程序员、设计师和项目管理人员。
前言\r\n\r\n第一章 引言\r\n\r\n什么是嵌入式系统\r\n各种实现间的差异\r\nC:最基本的必需品\r\n关于硬件的一些说明\r\n\r\n第二章 你的第一个嵌入式程序\r\n\r\nHello,World!\r\n闪烁程序\r\n无限循环的作用\r\n\r\n第三章 编译、链接和定址\r\n\r\n创建过程\r\n编译\r\n链接\r\n定址\r\n创建闪烁程序\r\n\r\n第四章 下载和调试\r\n\r\n在ROM中的时候\r\n远程调试器\r\n仿真器\r\n模拟器和其他工具\r\n\r\n第五章 接触硬件\r\n\r\n理解全貌\r\n检查一下环境\r\n了解通信过程\r\n接触处理器\r\n研究扩展的外围设备\r\n初始化硬件\r\n\r\n第六章 存储器\r\n\r\n存储器的类型\r\n存储器的测试\r\n验证存储器内容\r\n使用快闪存储器\r\n\r\n第七章 外围设备\r\n\r\n控制和状态寄存器\r\n设备驱动原理\r\n一个简单的时钟驱动\r\n修改后的闪烁程序\r\n\r\n第八章 操作系统\r\n\r\n历史和目的\r\nADEOS\r\n实时特征\r\n选择过程\r\n\r\n第九章 合成一个整体\r\n\r\n应用程序的概述\r\n闪烁指示灯\r\n打印“Hello,World!”\r\n利用串行端口\r\nZilog 85230串行端口控制器\r\n\r\n第十章 优化你的代码\r\n\r\n提高代码的效率\r\n减小代码的大小\r\n降低内存的使用\r\n限制C++的影响\r\n\r\n附录 Arcom的Target188EB\r\n参考书目\r\n词汇表\r\n\r\n
今天,几乎所有电子设备里面都包含了嵌入式的软件系统。这些软件隐藏在我们的手表里、录像机里、蜂窝电话里,甚至可能在烤面包机里面。军事上会使用嵌入式软件来引导导弹,侦测敌方的飞行物。外太空探测器和许多医疗仪器离开嵌入式软件几乎不可能工作。
设计人员不得不写所有的代码,实际上,成千上万的电子工程师、计算机科学家和其他专业人员正在这样做。我也是其中的一员,从我的个人经验来说,我很清楚掌握这门技术是多么的困难。学校里从未开设有关嵌入式系统的课程,而我也没能从哪个图书馆里找到一本有关这个题目的像样的书。
每一个嵌入式系统都是独特的,其硬件部分对它的应用目标来说是高度专用的。这就导致了嵌入式系统编程的涉及面很广,而且可能会需要很多年才能掌握它。不过,几乎所有的嵌入式软件开发都使用了C语言。这本书就是要教你怎样在嵌入式系统中使用C和C的派生语言,C++。
即使你已经知道如何编写嵌入式软件,你还是可以从这本书里学到很多东西。除了了解如何更有效地使用C和C++,你还将会从本书中对常见的嵌入式软件问题的详细解释,并从本书所提供的源代码中得到益处。本书中包含的高级主题有存储器检测和验证、设备驱动程序的设计和实现、实时操作系统的内部机理,还有代码优化技术。
本书的组织
本书包括十章、一个附录、一个词汇表,还有一个带注释的参考书目列表。这十章恰好可以分为两个部分。第一部分包含第一到第五章,主要面向嵌入式系统的初学者。这些章节应该按照它们出现的次序完整地读一下,这将快速地带给你有关嵌入式软件开发的基础知识。结束了第五章之后,你就可以独立开发一些小的嵌入式软件了。
第二部分包括第六到第十章,讨论了不论有没有经验的嵌入式程序员都很感兴趣的一些高级主题。这些章节基本上各自独立,可以按照随意的次序来读。另外,第六到第九章包含的示例程序可能会对你将来的嵌入式系统项目有所帮助。
· 第一章“引言”。介绍嵌入式系统。其中定义了若干术语、给出了一些例子,并且说明了为什么选择C和C++来作为本书的编程语言。
· 第二章“你的第一个嵌入式程序”。引导你尝试用C语言编写一个简单的嵌入式程序的全过程。这比较类似于其他很多编程书籍里的“Hello,World”的例子。
· 第三章“编译、链接和定址”。介绍了一些软件工具,你将用它们来为一个嵌入式处理器生成可执行文件。
· 第四章“下载和调试”。介绍将可执行程序调入一个嵌入式系统的各种技术手段,同时也描述了你可以使用的调试工具和技术。
· 第五章“接触硬件”。描述了学习一个不熟悉的硬件平台的简单过程。结束本章后,你已经能够书写和调试简单的嵌入式程序了。
· 第六章“存储器”。讲解了关于嵌入式系统内的存储器你所需要知道的全部知识。这一章还包括了存储器测试和闪速存储器驱动程序的源代码实现。
· 第七章“外围设备”。说明了设备驱动程序的设计和实现技术,同时包含了一个通用外围设备(定时器)的示范驱动程序。
· 第八章“操作系统”。包含了一个可以用在任何嵌入式系统中的很简单的操作系统。这有助于你决定你是否需要这么一个操作系统,如果需要的话,是买一个还是干脆自己写一个。
· 第九章“合成一个整体”。进一步拓展前面章节学到的关于设备驱动程序和操作系统的知识。本章讲解了如何控制更复杂的外设,同时引入了一个完整的示范应用来把你学过的东西综合到一起。
· 第十章“优化你的代码”。描述了如何在增加代码运行速度的同时,减少你的嵌入式软件对存储器的需求。这包括使用一些技巧来利用最有效的C++特性,而不导致显著的性能损失。
在整本书里,我一直在努力在特定的例子和通用的知识之间保持平衡,也就是尽可能地消除微小的细节,使这本书更加易读。像我一样,通过阅读示例你会从这本书里得到最大的收获,但是应该只把它们作为理解重要概念的工具。记住不要陷在任何一个电路板或芯片的细节里面。在理解了全面的概念以后,你将能够把它应用在你所碰到的任何嵌入式系统中。