图书介绍

专业嵌入式软件开发全面走向高质高效编程附光盘

  • 店铺: 哈尔滨市学府书店图书专营店
  • 出版社: 电子工业出版社
  • ISBN:9787121147838
  • 上架时间:2014-09-12 11:26:51
  • 商品编码:1298157703

手机扫码下载

手机扫码下载

赞助商链接

图书目录

ISBN:9787121147838
内容介绍


ISBN号码:9787121147838
书名:专业嵌入式软件开发全面走向高质高效编程附光盘
作者:李云
出版社:电子工业出版社
出版日期:2012-01-01
页数:620
版次:第一版
开本:
语种:汉语
定价:108.00


《专业嵌入式软件开发:全面走向高质高效编程》分为6篇。硬件篇就嵌入式软件开发所需掌握的处理器概念进行了介绍。工具篇对make、gcc编译器、bintuils工具集、ld链接器和gdb调试器进行了讲解,其中对make这一嵌入式开发环境的全能管家进行了精辟的介绍,致力于帮助读者成为Makefile方面的专家。编程语言篇致力于让读者更深入地理解C编程语言。操作系统篇通过循序渐进的方式介绍ClearRTOS的设计与实现,使得读者能透彻地理解操作系统的关键概念和实现原理。设计篇和质量保证篇通过实践的方式逐步展开讲解,以帮助读者获得一些实用的设计原则、最佳实践和一套有效的质量保证方法论。
《专业嵌入式软件开发:全面走向高质高效编程》适合嵌入式软件开发领域的新手和在工作中碰到瓶颈的老手阅读。阅读《专业嵌入式软件开发:全面走向高质高效编程》要求读者已掌握C编程语言和基本的UML知识。
编辑推荐
《专业嵌入式软件开发:全面走向高质高效编程》是一本全面讲解实时操作系统实现原理的书为了使读者获得最佳的学习效果,作者为《专业嵌入式软件开发:全面走向高质高效编程》量身打造了可在Windows和Linux操作系统上直接运行的ClearRTOS“实时”操作系统,并在书中详解了所有实现细节。
这是一本介绍嵌入式软件开发所需掌握工具的书作者从实用的角度介绍了gcc编译器、binutils工具集、Id链接器和gdb调试器,并花了较大的篇幅帮助读者成为Makefile的专家。
这是一本带领读者实践如何构建高质高效软件开发方法的书书中通过展示如何将单元测试框架、静态分析、动态分析和性能分析整合到开发环境中这种方式,阐述了作者的“以单元测试为中心”和“无缝整合”思想。
这是一位饱尝自学嵌入式软件开发痛苦的工程师在软件行业积累了12年后,与读者分享心得的一本书中就软件设计、编程习惯和质量保证等内容与读者进行了交流。
作者简介
李云,现任诺基亚西门子网络技术有限公司软件架构师。
2年电气和电子开发工作经验,自1999年至今从事软件开发工作曾在浙江大立科技有限公司、UT斯达康杭州研发中心、摩托罗拉杭州研发中心担任软件工程师、项目负责人和软件架构师等职早在2000年开始从事嵌入式软件开发工作,内容主要包括:操作系统内核、文件系统和IP协议栈的移植,IDE硬盘、以太网芯片和PCI总线等外设的驱动开发熟悉x86、PowerPC、XScale处理器,以及TIDSP源码级熟悉uC/OS、RTEMS和VxWorks实时操作系统的实现,并在这些操作系统和Linux操作系统上有着丰富的软件开发经验。
目录
硬件篇
第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.6Makefile的调试
3.7make的常用选项
3.8活用make
3.9小结
第4章gcc,C语言编译器
4.1什么是交叉编译器
4.2gcc幕后工作揭示
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.1addr2line,指令地址翻译器
5.2ar,静态库生成器
5.3nm,符号显示器
5.4objdump,信息查看器
5.5objcopy,段剪辑器
5.6ranlib,库索引生成器
5.7size,段大小观察器
5.8strings,字符串窥视器
5.9strip,程序文件瘦身器
第6章ld,链接器
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.1as的语法
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.4module示例程序
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.11taskv1示例程序
20.12任务钩子函数
20.13任务变量
20.13.1taskv2示例程序
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.3semaphore示例程序
21.2互斥锁
21.2.1应用场合
21.2.2程序实现
21.2.3mutex示例程序
21.2.4优先级反转与继承
21.2.5递归锁
21.3事件
21.3.1应用场合
21.3.2程序实现
21.3.3event示例程序
21.4消息队列
21.4.1应用场合
21.4.2程序实现
21.4.3实现消息队列
21.4.4queue示例程序
21.4.5使用指南
21.5死锁及预防
21.6小结
练习与思考
第22章内存管理,协调动态内存的使用
22.1堆管理
22.1.1heapv1示例程序
22.1.2程序实现
22.1.3设计改进
22.1.4支持内存泄漏检测
22.1.5实现内存溢出检测
22.1.6内存碎片问题
22.2内存池管理
22.2.1mpool示例程序
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.2timerv1示例程序
24.4定时误差
24.5提高遍历效率
24.6改善实时性
24.6.1实时性分析
24.6.2改进实时性
24.7任务回调定时器
24.7.1程序实现
24.7.2timerv3示例程序
24.8小结
练习与思考
第25章ClearRTOS“实时”操作系统
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恰当使用gto语句
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.4.2目录规划
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检查整合效果
31.3小结
第32章性能分析,让优化程序有的放矢
32.1初探性能分析工具
32.2无缝整合性能分析
32.2.1更改Makefile
32.2.2检查整合效果
32.3小结
第33章qBench,一个开发高质软件的工作台
参考资料


暂时没有目录,请见谅!

查看全部 ↓

精品推荐