本书通过一个冬季旅游胜地自动化管理项目实例,从软件、硬件和接口的观点介绍嵌入式Linux。引入项目需求后,作者讲述了开发环境的建立,接着用一系列软硬件接口实例展示了如何使用异步串行通信、PC并口、USB、内存I/O、同步串行通信以及中断,等等,最后介绍了将前面所有的工作有机地组织在一起的系统集成过程。本书以实际应用为导向,书中整个项目的实施过程和软硬件接口实例都极具实践指导意义。
\r\n 本书实用易读,适合硬件工程师、软件开发人员、系统集成人员或产品经理以及其他研究嵌入式Linux应用的人士阅读。
第1章 嵌入式Linux简介 2\r\n 1.1 为什么Linux广受欢迎 2\r\n 1.2 什么是嵌入式系统 3\r\n 1.3 什么是实时 3\r\n 1.4 开放源代码的含意 4\r\n 1.5 小结 5\r\n 1.6 补充读物 5\r\n第2章 系统体系结构 6\r\n 2.1 开拓者项目简介 6\r\n 2.2 Silverjack度假胜地的布局 7\r\n 2.3 开拓者项目的需求 8\r\n 2.4 开拓者项目的系统体系结构 10\r\n 2.5 小结 11\r\n第3章 选择平台和安装工具集 12\r\n 3.1 信息来源 12\r\n 3.2 开拓者项目的战略方向 13\r\n 3.3 构建tbdev1—嵌入式Linux开发工作站 14\r\n 3.4 小结 44\r\n 3.5 补充读物 44\r\n第4章 引导Linux 45\r\n 4.1 目标机的平台引导需求 45\r\n 4.2 Linux的引导过程 46\r\n 4.3 Linux的根文件系统 47\r\n 4.4 创建根文件系统 61\r\n 4.5 安装TFTP服务器 66\r\n 4.6 安装minicom 67\r\n 4.7 引导Embedded Planet RPX-CLLF 67\r\n 4.8 引导Brightstar Engineering MediaEngine 73\r\n 4.9 引导Tri-M MZ104和带闪存IDE驱动器的COTS PC 78\r\n 4.10 不同引导方式之间的比较 85\r\n 4.11 小结 86\r\n 4.12 补充读物 86\r\n第5章 调试 87\r\n 5.1 gdb简介 87\r\n 5.2 本机调试 88\r\n 5.3 远程调试 91\r\n 5.4 通过网络挂装根文件系统 94\r\n 5.5 小结 99\r\n 5.6 补充读物 99\r\n第6章 异步串行通信接口 102\r\n 6.1 开拓者项目的异步串行硬件开发环境 102\r\n 6.2 Linux串行通信 103\r\n 6.3 小结 114\r\n 6.4 补充读物 115\r\n第7章 并行接口 116\r\n 7.1 使用并口进行控制 117\r\n 7.2 使用端口I/O控制标准并口 120\r\n 7.3 使用ppdev控制标准并口 125\r\n 7.4 开发定制的设备驱动程序 128\r\n 7.5 使用定制设备驱动程序liftmon_snowcon控制标准并口 135\r\n 7.6 小结 149\r\n 7.7 补充读物 149\r\n第8章 USB接口 150\r\n 8.1 什么是USB 150\r\n 8.2 开拓者项目的USB硬件 152\r\n 8.3 小结 164\r\n 8.4 补充读物 164\r\n第9章 内存I/O接口 165\r\n 9.1 硬件设计过程 165\r\n 9.2 为MediaEngine开发缆车监测和造雪设备控制功能 166\r\n 9.3 为RPX-CLLF开发缆车监测和造雪设备控制功能 184\r\n 9.4 小结 202\r\n 9.5 补充读物 202\r\n第10章 同步串行通信接口 203\r\n 10.1 温度测量和显示 203\r\n 10.2 SPI通信与LM70 204\r\n 10.3 与飞利浦SAA1064进行I2C通信 219\r\n 10.4 小结 234\r\n 10.5 补充读物 235\r\n第11章 使用中断计时 236\r\n 11.1 Linux计时源 236\r\n 11.2 测量中断响应时间 237\r\n 11.3 比赛计时器的实现 256\r\n 11.4 小结 269\r\n 11.5 补充读物 269\r\n第12章 系统集成 270\r\n 12.1 系统集成概述 270\r\n 12.2 安装系统集成应用程序 271\r\n 12.3 创建并测试开拓者项目的数据库 275\r\n 12.4 开发目标机和CGI集成脚本 278\r\n 12.5 小结 292\r\n 12.6 补充读物 293\r\n第13章 最后的思考 294\r\n 13.1 GUI开发 294\r\n 13.2 实时能力 294\r\n 13.3 嵌入式厂商简介 295\r\n 13.4 开拓者项目的硬件 296\r\n 13.5 小结 297\r\n 13.6 补充读物 297
这是一个令人激动的时代。互联网技术的高速增长已经改变了信息这一概念。人们每天24小时依靠网络设备进行商务和个人的活动。随着时间的推移,这种依赖的程度还将进一步增长。当今的网络设备,例如服务器、路由器和桌面计算机,构成了互联网的基础体系结构。未来的设备将能控制房间的温度,维持商业库存水平并监控汽车交通状况。每年生产的处理器中只有几十亿进人了桌面或服务器计算机,余下的处理器监视和控制着世界的其他方面。
个人和商业都需要智能和联网的设备来改善人们的生活和效率。这些设备必须易于操作、可靠而且价格低廉。这正是Linux流行的原因。技术的进步加上有竞争力的价格,使Linux能够从桌面和服务器环境转移到嵌人式设备中。Linux较为可靠并提供丰富的功能,而且是开源代码,具有公认的良好记录,这些特色使之非常适合于嵌入式系统。本书将介绍创建一个嵌人式Linux基础环境的相关信息,然后读者就可以在自己的设计中扩展该基础环境。
本书的好处
当我开始研究本书的相关资料时,我以为在线的嵌入式Linux信息与其他的Linux信息一样——非常丰富,而且文档也应该很全面,但我很快发现,这样想是错误的。实际上,嵌人式Linux的文档稀少、零散、不完整而且有些过时。这是令人沮丧的,但同时对我也是一种激励。因为一方面可能缺少足够的信息,但另一方面也说明了本书的必要性。人们正在用Linux设计嵌入式产品,信息和知识也已存在,只是没有集中起来而已。
作为一名教师,我确信在有相应的实例时,学生能够最好地理解和记住所学理论的概念和思想。当学生看到一个概念付诸实施时,无论是一次机械臂的移动,一次电压表的读取,还是一个示波器波形,他们很可能就在稍后用这一概念解决自己的问题。为此,本书引用大量逐步的实例。借助它们,读者能够将所学知识应用到自己的设计中。
本书内容
本书包括一系列完整的真实世界的接口实例,它们用来从硬件和软件的观点介绍嵌入式Linux。创建一个嵌入式Linux开发环境之后,将逐步介绍每一个硬件和软件的接口实例,包括使用异步串行通信、PC并行端口、USB、内存I/O、同步串行通信以及中断等等。稍后将使用系统集成将所有的接口实例整合在一起。这些素材都是通过一个称为开拓者项目(Project Trailblazer)的冬季度假胜地自动化工程展示的。可以在www.embeddedlinuxinterfacing.com上找到本书的源代码和脚本。
下面简要概述每一章。
第1章阐述了Linux作为—个嵌入式操作系统的历史,以及在产品设计中使用开源软件的意义。
第2章介绍一个称为开拓者项目的冬季度假胜地自动化工程,规划出一系列的项目需求。该项目及其需求构成了本书中接口实例的基础。
第3章介绍平台选择的过程。工程师选中了4个目标机,使用x86、StrongARM和PowerPC处理器。随后讲解如何创建名为tbdevl的嵌入式Linux开发工作站。全部开发工具都要安装或编译,包括用于StrongARM和PowerPC处理器的交叉编译工具链。
第4章介绍从加电到出现bash提示符的Linux引导过程。每一个目标机均以Linux 2.4版本引导,使用最小的根文件系统。
第5章介绍如何配置gdb和gdbserver,从而通过以太网对目标机进行调试。一个交叉编译版本的helloworld将远程执行和调试。
第6章讲述用于控制端口信号和缓存的Linux串行端口设备驱动。一个RFID标签阅读器、一个LCD显示器及其控制电路连接到Linux串行端口。
第7章讲述AC电路到x86目标机并行打印端口的连接。此外,还介绍了使用巾roc目录项、名为helloworld_proc_module的自定义设备驱动。
第8章讲述用于可视输入及音频输出的摄像头和扬声器到目标机的USB端口的连接。
第9章讲述AC电路到StrongARM和PowerPC目标机的CPU总线的连接。
第10章讲述SPI和12C连接和通信。连接一个低成本的SPI温度传感器和I2C LED显示驱动器到目标机。
第11章讲述Linux的时间调配机制以及每个目标机的平均中断响应时间的测量。开发出一种精确到1ms的事件计时器,用于测量赛事时间。
第12章讲述开拓者项目数据库的创建。首先开发出目标系统和服务器的bash脚本,使用该数据库进行温度、图像和认证数据的收集和分发。
第13章总结接口工程并讨论本书其他章节未涉及的嵌入式Linux主题。
读者对象
硬件工程师、软件开发人员、系统集成人员或产品经理,以及正在研究嵌入式Linux接口应用的人员,都适合阅读本书。书中所有的接口实例都很简单,只要对数字逻辑设计、C和bash编程以及Linux系统管理有基本常识即可理解。