前言
我热爱嵌入式系统。当我第一次让马达转动时,我着迷了。我很快从单纯软件开发进入到我可以触摸真实物体的一个领域。在我离开软件开发的时候,设计模式注1开创性的工作已经完成。我和我的团队通读了这本书,讨论这些模式以及可以在哪儿应用这些模式。随着我进一步深入研究嵌入式系统,我发现不能处理C++继承的编译器,在处理器极其有限的内存中去实现模式,以及一系列新的问题使设计模式看起来难以应用。但是我从来没有忘记在工程化方法中存在着模式。通过学习识别模式,我们可以反复地使用这些健壮的解决方案。本书大部分内容着重于阐述在嵌入式系统开发中的标准设计模式,同时也给出了一些新的模式。而且,我还增加了一些章节,这些内容在绝大部分书里都找不到。
关于这本书
在研究了医疗设备、赛车、飞机、儿童玩具以及射击瞄准系统中的嵌入式系统之后,我发现了很多共性。如何为嵌入式系统设计和实现软件,要是那时候懂得很多就好了。本书包含了我所学到的知识。这是一本教授大家如何在资源受限的环境下设计优秀软件的书。
本书告诉你在应聘嵌入式系统开发工作时,了解面试官希望从你身上看到什么。每章的最后都会有一道面试题。这些题通常与具体的语言不相关,而是希望能启发你的思路。好的面试题一般都没有唯一正确的答案,因此我在每道面试题下面给出了提示,没有列举所有可能的答案,而是给出了面试官期望从你的回答中看到什么的一些提示。毕竟,你得凭借你自身的优势去获得工作(和答案)。
有一点需要说明,这里提到的嵌入式系统是没有操作系统的、运行在裸机上的软件。当软件发出打开灯的指令时,它直接向处理器发出而没有经过任何中间层。本书不讨论嵌入式操作系统,但是相关概念可以运用到运行操作系统的处理机上。因此,如果你深入研究,就可以了解操作系统底层的原理。运行在没有操作系统的环境下会让人真正体会并感谢操作系统为我们所做的一切。
本书给出了在设计嵌入式软件时通用的原型和原则。我并没有基于任何特定的平台、处理器、编译器或者编程语言,因为通过本书打下扎实的基础之后,转向特定的平台自然水到渠成。
目录
第1章 导论
1.1 编译器、编程语言以及面向对象编程
1.2 嵌入式系统开发
1.3 延伸阅读
第2章 创建系统架构
2.1 构建系统框图
2.2 从框图到架构
2.3 一个可以实践的沙盒
2.4 延伸阅读
第3章 检视硬件
3.1 硬件/软件集成
3.2 阅读数据表
3.3 处理器是一门语言
3.4 阅读原理图
3.5 调试工具箱(和灭火器)
3.6 测试硬件(和软件)
3.7 处理错误