图书介绍

嵌入式软件开发精解PDF|Epub|txt|kindle电子书版本网盘下载

嵌入式软件开发精解
  • (美)瓦尔斯著;何小庆等译 著
  • 出版社: 北京:机械工业出版社
  • ISBN:9787111449522
  • 出版时间:2014
  • 标注页数:314页
  • 文件大小:61MB
  • 文件页数:346页
  • 主题词:软件开发

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

嵌入式软件开发精解PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 嵌入式软件1

1.1 嵌入式应用的影响1

1.1.1 来自开发的挑战1

1.1.2 软件复用3

1.1.3 实时操作系统3

1.1.4 文件系统4

1.1.5 USB4

1.1.6 图形5

1.1.7 网络5

1.1.8 小结6

1.2 嵌入式系统的存储器7

1.2.1 存储器7

1.2.2 软件开发面临的挑战8

1.2.3 所有东西都会出错9

1.2.4 好的解决方法10

1.3 存储器架构10

1.3.1 选项10

1.3.2 平面单一地址空间存储器11

1.3.3 分段空间存储器11

1.3.4 单元切换空间存储器12

1.3.5 多地址空间存储器13

1.3.6 虚拟空间存储器14

1.3.7 高速缓冲存储器14

1.3.8 存储器管理单元14

1.3.9 小结15

1.4 软件是如何影响硬件设计的15

1.4.1 谁在设计硬件15

1.4.2 软件主导硬件16

1.4.3 软硬件的均衡16

1.4.4 硬件调试16

1.4.5 自检17

1.4.6 小结18

1.5 将软件移植到新处理器架构上18

1.5.1 特定目标19

1.5.2 RTOS问题21

1.5.3 处理器移植和开放标准22

1.5.4 小结24

1.6 汽车电子的嵌入式软件24

1.6.1 概要24

1.6.2 汽车电子特征24

1.6.3 编程问题25

1.6.4 实时操作系统因素25

1.6.5 小结26

1.7 芯片设计时如何选择CPU27

1.7.1 设计复杂度27

1.7.2 设计复用性28

1.7.3 存储器架构和保护28

1.7.4 CPU性能29

1.7.5 功耗29

1.7.6 成本29

1.7.7 软件问题29

1.7.8 多核SoC29

1.7.9 小结30

1.8 USB软件的介绍30

1.8.1 什么是USB30

1.8.2 USB外设31

1.8.3 USB通信32

1.8.4 USB软件32

1.8.5 USB和嵌入式系统33

1.8.6 小结33

1.9 走向USB 3.0时代34

1.9.1 概述34

1.9.2 总线架构34

1.9.3 线缆和连接器34

1.9.4 封包路由34

1.9.5 双向协议流35

1.9.6 批量流35

1.9.7 USB 3.0电源管理36

1.9.8 USB 3.0集线器36

1.9.9 xHCI:新型主控制器接口36

1.9.10 USB的未来应用36

1.9.11 小结37

扩展阅读37

第2章 设计和开发38

2.1 嵌入式系统软件开发的新兴技术38

2.1.1 微处理器技术39

2.1.2 系统架构39

2.1.3 设计组合性40

2.1.4 软件内容40

2.1.5 编程语言41

2.1.6 软件团队的规模和分布41

2.1.7 UML和建模42

2.1.8 关键技术42

2.1.9 小结42

2.2 选择开发工具43

2.2.1 开发工具链43

2.2.2 编译器特征44

2.2.3 嵌入式系统的扩展44

2.2.4 优化45

2.2.5 构建工具:简要介绍关键问题46

2.2.6 调试46

2.2.7 调试工具:关键问题的回顾49

2.2.8 标准和开发工具集成49

2.2.9 选择的暗示50

2.2.1 0小结51

2.3 Eclipse:集成嵌入式开发工具51

2.3.1 介绍51

2.3.2 Eclipse平台的思想52

2.3.3 平台52

2.3.4 使用Eclipse进行嵌入式开发53

2.3.5 小结54

2.4 跨越RTOS界限的开发系统54

2.4.1 标准化是解决之道54

2.4.2 Eclipse解决方案55

2.4.3 Eclipse插件55

2.4.4 Eclipse授权56

2.4.5 Eclipse用户优势56

2.4.6 视图56

2.4.7 非嵌入式插件57

2.5 嵌入式软件和UML57

2.5.1 为什么要用UML建模58

2.5.2 从架构中分离应用60

2.5.3 xtUML代码生成64

2.5.4 小结66

2.6 用户界面开发67

2.6.1 用户界面的多样性67

2.6.2 用户界面的实现68

2.6.3一个合理化的UI解决方案70

2.6.4 小结71

2.7 软件和功耗71

2.7.1 介绍71

2.7.2 软件问题73

2.7.3 软件中的功耗控制74

2.7.4 多核75

2.7.5 硬件问题76

2.7.6 虚拟编程78

2.7.7 小结78

第3章 编程79

3.1 为特殊存储器编程79

3.1.1 特殊存储器79

3.1.2 非易失性RAM79

3.1.3 共享存储器81

3.1.4 小结82

3.2 嵌入式系统中的自检82

3.2.1 存储器测试83

3.2.2 I/O设备85

3.2.3 多线程问题85

3.2.4 看门狗86

3.2.5 自检失败86

3.2.6 最后一些要点86

3.3 命令行解释器86

3.3.1 嵌入式系统的诊断功能87

3.3.2 让嵌入式系统开始运行87

3.3.3 命令行解释器——需求87

3.3.4 设计命令行解释器88

3.3.5 命令行解释器的实现88

3.3.6 命令行解释器的原型代码89

3.3.7 小结94

3.4 嵌入式软件应用:交通信号灯94

3.4.1 应用程序94

3.4.2 硬件配置94

3.4.3 程序的实现95

3.4.4 主循环95

3.4.5 中断96

3.4.6 延时97

3.4.7 信号灯97

3.4.8 使用全局变量97

第4章 C语言99

4.1 共同变量99

4.2 C函数的原型101

4.2.1 在函数原型之前102

4.2.2 函数原型的应用102

4.2.3 使用函数原型102

4.3 中断函数和ANSI关键字103

4.3.1 中断函数103

4.3.2 ANSI C const关键字104

4.3.3 ANSI C volatile关键字105

4.4 从位开始106

4.4.1 位运算106

4.4.2 二进制常量107

4.4.3 结构体中的位域107

4.4.4 微处理器位域指令108

4.4.5 I/O设备和位域108

4.4.6 小结109

4.5 浮点数在编程中的应用109

4.5.1 示例110

4.5.2 程序实测110

4.5.3 问题的解答111

4.5.4 从教训中学习111

4.6 从不同的角度看待C语言111

4.6.1 静态数据112

4.6.2 关于分号112

4.6.3 指针和指针运算113

4.6.4 聪明反被聪明误113

4.6.5 小结114

4.7 减少函数调用的开销114

4.7.1 编译器和结构化代码114

4.7.2 内联函数114

4.7.3 函数调用115

4.7.4 参数传递115

4.7.5 局部存储115

4.7.6 生成堆栈帧116

4.7.7 返回值117

4.7.8 小结117

4.8 精通结构布局117

4.8.1 关键概念118

4.8.2 位域121

4.8.3 提示和技巧122

4.9 C语言编程和存储器130

4.9.1 存储器131

4.9.2 段131

4.9.3 小结131

4.10 C/C++中的指针和数组132

4.10.1 指针和指针运算132

4.10.2 数组和指针133

4.10.3 小结133

4.11 C/C++中的动态存储133

4.11.1 C/C++存储空间134

4.11.2 C语言中的动态存储134

4.11.3 C++中的动态存储136

4.11.4 和动态存储相关的问题136

4.11.5 存储空间碎片化137

4.11.6 RTOS中的存储管理138

4.11.7 实时存储解决方案139

4.11.8 小结140

第5章 C++141

5.1 从管理的角度看嵌入式系统中的C++141

5.1.1 嵌入式系统开发团队141

5.1.2 面向对象编程141

5.1.3 团队管理和面向对象方法142

5.1.4 作为面向对象语言的C++142

5.1.5 开销142

5.1.6 前方的路142

5.2 为什么要从C转向C++143

5.2.1 隐藏具体实现的细节143

5.2.2 重用类的代码144

5.2.3 重用通用的类144

5.2.4 扩展操作符的功能144

5.2.5 从基类中衍生新的类144

5.2.6 通过函数原型避免错误145

5.2.7 增加函数参数而不改变调用语句145

5.2.8 使用更加简单和安全的I/O145

5.2.9 通过内联函数提升性能146

5.2.10 重载函数名146

5.2.11 对嵌入式系统的支持146

5.2.12 转变的代价147

5.2.13 向C++中引入C代码147

5.2.14 难点:设计对象147

5.2.15 如果没有出现问题,就不要去改变148

5.3 扫清通向C++的障碍148

5.3.1 过渡策略148

5.3.2 循序渐进148

5.3.3 实现可重用性149

5.3.4 编写Clean C代码150

5.3.5 C+:接近C++153

5.3.6 小结:前方的路156

5.4 C++模板的优势与劣势156

5.4.1 什么是模板156

5.4.2 模板的实例化158

5.4.3 模板带来的问题158

5.4.4 多个模板参数159

5.4.5 模板的其他应用159

5.4.6 小结160

5.4.7 后记160

5.5 C++的异常处理160

5.5.1 C语言中的错误处理160

5.5.2 异常和中断无关161

5.5.3 C++的异常处理161

5.5.4 特殊情况163

5.5.5 EHS和嵌入式系统165

5.5.6 小结166

5.6 C++的代码大小和性能166

5.6.1 C++比C语言更高效吗167

5.6.2 C++对内存需求的影响167

5.6.3 正确使用C++170

5.6.4 小结171

5.7 C++中的只写端口171

5.7.1 封装专业知识171

5.7.2 问题的定义172

5.7.3 C语言的解决方案173

5.7.4 使用C++进行尝试173

5.7.5 重载操作符174

5.7.6 对wop类进行增强175

5.7.7 可重入性176

5.7.8 使用RTOS178

5.7.9 封装专业知识179

5.7.10 其他的可能性179

5.7.11 前方的路179

5.8 在C++中使用非易失性RAM180

5.8.1 程序编制对类定义的需求180

5.8.2 NVRAM的实现180

5.8.3 C++的nvram类181

5.8.4 继续改进nvram类183

5.8.5 小结183

扩展阅读183

第6章 实时性184

6.1 实时系统184

6.1.1 实时系统的实现184

6.1.2 处理循环185

6.1.3 中断185

6.1.4 多任务185

6.1.5 使用实时操作系统186

6.2 嵌入式系统的可视化程序模型186

6.2.1 哪种程序模型最适合用来构建实时系统187

6.2.2 为何要为实时系统建立模型187

6.2.3 各种模型之间有什么不同,各有什么优缺点187

6.2.4 什么是单线程程序模型187

6.2.5 单线程程序模型有什么优缺点187

6.2.6 轮询循环是不是一个单线程程序187

6.2.7 状态机是不是一个单线程程序188

6.2.8 什么是多线程系统188

6.2.9 多线程程序模型有哪些优缺点188

6.2.10 多线程真的同时运行吗189

6.2.11 如何获取实时系统的多线程环境189

6.3 嵌入式系统的事件处理189

6.3.1 事件189

6.3.2 信号和事件是不是同一回事190

6.3.3 什么样的事件是时间敏感的190

6.3.4 当侦测到一个异常,微处理器如何处理190

6.3.5 所有的异常都一样吗190

6.3.6 同步异常190

6.3.7 异步异常190

6.3.8 中断是如何产生的和服务的191

6.3.9 CPU保存的状态是什么191

6.3.10 机器状态就是线程状态吗191

6.3.11 异常处理程序应该用汇编语言还是C语言来写191

6.3.12 怎样避免在异常处理程序上花费时间192

6.4 中断程序192

6.4.1 设置中断192

6.4.2 中断服务例程193

6.4.3 中断向量193

6.4.4 初始化194

6.4.5 小结194

第7章 实时操作系统195

7.1 RTOS的调试技术195

7.1.1 概要195

7.1.2 多进程的概念195

7.1.3 执行环境196

7.1.4 与目标机连接197

7.1.5 调试模式198

7.1.6 RTOS级的调试功能199

7.1.7 代码共享200

7.1.8 任务级的断点201

7.1.9 任务相关性202

7.1.10 内存管理单元202

7.1.11 多处理器203

7.1.12 小结203

7.2 自己开发的RTOS调试解决方案204

7.2.1 任务级调试的实现204

7.2.2 任务级调试工具205

7.2.3 小结207

7.3 调试:堆栈溢出208

7.4 何时考虑使用商业化RTOS208

7.4.1 商用化RTOS和自己开发RTOS209

7.4.2 商业化RTOS的优点209

7.4.3 商业化RTOS的缺点210

7.4.4 为什么要自己开发RTOS211

7.4.5 不自己开发RTOS的理由211

7.4.6 小结212

7.5 移植RTOS213

7.5.1 从一个RTOS转移到另一个RTOS213

7.5.2 代码移植214

7.5.3 封装214

7.5.4 驱动和其他217

7.5.5 调试问题217

7.5.6 小结217

7.6 RTOS驱动程序开发简介219

7.6.1 设备驱动的两个方面219

7.6.2 数据损坏220

7.6.3 线程控制220

7.6.4 程序逻辑220

7.6.5 小结221

7.7 调度算法和优先级反转221

7.7.1 概要222

7.7.2 实时性需求222

7.7.3 调度算法222

7.7.4 操作系统和应用的含义223

7.7.5 小结224

7.8 时间与优先级调度比较224

7.8.1 RTOS调度224

7.8.2 理想世界225

7.8.3 现实世界中的优先级调度225

7.8.4 不释放控制权的时域限制226

7.8.5 释放控制权的时域限制226

7.8.6 小结227

7.9 嵌入式文件系统227

7.9.1 嵌入式文件系统的需求228

7.9.2 MS-DOS文件系统介绍228

7.9.3 长文件名229

7.9.4 格式化229

7.9.5 分区229

7.9.6 设备229

7.10 OSEK:一种RTOS标准230

7.10.1 OSEK简介230

7.10.2 OSEK需求231

7.10.3 OSEK的任务231

7.10.4 报警232

7.10.5 错误处理232

第8章 网络233

8.1 Wi-Fi简介233

8.1.1 无线数据通信234

8.1.2 IEEE 802.11234

8.1.3 802.11基础知识235

8.1.4 Wi-Fi和蓝牙236

8.1.5 发展前景236

8.2 哪些人需要Web服务器237

8.2.1 简介237

8.2.2 三个重要的功能237

8.2.3 Web服务器的运行239

8.2.4 Web服务器功能总结241

8.2.5 其他需要考虑的地方241

8.2.6 小结242

8.3 SNMP介绍242

8.3.1 为什么使用SNMP242

8.3.2 网络管理者的职责243

8.3.3 架构模型243

8.3.4 公众的误解244

8.3.5 应用级的管理者和代理244

8.3.6 如何编写MIB244

8.3.7 术语244

8.3.8 结论245

8.4 下一代互联网协议:IPv6246

8.4.1 互联网协议的局限246

8.4.2 IP第6版介绍247

8.4.3 双栈简化过渡247

8.4.4 IPv6如何工作247

8.4.5 RFC支持251

8.5 DHCP基础251

8.5.1 DHCP服务器252

8.5.2 工作原理252

8.5.3 RFC支持256

8.6 NAT详解256

8.6.1 NAT详解256

8.6.2 RFC支持258

8.6.3 支持的协议258

8.6.4 应用级网关258

8.6.5 私有网络地址分配258

8.7 PPP:点对点协议259

8.7.1 介绍259

8.7.2 PPP如何工作259

8.7.3 PPP详解261

8.7.4 RFC支持263

8.8 SSL介绍264

8.8.1 介绍264

8.8.2 SSL如何工作265

8.8.3 一些SSL细节266

8.9 DHCP调试小技巧267

8.10 IP多播269

8.10.1 多播初始化270

8.10.2 IGMP协议270

8.10.3 多播的实现271

8.10.4 小结272

第9章 开源软件、嵌入式Linux和Android273

9.1 嵌入式开发的GNU工具链:构建还是购买273

9.1.1 介绍273

9.1.2 工具链的组件274

9.1.3 构建工具链276

9.1.4 验证工具链279

9.1.5 测试的各种选择281

9.1.6 小结283

9.2 嵌入式Linux简介283

9.2.1 简介283

9.2.2 使用开源的挑战283

9.2.3 OpenEmbedded285

9.2.4 理解元数据286

9.2.5 项目流程287

9.2.6 小结288

9.3 Android架构和开发288

9.3.1 Android技术简介288

9.3.2 Android架构289

9.3.3 应用开发289

9.3.4 AndroidUI291

9.3.5 在移动设备以外的市场拓展Android291

9.3.6 总结292

9.4 垂直市场上的Android、Meego和嵌入式Linux292

9.4.1 介绍292

9.4.2 垂直市场有什么不同292

9.4.3 Android的吸引力293

9.4.4 MeeGo的前途294

9.4.5 多才多艺的嵌入式Linux294

9.4.6 小结295

第10章 多核嵌入式系统296

10.1 多核简介296

10.1.1 系统架构296

10.1.2 功耗297

10.1.3 挑战297

10.2 多核:多个操作系统297

10.2.1 AMP的SMP硬件298

10.2.2 AMP硬件系统298

10.2.3 AMP软件架构299

10.2.4 IPC的重要性300

10.2.5 AMP开发工具300

10.2.6 困难301

10.2.7 AMP应用案例302

10.2.8 使用Hypervisor302

10.2.9 小结303

10.3 选择多核的多操作系统303

10.3.1 介绍303

10.3.2 操作系统的类型304

10.3.3 选择操作系统304

10.3.4 多核系统306

10.3.5 小结306

10.4 CPU与CPU的通信:MACPI306

10.4.1 介绍307

10.4.2 多核307

10.4.3 MACPI307

10.4.4 小结310

后记311

热门推荐