本书通过一个完整的嵌入式系统设计全过程,向读者展示嵌入式系统的基本框架,以及设计、编程、调试等技术细节。书中详细讲述了嵌入式系统中的存储器、微处理器与微控制器、数据总线与地址总线等基本概念,以及在设计中要考虑的要素。另外还给出了关键程序的源代码,使读者通过本书学会如何看懂嵌入式系统的原理图,了解系统是如何工作的,掌握嵌入式系统开发平台的主要固件。本书适于从事嵌入式系统研发的技术人员以及高校相关专业的师生阅读。前言嵌入式系统是嵌入到其他产品内部的计算机。奇怪的是,虽然人们知道许多关于编程和计算机的知识,但却在神秘的嵌入式系统世界中感到迷惑。在嵌入式系统编程世界中,大量的细节(包括硬件和软件)使开发过程像是在探险,甚至感到“难于”生存下来。软件、硬件、固件到底有何区别?怎样将10万条程序嵌入到比指甲还小的器件中?什么是闪存?为什么需要高速缓存(cache)?任务和进程之间有什么区别?要不要考虑可重入性?在阅读这本《嵌入式系统固件揭秘》的过程中,读者将逐步了解这些问题,不再像起初那样感到迷惑。嵌入式系统编程覆盖了从最具体的底层编程到最抽象的高层UNIX编程的各个方面。它引起了近20年来工业界爆发的革命性变化。在20世纪70年代后期,汇编程序已被认为是够丰富多采了。一般的嵌入式系统可以使用小于64Kb(位,不是字节)的系统内存。没有什么硬件要留给固件开发者去处理。一般由同一个人完成画图、焊接样品、写固件,把所有的事拉拢到一起。当Intel公司引入8085芯片时,很明显那些复杂的微处理器还停留在这个水平上。在20世纪80年代,Motorola与Intel展开了CPU大战,C语言成为了少数敢于用高级语言编程并烧制EPROM的人普遍采用的编程语言。今天,微处理器随处可见,范围从在工业界占主导地位的4位和8位微处理器家族到1GHz的几乎需要冷却设备(当然也是由微处理器控制的)冷却的64位微处理器。多年来,这些系统的复杂度像滚雪球式的增大。工业界已经从在前台用二进制代码对DECPDP机器编程发展到给烤面包机的微控制器提供面向对象的设计。系统的发展速度非常迅猛,已有的微处理器、微控制器、RAM、DRAM、SDRAM、管道、超标量体系结构、EPROM、闪存、RISC和CISC、RAS、CAS及高速缓存等,也仅仅是一个开始。现在,从牙刷(不是开玩笑,是事实)到喷气式战斗机都由某种微处理器控制着。这种趋势自然产生许多工具和技术。这些可供选择的硬件(固件必须使用的集成电路)和软件(用于建立固件应用程序的工具)使人眼花缭乱。本书的目标是通过一个完整的嵌入式系统设计过程将你带入真正的嵌入式系统工程。而且,这个工程的源代码包括一些固件(一个嵌入式启动平台),可以简化你今后的工程。本书使用一个包括CPU、内存及一些外部设备的小硬件系统设计实例,给出了基本原理结构图并讲解如何将指令从内存中取出,同时也将讲到设备的概念。本书将讲述闪存与EPROM、SRAM与DRAM、微处理器与微控制器、数据总线与地址总线,还将讲述如何将C语言和汇编语言源代码转换成二进制映像,并装入设备存储器中以便在CPU引导(引导闪存)时使用。本书用几章的内容讲述启动嵌入式系统并执行一个应用程序(包括在汇编程序中的基本引导程序)的基本概念,先不涉及句柄、闪存驱动程序、闪存文件系统、串行和以太网连接等。这样可以使读者理解嵌入式系统工程如何启动、如何建立起支持嵌入式系统的平台。这些听起来让人兴奋吗?美妙吗?恐慌吗?事实并非如此。本书的目的并不是要讨论最新出现的超标量体系结构和在印刷电路板上的铜线所产生的天线辐射效果,也不想涉及高级的抽象设计过程(高级的体系结构和传输线的效果固然重要,但这些不是本书的主题)。本书是面向那些不想被一大堆工业行话和特殊技术细节所烦恼的、又想尽快了解系统的读者撰写的。读完本书,读者将学会如何看原理图、了解引导闪存器件是如何工作的、掌握完整的嵌入式系统开发平台的主要组件。本书的本书的读者应有一些C语言编程经历和基本的汇编语言概念。本书并不要求读者有电子技术或硬件知识背景。因此,只要读者有一些编程知识背景将会发现本书大有益处。计算机科学或电子工程专业方面的学生不需要有固件开发的背景,只要有兴趣,就可以从本书中获益。初级固件开发者将发现本书中的例子很有帮助,因为本书中的例子包括文档和代码注释,可以将其扩展到固件开发平台。书中将详细讲解引导新硬件和CPU与外部设备的交互方式。涉及到从小文件传输协议(TrivialFileTransferProtocol,TFTP)到以太网的底层引导过程。读者可以将本书中的代码或一部分代码引入到自己的固件平台中。硬件开发者将发现本书讲述的平台有助于在复杂的CPU上分析并调试硬件,也会出于好奇,将注意力从硬件上转到学习固件过程上。本书提供了不脱离硬件而进入固件学习的起点(硬件设计者会自然地过渡到固件/软件的编程世界中)。项目主管也会发现本书非常有用,因为这里呈现的固件包是一个成熟的平台。这个平台可广泛地应用到实时操作系统(RTOS)和目标体系结构中,而且很容易放到新系统中。这个平台是面向目标的,且独立于RTOS,这使得它很容易转到各种目标或RTOS系统中。浏览本商品所属分类图书计算机/网络计算机理论