章节简介

本书各个章节尽可能地保持独立,基本上是以嵌入式系统项目生命周期的各个阶段来区分的。全书的主轴为一个在电子产品开发领域中经验丰富的项目经理,与其团队中的研发主管们,带着刚毕业的菜鸟进行嵌入式系统开发的历程。嵌入式系统开发的观念与经验都融入在项目经理与菜鸟的问答之中,再加上许多实际工作上发生的案例,读者可对嵌入式系统开发实务有更透彻的认识。

本书共分12章,基本上是按照嵌入式系统开发项目的生命周期排序;除了第1、2章之外,其他章节基本上保持独立,读者可选择有兴趣的章节先看,书中在必须参考到其他章节的地方都会详加注明。但作者仍建议第一次还是从头读起为佳,就像嵌入式系统开发项目必须按部就班来一样,总不能设计阶段还没做完,就开始忙着实作吧!

第0章,系统、嵌入、硬件:主题为嵌入式系统概论,内容包含嵌入式系统的定义与特性,还介绍了几本值得一读的参考书籍,最后说明一位好的嵌入式系统从业人员应具备的基本职业技能。

第1章,嵌入式系统项目的生命周期(上)——激活与规划阶段:第1、2章介绍嵌入式系统开发项目的生命周期,读者会发现业界的实际状况与软件工程、项目管理教科书中确实存在着差异。本章的内容包含嵌入式系统开发项目简介、项目开始之前的规划评估,以及项目初期的规划工作,其中包括进程、规格、人力及成本规划等。

第2章,嵌入式系统项目的生命周期(下)——设计、执行与结案:描述嵌入式系统开发项目中的设计阶段、执行阶段与最后的结案阶段,其中对设计阶段有较深入的描述,包括产品规格、硬件设计、系统设计、测试计划设计以及风险评估等。

对项目管理较没兴趣者可先跳过第1、2章,或可先快速读过,待全书读完后再回头来看一次,应当会有更多的体会与收获。笔者在此要强调的是:千万不要认为自己只是个工程师就不必学习项目管理的观念,以台湾省业界的环境来说,很难有人可以做一辈子的工程师,如果想在职业生涯更上一层楼,除了弄清楚产品的开发流程外,具备项目经理的视野与职业技能也是相当重要的一件事。

第3章,震撼教育——第一个嵌入式系统:实际描述一个嵌入式系统的开发流程。虽然目的只是让硬件板子上的一个LED闪烁,但却已是一个具体的嵌入式系统了。本章包含开发嵌入式系统程序的步骤与注意事项,除此之外,对计算机系统的运行原理有深入的探讨。

第4章,嵌入式系统平台设计:所谓的嵌入式系统平台就是让电子产品的“应用程序”得以顺利开发的环境,它不只是软件或硬件的概念,而是一个稳定的环境,在这个环境下,负责应用程序开发的工程师可以将心力放在产品功能的实现,以及改善其品质与效能上。本章内容包含嵌入式系统平台的定义、系统架构设计、API与程序风格设计、嵌入式操作系统简介、source tree设计及程序风格典范等。

第5章,建构嵌入式系统开发环境:描述何谓嵌入式系统开发环境以及为什么要建构嵌入式系统开发环境。内容包含嵌入式系统开发工具(cross tool)简介、makefile与link script的观念与写法、何谓ROM maker、如何将程序下载到机器上并执行,以及版本控制server的重要性。最后举一个实际发生过的案例,说明建构所谓嵌入式系统开发环境的重要性。

第6章,上电之后——boot loader:描述机器上电后,如何让CPU可以正确执行到我们的程序,以及开机后系统该做的初始化动作。本章内容包括第一行程序如何被执行、基本硬件测试,以及如何加载程序段与初始化数据段等细节。本章最后提了一下目前最热的NAND Flash,描述了NAND Flash booting的工作原理及注意事项。

第7章,驱动程序:有些人会认为嵌入式系统开发几乎就是在进行驱动程序开发,这当然是错误的观念。驱动程序仅是嵌入式系统中的一环而已,但一般软件工程师总会对驱动程序开发怀着莫名的恐惧。本章首先陈述驱动程序开发并没想象中困难,接着描述驱动程序开发之前的准备工作,其他内容包括如何控制CPU、如何控制内存与其他IC、撰写中断处理程序的注意事项,以及如何为驱动程序除错。

第8章,内存管理:内存管理是嵌入式系统开发中相当重要的一环,本章的内容包括内存空间配置,stack与heap在嵌入式系统中的应用,最后提到可将程序或资料写入EEPROM或Flash的烧录器。

第9章,仿真器:嵌入式系统的开发环境通常十分昂贵,不可能给每位工程师都配上一套,再加上项目初期可能没有足够的硬件平台可供应用程序开发之用,所以在嵌入式系统中仿真器的功用是很大的。本章首先介绍何谓仿真器,接着说明emulator与simulator的差别,以及仿真器对嵌入式系统开发项目的贡献是什么,最后列举了许多如何在PC上仿真实体机器装置的实例。

第10章,系统整合:大部分的应用程序会先在仿真器上开发,而驱动程序与部分的系统功能则必须在真实机器上才能验证。当底层平台已趋稳定,就可逐一将应用程序移植到实体机器上执行。本章的内容包含进行第一次整合的最佳时间点、导致整合失败的原因、开发流程重新检讨,以及程序移植时的注意事项。整合完毕后就可以发行正式版本,在本章的最后则会提到bug管理系统。

第11章,testing、debugging和tuning:当程序交付测试后项目就进入了测试、除错与调整时期。本章包含测试、除错与调整三大主题,详细内容包括嵌入式系统的测试概论、bug的管理原则、debug基本技巧、如何进行系统效能的最佳化。

第12章,结案前的煎熬:介绍结案之前的工作项目,包含版本发行、介绍生产线专用的自动测试程序、如何决定量产版本、出货不等于结案的怪现象结案相关事宜等。

附录:附录中总共有4个主题:没有执行项目管理程序的开发案会有什么状况、解释何谓callback function、如何用C语言实现对象导向的观念,以及介绍一个效率极佳的画斜线算法。