主页 详情

《专业嵌入式软件开发 全面走向高质高效编程》_李云著_12865955_9787121147838

【书名】:《专业嵌入式软件开发 全面走向高质高效编程》
【作者】:李云著
【出版社】:北京:电子工业出版社
【时间】:2012
【页数】:620
【ISBN】:9787121147838
【SS码】:12865955

最新查询

内容简介

硬件篇

第1章 处理器的基本概念

1.1区分微处理器与微控制器

1.2寄存器

1.3处理器是如何启动的

1.4输入与输出

1.5指令与数据

1.6中断

1.7字节序

1.8边界对齐

1.9程序断点和数据断点

1.10内存管理单元

1.11缓存

1.12小结

第2章开发活动中的硬件问题

2.1两个案例

2.2案例的背后——信号完整性

2.3应对方法

2.4小结

工具篇

第3章make,开发环境全能管家

3.1从最简单的Makefile中了解规则

3.2创建基本的编译环境

3.2.1将规则运用于程序编译

3.2.2让Makefile更专业

3.3提高编译环境的实用性

3.3.1让编译环境更加有序

3.3.2提升依赖关系管理

3.4打造更专业的编译环境

3.4.1规划项目目录结构

3.4.2增进复用性

3.4.3支持头文件目录的指定

3.4.4实现库链接

3.4.5增强可使用性

3.4.6管理对库的依赖关系

3.4.7改善编译效率

3.4.8恰当地书写注释

3.5理解make的解析行为

3.6 Makefile的调试

3.7 make的常用选项

3.8活用make

3.9小结

第4章gcc,C语言编译器

4.1什么是交叉编译器

4.2 gcc幕后工作揭示

4.3实用的gcc选项

4.3.1解决宏错误的好帮手

4.3.2辅助编写汇编程序的好方法

4.3.3获取系统头文件路径

4.3.4产生映射文件

4.3.5通过选项定义宏

4.3.6生成依赖关系

4.3.7指定链接库

第5章binutils工具集,软件开发利器

5.1 addr2line,指令地址翻译器

5.2 ar,静态库生成器

5.3 nm,符号显示器

5.4 objdump,信息查看器

5.5 objcopy,段剪辑器

5.6 ranlib,库索引生成器

5.7 size,段大小观察器

5.8 strings,字符串窥视器

5.9 strip,程序文件瘦身器

第6章Id,链接器

6.1重定位的概念

6.2链接脚本

6.2.1段

6.2.2符号

6.2.3存储区域

6.2.4常用命令

6.3常用选项

6.3.1指定程序的入口点

6.3.2生成可重定位的中间文件

6.3.3指定链接脚本

练习与思考

第7章gdb,程序调试助手

7.1启动和退出gdb

7.2获取帮助

7.3调试程序

7.3.1断点设置

7.3.2控制程序运行

7.3.3检查程序

7.3.4提高调试效率

7.4查看符号表

7.5控制gdb的行为

编程语言篇

第8章掌握必要的汇编知识

8.1 as的语法

8.1.1宏

8.1.2汇编命令

8.1.3符号和标签

8.1.4汇编指令

8.2嵌入汇编的语法

第9章深入理解程序的结构

9.1段

9.1.1指令段

9.1.2数据段

9.2栈

9.3堆

9.4小结

第10章ABI/EABI规范,缔造程序兼容合约

10.1定义基本数据类型

10.2规范字节对齐处理

10.3分配寄存器的功能

10.4规定栈帧结构

10.4.1栈帧的含义和作用

10.4.2函数参数的传递方法

10.4.3函数返回值的返回方法

10.5小结

练习与思考

第11章 混淆指针与数组所导致的问题

11.1问题示例

11.2问题分析

11.2.1数组的内存模型

11.2.2指针的内存模型

11.3问题成因

11.4预防措施

11.5小结

第12章volatile,让我保持原样

设计篇

第13章设计,软件质量之本

13.1软件设计是什么

13.2软件质量的概念

13.3阻碍改善设计的常见观念

13.3.1测试是替罪羊或救命稻草

13.3.2资源永远不足

13.3.3不改变就可以规避风险

13.4如何提高设计能力

13.5设计模式、设计原则和设计思想

13.6放之四海皆适用的设计原则

13.6.1以人为本

13.6.2追求简单性

13.6.3让模块善始善终

13.6.4重视收集统计信息

13.6.5借助命名传达设计意图

13.6.6消除“审美告警”

13.6.7通过机制解决问题

13.6.8防止他人犯错

13.6.9考虑可查错性

13.7小结

第14章 模块管理,保障系统有序运行

14.1管理参照系

14.2设计思路

14.3程序实现

14.3.1引入模块标识

14.3.2实现层与级的表达

14.3.3系统状态和回调函数原型定义

14.3.4模块注册

14.3.5系统启动

14.3.6系统关闭

14.4 module示例程序

14.5模块管理的一些思考

14.6小结

练习与思考

第15章错误管理,不可或缺的用户需求

15.1表达错误的通用方法

15.1.1错误码格式

15.1.2定义方法

15.1.3使用示例

15.1.4提高可使用性

15.1.5定义和使用错误码的准则

15.2优化错误日志的输出

15.2.1传统方法

15.2.2更有效的方法

15.3平台和框架层的错误处理

15.4小结

第16章 目录结构管理,使项目进展更顺利

16.1规划目录结构的意义

16.1.1书架功能

16.1.2意识引导

16.1.3加速新手上手

16.2出色目录结构的特点

16.3一个示例

16.4小结

第17章 平台与框架开发,高质量软件打造之路

17.1区分系统库、平台和框架

17.1.1系统库

17.1.2平台

17.1.3框架

17.2本质和优点

17.3确立架构模型

17.4小结

第18章 可开发性设计,一种高效且经济的开发模式

18.1可开发性问题一瞥

18.2可开发性设计的内涵

18.3引入设备抽象层

18.4更复杂的设备抽象层

18.5图形界面的可开发性设计

18.5.1增强设备抽象层

18.5.2提供可视化编辑环境

18.6其他可开发性设计

18.7小结

操作系统篇

第19章引导加载器,系统启航者

19.1功能

19.2文件存储布局

19.3程序加载原理

19.4优点

19.5小结

练习与思考

第20章 任务,软件基本调度单元

20.1任务情景

20.1.1情景内容

20.1.2情景保存

20.1.3情景恢复

20.1.4情景切换

20.2任务调度

20.2.1调度算法

20.2.2调度器

20.3任务的生命周期

20.4任务控制

20.4.1任务创建

20.4.2任务启动

20.4.3任务删除

20.4.4任务挂起

20.4.5任务恢复

20.4.6任务睡眠

20.5竞争问题与中断控制

20.5.1竞争问题的产生

20.5.2通过中断控制解决竞争问题

20.5.3中断控制的嵌套问题

20.6任务与中断状态

20.7任务栈溢出检测

20.8滴答与空闲任务

20.9多任务环境控制

20.10任务模块管理

20.11taskv 1示例程序

20.12任务钩子函数

20.13任务变量

20.13.1 taskv2示例程序

20.13.2原理

20.13.3实现

20.14其他概念与思考

20.14.1抢占式任务与实时系统的关系

20.14.2影响任务切换效率的因素

20.14.3避免直接删除任务

20.14.4小心多任务设计被滥用

20.15小结

练习与思考

第21章 任务同步与通信,实现协同工作

21.1信号量

21.1.1应用场合

21.1.2程序实现

21.1.3 semaphore示例程序

21.2互斥锁

21.2.1应用场合

21.2.2程序实现

21.2.3 mutex示例程序

21.2.4优先级反转与继承

21.2.5递归锁

21.3事件

21.3.1应用场合

21.3.2程序实现

21.3.3 event示例程序

21.4消息队列

21.4.1应用场合

21.4.2程序实现

21.4.3实现消息队列

21.4.4 queue示例程序

21.4.5使用指南

21.5死锁及预防

21.6小结

练习与思考

第22章内存管理,协调动态内存的使用

22.1堆管理

22.1.1 heapvl示例程序

22.1.2程序实现

22.1.3设计改进

22.1.4支持内存泄漏检测

22.1.5实现内存溢出检测

22.1.6内存碎片问题

22.2内存池管理

22.2.1 mpool示例程序

22.2.2程序实现

22.2.3缓冲区泄漏检测

22.3小结

练习与思考

第23章 设备管理,方便与外设交互

23.1字符设备管理

23.2中断管理

23.2.1中断向量表

23.2.2中断控制

23.2.3中断状态管理

23.2.4设备与中断

23.2.5模块管理

23.3实现设备管理

23.3.1安装驱动程序

23.3.2注册设备

23.3.3打开设备

23.3.4关闭设备

23.3.5设备读写与控制

23.4设备驱动程序实现

23.4.1“滴答”设备

23.4.2控制台设备

23.4.3终止程序运行设备

23.5驱动安装与设备注册

23.6小结

练习与思考

第24章定时器,程序闹钟

24.1软件定时器分类

24.2设计思路

24.3中断回调定时器

24.3.1程序实现

24.3.2 tinmerv l示例程序

24.4定时误差

24.5提高遍历效率

24.6改善实时性

24.6.1实时性分析

24.6.2改进实时性

24.7任务回调定时器

24.7.1程序实现

24.7.2 timerv3示例程序

24.8小结

练习与思考

第25章CIearRTOS“实时”操作系统

25.1设计原则

25.2源程序目录管理

25.3让Makefile体现概念

25.4实现集中配置

25.5改进与移植

质量保证篇

第26章 质量保证导言

26.1软件开发的特点

26.1.1脑力密集型工作

26.1.2实现不具唯一性

26.1.3隐性成本高

26.1.4忽视的细节很容易被放大

26.1.5质量难以评估

26.2保证质量的关键要素

26.2.1完备的需求分析

26.2.2高质量的设计

26.2.3编程好习惯

26.2.4充分的验证

26.2.5必要的流程

26.2.6合适的工具

26.2.7言简意赅的文档

26.3质量保证需要系统性的方法论

26.3.1方法论=流程+工具

26.3.2构建有效方法论的核心手段

26.4走出质量困境的指导性思想

26.4.1从管理者的角度

26.4.2从工程师的角度

26.4.3从组织的角度

26.5小结

第27章编程好习惯,质量保证的基本条件

27.1终生受用的编程好习惯

27.1.1判断失败而非成功

27.1.2采用sizeof减少内存操作失误

27.1.3屏蔽编程语言特性

27.1.4恰当使用goto语句

27.1.5合理运用数组

27.1.6以逆序方式释放资源

27.1.7在模块对外接口中防范错误

27.1.8避免出现魔数

27.1.9利用编程语言特性提高效率

27.1.10复用代码提高维护性

27.1.11借助隐式初始化简化程序逻辑

27.1.12青睐小粒度锁

27.1.13精确包含头文件

27.1.14让模块的对外头文件保持简洁

27.1.15只暴露必要的变量和函数

27.1.16清除编译器报告的所有警告

27.2小结

第28章单元测试,被忽视的质量保证方法

28.1警惕单元测试无用论

28.2一个简单但不完善的单元测试例子

28.3构建单元测试框架

28.4无缝整合单元测试

28.4.1维护规则

28.42目录规划

28.4.3更改Makefile

28.4.4检查整合效果

28.5几个实施问题

28.6桩函数和打桩

28.7错误注入,一种可测试性设计

28.8平台开发与单元测试

28.9被测行为的确定性

28.10测试用例的有效性

28.11小结

第29章代码覆盖,单元测试效果的衡量指标

29.1了解代码覆盖工具

29.2无缝整合代码覆盖

29.2.1更改Makefile

29.2.2检查整合效果

29.3三个代码覆盖程度指标

29.4小结

第30章 静态分析,防止将失误带给用户

30.1认识静态分析工具

30.2无缝整合静态分析

30.2.1更改Makefile

30.2.2检查整合效果

30.3小结

第31章动态分析,使程序更健壮

31.1结识动态分析工具

31.2无缝整合动态分析

31.2.1更改Makefile

31.2.2检查整合效果

313小结

第32章 性能分析,让优化程序有的放矢

32.1初探性能分析工具

32.2无缝整合性能分析

32.2.1更改Makefile

32.2.2检查整合效果

32.3小结

第33章qBench,一个开发高质软件的工作台

参考资料


书查询(www.shuchaxun.com)本网页唯一编码:
0c38adfea8806f5454e97fde371b5069#cdbac6b52316840ec898d001e4792465#480293778#12865955.zip