图书介绍
专业嵌入式软件开发 全面走向高质高效编程2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

- 李云著 著
- 出版社: 北京:电子工业出版社
- ISBN:9787121147838
- 出版时间:2012
- 标注页数:620页
- 文件大小:112MB
- 文件页数:640页
- 主题词:程序设计
PDF下载
下载说明
专业嵌入式软件开发 全面走向高质高效编程PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
硬件篇2
第1章 处理器的基本概念2
1.1区分微处理器与微控制器2
1.2寄存器2
1.3处理器是如何启动的4
1.4输入与输出4
1.5指令与数据5
1.6中断6
1.7字节序8
1.8边界对齐10
1.9程序断点和数据断点15
1.10内存管理单元16
1.11缓存17
1.12小结18
第2章开发活动中的硬件问题19
2.1两个案例19
2.2案例的背后——信号完整性19
2.3应对方法21
2.4小结21
工具篇24
第3章make,开发环境全能管家24
3.1从最简单的Makefile中了解规则24
3.2创建基本的编译环境29
3.2.1将规则运用于程序编译30
3.2.2让Makefile更专业34
3.3提高编译环境的实用性48
3.3.1让编译环境更加有序48
3.3.2提升依赖关系管理51
3.4打造更专业的编译环境67
3.4.1规划项目目录结构68
3.4.2增进复用性72
3.4.3支持头文件目录的指定75
3.4.4实现库链接77
3.4.5增强可使用性82
3.4.6管理对库的依赖关系84
3.4.7改善编译效率87
3.4.8恰当地书写注释89
3.5理解make的解析行为90
3.6 Makefile的调试91
3.7 make的常用选项92
3.8活用make92
3.9小结94
第4章gcc,C语言编译器96
4.1什么是交叉编译器96
4.2 gcc幕后工作揭示97
4.3实用的gcc选项99
4.3.1解决宏错误的好帮手99
4.3.2辅助编写汇编程序的好方法100
4.3.3获取系统头文件路径101
4.3.4产生映射文件102
4.3.5通过选项定义宏102
4.3.6生成依赖关系103
4.3.7指定链接库104
第5章binutils工具集,软件开发利器107
5.1 addr2line,指令地址翻译器108
5.2 ar,静态库生成器111
5.3 nm,符号显示器113
5.4 objdump,信息查看器115
5.5 objcopy,段剪辑器119
5.6 ranlib,库索引生成器120
5.7 size,段大小观察器121
5.8 strings,字符串窥视器122
5.9 strip,程序文件瘦身器124
第6章Id,链接器125
6.1重定位的概念125
6.2链接脚本126
6.2.1段128
6.2.2符号129
6.2.3存储区域130
6.2.4常用命令131
6.3常用选项137
6.3.1指定程序的入口点137
6.3.2生成可重定位的中间文件137
6.3.3指定链接脚本138
练习与思考138
第7章gdb,程序调试助手139
7.1启动和退出gdb139
7.2获取帮助140
7.3调试程序142
7.3.1断点设置142
7.3.2控制程序运行144
7.3.3检查程序147
7.3.4提高调试效率151
7.4查看符号表152
7.5控制gdb的行为153
编程语言篇156
第8章掌握必要的汇编知识156
8.1 as的语法156
8.1.1宏157
8.1.2汇编命令157
8.1.3符号和标签157
8.1.4汇编指令158
8.2嵌入汇编的语法158
第9章深入理解程序的结构161
9.1段161
9.1.1指令段161
9.1.2数据段162
9.2栈166
9.3堆168
9.4小结169
第10章ABI/EABI规范,缔造程序兼容合约170
10.1定义基本数据类型171
10.2规范字节对齐处理171
10.3分配寄存器的功能173
10.4规定栈帧结构174
10.4.1栈帧的含义和作用175
10.4.2函数参数的传递方法182
10.4.3函数返回值的返回方法184
10.5小结187
练习与思考187
第11章 混淆指针与数组所导致的问题188
11.1问题示例188
11.2问题分析189
11.2.1数组的内存模型189
11.2.2指针的内存模型190
11.3问题成因191
11.4预防措施193
11.5小结194
第12章volatile,让我保持原样195
设计篇200
第13章设计,软件质量之本200
13.1软件设计是什么200
13.2软件质量的概念201
13.3阻碍改善设计的常见观念203
13.3.1测试是替罪羊或救命稻草203
13.3.2资源永远不足204
13.3.3不改变就可以规避风险204
13.4如何提高设计能力205
13.5设计模式、设计原则和设计思想206
13.6放之四海皆适用的设计原则207
13.6.1以人为本207
13.6.2追求简单性210
13.6.3让模块善始善终211
13.6.4重视收集统计信息212
13.6.5借助命名传达设计意图213
13.6.6消除“审美告警”215
13.6.7通过机制解决问题215
13.6.8防止他人犯错218
13.6.9考虑可查错性220
13.7小结221
第14章 模块管理,保障系统有序运行222
14.1管理参照系222
14.2设计思路224
14.3程序实现226
14.3.1引入模块标识226
14.3.2实现层与级的表达226
14.3.3系统状态和回调函数原型定义228
14.3.4模块注册228
14.3.5系统启动230
14.3.6系统关闭232
14.4 module示例程序233
14.5模块管理的一些思考235
14.6小结235
练习与思考235
第15章错误管理,不可或缺的用户需求236
15.1表达错误的通用方法236
15.1.1错误码格式237
15.1.2定义方法238
15.1.3使用示例239
15.1.4提高可使用性240
15.1.5定义和使用错误码的准则246
15.2优化错误日志的输出246
15.2.1传统方法246
15.2.2更有效的方法249
15.3平台和框架层的错误处理251
15.4小结251
第16章 目录结构管理,使项目进展更顺利252
16.1规划目录结构的意义252
16.1.1书架功能252
16.1.2意识引导252
16.1.3加速新手上手253
16.2出色目录结构的特点253
16.3一个示例253
16.4小结254
第17章 平台与框架开发,高质量软件打造之路255
17.1区分系统库、平台和框架255
17.1.1系统库255
17.1.2平台256
17.1.3框架256
17.2本质和优点257
17.3确立架构模型258
17.4小结259
第18章 可开发性设计,一种高效且经济的开发模式260
18.1可开发性问题一瞥260
18.2可开发性设计的内涵261
18.3引入设备抽象层261
18.4更复杂的设备抽象层263
18.5图形界面的可开发性设计264
18.5.1增强设备抽象层264
18.5.2提供可视化编辑环境264
18.6其他可开发性设计264
18.7小结265
操作系统篇268
第19章引导加载器,系统启航者268
19.1功能268
19.2文件存储布局269
19.3程序加载原理270
19.4优点274
19.5小结274
练习与思考275
第20章 任务,软件基本调度单元276
20.1任务情景278
20.1.1情景内容278
20.1.2情景保存279
20.1.3情景恢复281
20.1.4情景切换282
20.2任务调度286
20.2.1调度算法286
20.2.2调度器290
20.3任务的生命周期293
20.4任务控制295
20.4.1任务创建297
20.4.2任务启动306
20.4.3任务删除307
20.4.4任务挂起309
20.4.5任务恢复310
20.4.6任务睡眠311
20.5竞争问题与中断控制313
20.5.1竞争问题的产生314
20.5.2通过中断控制解决竞争问题315
20.5.3中断控制的嵌套问题316
20.6任务与中断状态317
20.7任务栈溢出检测318
20.8滴答与空闲任务320
20.9多任务环境控制323
20.10任务模块管理324
20.11taskv 1示例程序326
20.12任务钩子函数330
20.13任务变量334
20.13.1 taskv2示例程序334
20.13.2原理336
20.13.3实现337
20.14其他概念与思考340
20.14.1抢占式任务与实时系统的关系340
20.14.2影响任务切换效率的因素341
20.14.3避免直接删除任务341
20.14.4小心多任务设计被滥用342
20.15小结343
练习与思考343
第21章 任务同步与通信,实现协同工作345
21.1信号量345
21.1.1应用场合345
21.1.2程序实现347
21.1.3 semaphore示例程序358
21.2互斥锁360
21.2.1应用场合361
21.2.2程序实现361
21.2.3 mutex示例程序365
21.2.4优先级反转与继承367
21.2.5递归锁375
21.3事件379
21.3.1应用场合379
21.3.2程序实现379
21.3.3 event示例程序384
21.4消息队列386
21.4.1应用场合386
21.4.2程序实现387
21.4.3实现消息队列390
21.4.4 queue示例程序396
21.4.5使用指南398
21.5死锁及预防399
21.6小结399
练习与思考400
第22章内存管理,协调动态内存的使用401
22.1堆管理401
22.1.1 heapvl示例程序401
22.1.2程序实现406
22.1.3设计改进416
22.1.4支持内存泄漏检测421
22.1.5实现内存溢出检测431
22.1.6内存碎片问题431
22.2内存池管理432
22.2.1 mpool示例程序432
22.2.2程序实现436
22.2.3缓冲区泄漏检测444
22.3小结444
练习与思考444
第23章 设备管理,方便与外设交互445
23.1字符设备管理445
23.2中断管理447
23.2.1中断向量表447
23.2.2中断控制448
23.2.3中断状态管理450
23.2.4设备与中断451
23.2.5模块管理451
23.3实现设备管理452
23.3.1安装驱动程序454
23.3.2注册设备455
23.3.3打开设备456
23.3.4关闭设备458
23.3.5设备读写与控制458
23.4设备驱动程序实现459
23.4.1“滴答”设备460
23.4.2控制台设备462
23.4.3终止程序运行设备464
23.5驱动安装与设备注册466
23.6小结468
练习与思考468
第24章定时器,程序闹钟469
24.1软件定时器分类469
24.2设计思路469
24.3中断回调定时器470
24.3.1程序实现470
24.3.2 tinmerv l示例程序481
24.4定时误差484
24.5提高遍历效率484
24.6改善实时性489
24.6.1实时性分析490
24.6.2改进实时性491
24.7任务回调定时器494
24.7.1程序实现494
24.7.2 timerv3示例程序497
24.8小结498
练习与思考48
第25章CIearRTOS“实时”操作系统499
25.1设计原则499
25.2源程序目录管理499
25.3让Makefile体现概念502
25.4实现集中配置503
25.5改进与移植504
质量保证篇508
第26章 质量保证导言508
26.1软件开发的特点508
26.1.1脑力密集型工作508
26.1.2实现不具唯一性508
26.1.3隐性成本高509
26.1.4忽视的细节很容易被放大509
26.1.5质量难以评估509
26.2保证质量的关键要素509
26.2.1完备的需求分析510
26.2.2高质量的设计510
26.2.3编程好习惯510
26.2.4充分的验证510
26.2.5必要的流程511
26.2.6合适的工具512
26.2.7言简意赅的文档512
26.3质量保证需要系统性的方法论512
26.3.1方法论=流程+工具513
26.3.2构建有效方法论的核心手段516
26.4走出质量困境的指导性思想518
26.4.1从管理者的角度518
26.4.2从工程师的角度519
26.4.3从组织的角度519
26.5小结520
第27章编程好习惯,质量保证的基本条件521
27.1终生受用的编程好习惯521
27.1.1判断失败而非成功521
27.1.2采用sizeof减少内存操作失误522
27.1.3屏蔽编程语言特性524
27.1.4恰当使用goto语句527
27.1.5合理运用数组529
27.1.6以逆序方式释放资源530
27.1.7在模块对外接口中防范错误531
27.1.8避免出现魔数532
27.1.9利用编程语言特性提高效率533
27.1.10复用代码提高维护性534
27.1.11借助隐式初始化简化程序逻辑536
27.1.12青睐小粒度锁538
27.1.13精确包含头文件539
27.1.14让模块的对外头文件保持简洁541
27.1.15只暴露必要的变量和函数542
27.1.16清除编译器报告的所有警告542
27.2小结543
第28章单元测试,被忽视的质量保证方法544
28.1警惕单元测试无用论544
28.2一个简单但不完善的单元测试例子545
28.3构建单元测试框架548
28.4无缝整合单元测试555
28.4.1维护规则557
28.42目录规划557
28.4.3更改Makefile559
28.4.4检查整合效果566
28.5几个实施问题569
28.6桩函数和打桩570
28.7错误注入,一种可测试性设计571
28.8平台开发与单元测试576
28.9被测行为的确定性576
28.10测试用例的有效性577
28.11小结578
第29章代码覆盖,单元测试效果的衡量指标579
29.1了解代码覆盖工具580
29.2无缝整合代码覆盖584
29.2.1更改Makefile584
29.2.2检查整合效果586
29.3三个代码覆盖程度指标587
29.4小结588
第30章 静态分析,防止将失误带给用户589
30.1认识静态分析工具589
30.2无缝整合静态分析596
30.2.1更改Makefile596
30.2.2检查整合效果601
30.3小结602
第31章动态分析,使程序更健壮603
31.1结识动态分析工具604
31.2无缝整合动态分析607
31.2.1更改Makefile607
31.2.2检查整合效果609
313小结609
第32章 性能分析,让优化程序有的放矢610
32.1初探性能分析工具610
32.2无缝整合性能分析612
32.2.1更改Makefile613
32.2.2检查整合效果614
32.3小结615
第33章qBench,一个开发高质软件的工作台616
参考资料618
热门推荐
- 2445859.html
- 1538666.html
- 3258269.html
- 502947.html
- 493146.html
- 1460978.html
- 2775707.html
- 402337.html
- 753271.html
- 1561164.html
- http://www.ickdjs.cc/book_1415329.html
- http://www.ickdjs.cc/book_2728832.html
- http://www.ickdjs.cc/book_2880653.html
- http://www.ickdjs.cc/book_1040786.html
- http://www.ickdjs.cc/book_1429965.html
- http://www.ickdjs.cc/book_1220256.html
- http://www.ickdjs.cc/book_3426189.html
- http://www.ickdjs.cc/book_3731333.html
- http://www.ickdjs.cc/book_88539.html
- http://www.ickdjs.cc/book_397039.html