共3条
1/1 1 跳转至页
《嵌入式系统编程源代码解析》--嵌入式初学推荐!
[upload=gif]uploadImages/20031221174068724.gif[/upload]
=======
内 容 简 介
随着工业自动化的来临,嵌入式系统越来越广泛地应用在各行各业中,对嵌入式软件的需求也日趋增大。与过去不同,开发嵌入式软件的工作正在变得更容易也更快速。本书主要介绍了嵌入式系统的基本概念、实际应用、硬件体系结构、软件开发环境和工具,并通过对大量示例的研究,提供了使用各种体系结构、硬件平台、操作系统、编程语言和开发工具来完成嵌入式软件开发的方法。本书还对嵌入式系统和嵌入式软件开发的未来趋势进行了讨论。 本书重点突出,语言简练,内容丰富,实用性强,适合具备一定C、C++和Java应用知识并且想要从事嵌入式软
件开发工作的软件专业人士使用,对于想要了解嵌入式系统的读者也具有启迪作用
========
前 言
在开始激动人心的嵌入式系统世界之旅的时候,先花点儿时间琢磨一下日常生活中在办公室和家里环绕在你周围的嵌入式系统的数量——打印机、传真机、手机、个人数字助理(PDA)、微波炉、电视机、机顶盒、数码相机、空调等等是很有意思的事情。很多人甚至没有意识到所有这些设备都装有一个嵌入了很多软件的处理器。这些嵌入式系统能够完成高度集中化和特定的工作。相反,桌面计算机只是能够用来编程以完成任何一般任务的通用机器。
随着工业自动化的来临,大约从20世纪60年代开始,嵌入式系统出现在所有的制造行业中,包括化工厂、汽车制造厂、核能厂、能源生产厂等等。每个工业部门—电信、银行、卫生保健、航空电子、汽车、食品加工、半导体电子、国防等等,为了实现自动化而广泛使用了嵌入式系统。显然,制造的微处理器几乎有90%都最终用在了嵌入式系统中就不会令人感到惊奇了。不言而喻,嵌入式软件的开发是目前非常有利可图的一件事情。
嵌入式系统的新趋势
由于近年来微电子技术的飞速发展,因而处理器速度增长非常快,而存储器成本迅速下降。其结果就是目前在嵌入式系统中发生了革命性的变化。最重要的进展是在网络化设备中。现在,可以使得嵌入式系统具备网络功能并将它们与Internet或企业内联网连接起来。这种特性增强了嵌入式系统多方面的实用性。例如,可以将Web服务器嵌入到任何设备中并将它与Internet相连,并可以通过桌面机上运行的浏览器远程监控该设备。这些网络化信息设备包括从简单的Web照相机到复杂的核能厂监控系统。甚至可以将家里的门锁变成一个能够远程控制的网络化设备。
在移动设备领域也取得了革命性的进展。使用蜂窝移动网络的移动设备不再仅仅用于语音通信。现在,移动设备使用第三代(3G)无线网络用于访问数据、语音和视频服务。与以前不同,移动设备现在是一种带有嵌入式操作系统和应用软件的强大工具。很多移动设备能够运行Java浏览器并能够下载Java applet(Java小程序)且在本地执行这些程序。这些设备还能够在本地存储数据库。此外,这些嵌入式系统拥有强大的计算和通信能力。现在,要感谢移动设备中嵌入式软件所发挥的功能,使我们在任何地点、任何时间的数据、语音和视频应用的通信成为现实。
再者,因为处理器处理能力的极大改善,很多原来只能在桌面计算机上运行的应用程序现在都能够在嵌入式系统上运行了,包括用于数据通信设备的协议转换器、路由器和网关,利用Internet基础设施提供低成本的远距离语音通信的VOIP终端、汽车导航系统等等。
另一个令人感兴趣的进展是在可穿戴计算机(wearable computer)中。正如其名称所暗示的那样,可穿戴计算机是一种可穿戴的嵌入式系统—它能够被塞进口袋中或是成为眼镜架的一部分。可穿戴计算机可当作秘书使用,能够识别表情,提醒用户约会等等。
所有这些发展导致了进入一个无形计算的时代,或者称作隐藏计算的时代,此时“计算机”完成必须的工作而没有普遍存在的和/或物理的外观。不断增长的设务数量——从门锁到导弹——都是能够远程监控或控制的嵌入式系统。
嵌入式软件开发的前景
上述发展导致了对嵌入式软件开发专业人才需求的增加。但是,与过去所认为的嵌入式软件开发更像“尖端科学”不同,现在嵌入式软件开发更加容易和快速。
在最近几年中,可用于嵌入式系统的处理器的数目增长很快。当今,可以得到8位、16位和32位的微控制器、微处理器和数字信号处理器,每种都满足市场的不同需求。另外,存储器成本持续下降,为嵌入强大的操作系统铺平了道路。现在,很多可用的商用实时和嵌入式操作系统对存储器要求很低,与以前开发人员自己编写操作系统内核相比,使得软件开发更加容易。
直到不久以前,嵌入式软件开发主要使用汇编语言来完成。随着交叉编译器的发展,C成为主要的开发语言。尽管C仍是嵌入式软件的重要编程语言,但现在像C++这样的面向对象编程语言也用得很广泛。面向对象编程语言的主要吸引力是可重用性——被用来减少开发时间。在过去的几年中,因为用于嵌入式编程的小台面Java虚拟机(Java Virtual Machines)和强大的API(Application Programming Interfaces,应用程序编程接口)的实用性,Java已经成为嵌入式软件开发中不可缺少的一种语言。因为在嵌入式系统中使用了各种各样的处理器和操作系统,所以Java的主要吸引力即平台无关性使得它最适合于嵌入式软件开发。
利用占用极少内存的操作系统的实用性,外加IDE(Integrated Development Environments,集成开发环境),将加快开发速度且利于调试,嵌入式软件开发不再是一项让人望而生畏的任务。新的开发工具使得在将软件放进嵌入式系统之前的测试越来越容易。此外,这些工具加快了开发周期并降低了开发人员对硬件需要深入了解的必要性。
对嵌入式软件开发人员的挑战
同样是这些因素——快速的开发周期和各种各样的处理器、操作系统、开发工具和编程语言的实用性——对目前的嵌入式软件开发人员提出了许多挑战。开发人员必须对设计方法有很好的理解,例如,如何选择处理器、操作系统、编程语言等等,因此能够在最短的时间内开发出价格合适的、可靠的嵌入式软件。另外,产品应该及时交付市场。这对处于起步阶段的嵌入式软件开发人员来说是一项充满挑战的任务。而且,仅仅只懂得一种处理器的体系结构或者一种编程语言是不够的。因为很多嵌入式系统都具备网络功能,对开发人员来说网络编程的应用知识也是很重要的。对嵌入式软件的需求贯穿了所有的应用领域——消费类电子、工业自动化、数据通信、有线通信、无线通信、航空电子、汽车工业等等。嵌入式软件开发人员必须意识到应用领域的差异性和每个领域的特殊需求。
本书的目的就是帮助嵌入式软件开发人员为迎接挑战做好充分准备,书中全面涵盖了编写嵌入式软件的各种方法,重点强调开发商业级的应用程序而不是理论知识。
本书内容
本书不是针对初学者的。书中只是讲述特定技术的基础知识。“编程源代码解析”丛书系列是为那些希望提高自己的编程技巧和了解编写商业级应用程序的秘诀的软件开发人员/程序员准备的。本书是在其他指南性质的书籍基础之上开始讲述的。因为学会了一种独特的技术,而使得读者的编程技巧更上一级台阶。本书的目标读者应该已经具备了C、C++和Java的应用知识,并且具有一定开发应用软件的经验。如果你想要将嵌入式软件开发作为自己的职业,或者已经做过一些嵌入式系统的编程工作而想要通过扩展编程技巧来开阔视野,那么本书就是为你准备的。本书也可作为嵌入式软件项目管理人员的必备参考手册,以帮助他们正确选择开发工具和了解嵌入式软件开发的过程。
肯定能够发现很多有关嵌入式软件的书籍。但是,很多书都使用某种特定的处理器来讲述嵌入式软件开发的,如果接触不到那种处理器的开发系统,就不能进行任何实验。一些书讲述了一般的概念而没有提供任何实际的代码,这将使得你只具有嵌入式软件的理论知识。
本书采用了一种完全不同的方法。即使你根本接触不到任何硬件开发系统,仍然能够通过对本书所提供的示例进行研究而获得实际经验。所有的应用程序都是经过精心挑选的,以便读者能够在桌面机上使用模拟程序或其他开发工具来运行它们。当然,实际使用硬件是有益的,但是即使没有相应的硬件,你也将对嵌入式软件的开发收益颇多。对可用的开发环境的全面评论使得本书的读者也扩大到了包括那些对嵌入式系统感到好奇的读者。
将来,嵌入式软件开发不仅使用C或C++来实现,也可以使用Java。因此,应当对使用每一种语言来进行嵌入式软件开发投入同等的时间。
嵌入式软件是使用各种各样的嵌入式和实时操作系统来开发的,比如Embedded NT,Windows CE,RTLinux等等。此外,有多种针对C、C++和Java的开发工具和IDE可以利用。读者将在这样丰富多采的环境中学习应用程序的开发。
目前,嵌入式软件为各种应用所需要——通信、数据库、信息设备、移动计算等等。本书将为这些不同的市场领域描述其典型应用。
每个提供了完整的源代码的项目都是具有重大实用价值的应用程序,并且对这些应用程序的很好理解肯定会使你成为一个拥有丰富编程技巧的专业嵌入式软件开发人员。尽管应用领域、开发环境和工具之间存在差异,但本书所讲述的嵌入式系统具有软件开发的诸多共性。本书集中讲述这些共性以便读者能够拓宽其编程技巧,并且在快速发展的行业所带来的挑战和要求面前处于领先地位。祝你在开发最佳的嵌入式系统的航行中一帆风顺。
========
目 录
第1章 嵌入式软件概述
1.1 什么是嵌入式系统
1.2 嵌入式系统分类
1.2.1 单机嵌入式系统
1.2.2 实时嵌入式系统
1.2.3 网络设备
1.2.4 移动设备
1.3 嵌入式系统的要求
1.3.1 可靠性
1.3.2 合理的成本
1.3.3 耗电低
1.3.4 有效利用处理能力
1.3.5 有效利用存储器
1.3.6 适当的执行时间
1.4 嵌入式软件开发中的挑战和问题
1.4.1 协同设计
1.4.2 嵌入操作系统
1.4.3 代码优化
1.4.4 高效输入/输出
1.4.5 测试和调试
1.5 嵌入式软件开发的趋势
1.5.1 处理器
1.5.2 存储器
1.5.3 操作系统
1.5.4 编程语言
1.5.5 开发工具
1.6 小结
第2章 嵌入式系统的应用
2.1 应用市场领域
2.1.1 消费类电子产品
2.1.2 控制系统和工业自动化
2.1.3 生物医学系统
2.1.4 现场仪器
2.1.5 手持式电脑
2.1.6 数据通信
2.1.7 网络信息设备
2.1.8 电信
2.1.9 无线通信
2.2 差异中的共性
2.3 小结
第3章 嵌入式系统的硬件体系结构
3.1 硬件体系结构
3.1.1 处理器
3.1.2 存储器
3.1.3 锁存器和缓冲器
3.1.4 晶体
3.1.5 复位电路
3.1.6 芯片选择逻辑电路
3.1.7 ADC和DAC
3.1.8 应用专用控制电路
3.1.9 显示单元
3.1.10 小键盘
3.1.11 通信接口
3.1.12 可编程逻辑设备
3.2 示例:一个基于8031的控制系统
3.3 示例:智能卡
3.3.1 集成所有部件
3.4 示例研究:一种微控制器体系结构
3.5 8051的体系结构
3.5.1 简化的电源模式
3.5.2 存储器组织
3.6 16位和32位处理器
3.6.1 示例:基于32位处理器的手持式电脑
3.7 DSP体系结构
3.7.1 示例:使用DSP的语音识别系统
3.7.2 选择DSP
3.8 通信接口标准
3.8.1 串行接口/UART
3.8.2 IEEE 1394
3.8.3 通用串行总线
3.8.4 IrDA
3.8.5 以太网
3.8.6 蓝牙
3.8.7 PCI总线
3.9 开发工具
3.9.1 EPROM编程器
3.9.2 EPROM擦除器
3.9.3 符号差验证器
3.10 软硬件交互
3.10.1 自测
3.10.2 程序CRC32.cpp的源代码列表
3.10.3 执行CRC计算程序
3.11 小结
第4章 开发嵌入式系统
4.1 嵌入式系统开发过程
4.1.1 确定要求
4.1.2 设计系统体系结构
4.1.3 选择操作系统
4.1.4 选择处理器
4.1.5 选择开发平台
4.1.6 编码问题
4.1.7 在主机系统上验证软件
4.1.8 在嵌入式系统上验证软件
4.2 小结
第5章 嵌入式软件开发环境
5.1 操作系统
5.1.1 内核体系结构
5.1.2 嵌入式操作系统
5.1.3 嵌入式系统中的任务调度
5.1.4 上下文切换
5.1.5 任务的同步
5.1.6 定时器
5.1.7 嵌入式操作系统的类型
5.1.8 实时操作系统
5.1.9 移动/手持式操作系统
5.2 编程语言
5.2.1 汇编语言
5.2.2 高级语言
5.2.3 C编译器的结构
5.2.4 Java编程语言
5.2.5 信息设备
5.2.6 动态分布式系统
5.3 目标处理器的开发工具
5.3.1 仿真程序
5.3.2 设备驱动程序的开发
5.3.3 lcd.ASM的源代码列表
5.3.4 执行程序
5.3.5 用于嵌入式驱动程序的工具
5.3.6 设备驱动程序的开发
5.4 实现嵌入式系统:使用本书中介绍的方法
5.5 小结
第6章 串行通信编程
6.1 开发环境
6.2 串行通信
6.2.1 通信参数
6.3 空调制解调器电缆连接
6.4 PC机之间的通信项目
6.4.1 CserialCommDlg.h的源代码清单
6.4.2 运行程序
6.5 与8051系列微控制器的串行通信项目
6.5.1 Serial.c的源代码清单
6.5.2 执行程序
6.6 小结
第7章 导航系统的开发
7.1 开发环境
7.2 项目概况
7.2.1 Serial.h的源代码清单
7.2.2 Serial.cpp的源代码清单
7.2.3 GPSDlg.h的源代码清单
7.2.4 GPSDlg.cpp的源代码清单
7.3 执行程序
7.4 将软件移植到嵌入式NT平台
7.5 小结
第8章 嵌入式通信系统
8.1 开发环境
8.2 协议转换器项目
8.2.1 Test.h的源代码清单
8.2.2 Test.c的源代码清单
8.2.3 GlobalVar.h的源代码清单
8.2.4 Buffers.c的源代码清单
8.2.5 PTFunction.c的源代码清单
8.2.6 执行程序
8.2.7 嵌入软件
8.3 基于网际协议(IP)的语音传输项目
8.3.1 serverDlg.h的源代码清单
8.3.2 serverDlg.cpp的源代码清单
8.3.3 clientDlg.h的源代码清单
8.3.4 clientDlg.cpp的源代码清单
8.3.5 执行程序
8.3.6 嵌入软件
8.4 小结
第9章 基于移动网络的嵌入式应用
9.1 开发环境
9.2 MP3 声音播放器项目
9.2.1 sound.c的源代码清单
9.2.2 执行程序
9.3 薪水调查项目
9.3.1 idbusage.c的源代码清单
9.3.2 执行程序
9.3.3 输出
9.4 嵌入BREW应用程序
9.5 小结
第10章 实时嵌入式软件开发
10.1 开发环境
10.2 RTLinux模块
10.2.1 在RTLinux中编译模块
10.2.2 执行RTLinux模块
10.2.3 创建RTLinux POSIX线程
10.3 编译并执行示例程序
10.3.1 RTLinux的核心API
10.4 每隔10秒打印一条消息项目
10.4.1 hello.c的源代码清单
10.4.2 在RTLinux系统上编译文件
10.4.3 执行模块
10.5 通过串行连接发送消息项目
10.5.1 blink.c的源代码清单
10.5.2 执行程序
10.5.3 输出
10.6 过程控制系统的仿真项目
10.6.1 SerialCommDlg.cpp的源代码清单
10.6.2 temperature.c的源代码清单
10.6.3 执行程序
10.7 从RTLinux系统控制设备项目
10.7.1 play.c的源代码清单
10.7.2 stop.c的源代码清单
10.7.3 repeat.c的源代码清单
10.7.4 AudioPlayerDlg.cpp的源代码清单
10.7.5 执行步骤
10.7.6 输出
10.8 小结
第11章 嵌入式数据库应用
11.1 开发环境
11.2 薪水调查项目
11.2.1 有关数据库的一些问题
11.2.2 SalarySurvey.ebf文件的源代码清单
11.2.3 执行程序
11.2.4 输出
11.3 能量计读数项目
11.3.1 EnergyConsumption.ebf的源代码清单
11.3.2 执行程序
11.3.3 输出
11.4 桌面机和Pocket PC之间的数据同步
11.5 小结
第12章 具备Java功能的网络信息设备
12.1 开发环境
12.2 客户关系管理软件项目
12.2.1 项目文件
12.2.2 源代码清单
12.2.3 嵌入应用程序
12.3 开发基于位置的服务项目
12.3.1 项目文件
12.3.2 源代码清单
12.3.3 测试应用程序
12.4 嵌入式过程控制系统项目
12.4.1 项目文件
12.4.2 数据库细节内容
12.4.3 源代码清单
12.4.4 测试应用程序
12.5 小结
第13章 移动Java设备
13.1 电子城市导游项目
13.1.1 开发环境
13.1.2 数据库细节内容
13.1.3 CityGuide.java的源代码清单
13.1.4 Cities.jsp的源代码清单
13.1.5 Categories.jsp的源代码清单
13.1.6 CityDetails.jsp的源代码清单
13.1.7 NameCategory.jsp的源代码清单
13.1.8 执行该程序
13.2 使用Jini的设备控制项目
13.2.1 Jini的安装及类路径设置
13.2.2 启动Jini服务
13.2.3 ACRemote应用程序
13.2.4 项目文件
13.2.5 源代码清单
13.2.6 测试应用程序
13.3 小结
第14章 嵌入式Windows XP中的软件开发
14.1 开发环境
14.2 项目概况
14.3 空调的远程控制项目
14.3.1 项目概况
14.3.2 Serial.h的源代码清单
14.3.3 Serial.cpp的源代码清单
14.3.4 ACRemoteDlg.h的源代码清单
14.3.5 ACRemoteDlg.cpp的源代码清单
14.3.6 ACSimulator.cpp的源代码清单
14.3.7 执行程序
14.3.8 将软件移植到Embedded XP平台上
14.4 远程控制音频播放器项目
14.4.1 项目概况
14.4.2 MP3RemoteDlg.h的源代码清单
14.4.3 MP3RemoteDlg.cpp的源代码清单
14.4.4 执行程序
14.4.5 将软件移植到Embedded XP平台
14.5 打字速度指示器项目
14.5.1 frmmain.frm的源代码清单
14.5.2 frmtest.frm的源代码清单
14.5.3 frmfallingletters.frm的源代码清单
14.5.4 执行程序
14.5.5 输出
14.5.6 将软件移植到Embedded XP平台
14.6 嵌入式数据库应用项目
14.6.1 数据库定义
14.6.2 Productivity.frm的源代码
14.6.3 执行程序
14.6.4 输出
14.6.5 安装数据库应用程序
14.6.6 将软件移植到Embedded XP平台
14.7 电子表决项目
14.7.1 数据库细节内容
14.7.2 项目文件
14.7.3 vote.asp的源代码清单
14.7.4 insertvote.asp的源代码清单
14.7.5 checkvote.asp的源代码清单
14.7.6 thanks.html的源代码清单
14.7.7 display.asp的源代码清单
14.7.8 执行程序
14.7.9 嵌入应用程序
14.8 小结
第15章 嵌入式系统的发展趋势
15.1 芯片上的系统
15.2 智能卡和无现金社会
15.3 嵌入式系统的安全性
15.4 小结
附录A CD-ROM上的内容
附录B 嵌入式软件资源
关键词: 嵌入式系统编程源代码解析 嵌入式 初学 推荐 系统
共3条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
vscode+cmake搭建雅特力AT32L021开发环境被打赏30分 | |
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 |