专业嵌入式软件开发—全面走向高质高效编程(含DVD光盘1张)
基本信息
- 作者: 李云
- 出版社:电子工业出版社
- ISBN:9787121147838
- 上架时间:2011-11-14
- 出版日期:2012 年1月
- 开本:16开
- 页码:620
- 版次:1-1
- 所属分类:
计算机 > 软件工程及软件方法学 > 综合
编辑推荐
一本全面讲解实时操作系统实现原理的书
一本介绍嵌入式软件开发所需掌握工具的书
一本带领读者实践如何构建高质高效软件开发方法的书
内容简介回到顶部↑
《专业嵌入式软件开发—全面走向高质高效编程(含dvd光盘1张)》分为6篇。硬件篇就嵌入式软件开发所需掌握的处理器概念进行了介绍。工具篇对make、gcc编译器、bintuils工具集、ld链接器和gdb调试器进行了讲解,其中对make这一嵌入式开发环境的全能管家进行了精辟的介绍,致力于帮助读者成为makefile方面的专家。编程语言篇致力于让读者更深入地理解c编程语言。操作系统篇通过循序渐进的方式介绍clearrtos的设计与实现,使得读者能透彻地理解操作系统的关键概念和实现原理。设计篇和质量保证篇通过实践的方式逐步展开讲解,以帮助读者获得一些实用的设计原则、最佳实践和一套有效的质量保证方法论。
《专业嵌入式软件开发—全面走向高质高效编程(含dvd光盘1张)》适合嵌入式软件开发领域的新手和在工作中碰到瓶颈的老手阅读。阅读本书要求者已掌握c编程语言和基本的uml知识。
《专业嵌入式软件开发—全面走向高质高效编程(含dvd光盘1张)》适合嵌入式软件开发领域的新手和在工作中碰到瓶颈的老手阅读。阅读本书要求者已掌握c编程语言和基本的uml知识。
目录回到顶部↑
《专业嵌入式软件开发—全面走向高质高效编程(含dvd光盘1张)》
硬 件 篇
第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
硬 件 篇
第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
前言回到顶部↑
我于2000年第一次接触嵌入式软件开发工作,那时和很多入门者一样,因为找不到全面、易懂、深入的读物,也没有人指导,因而遭遇了极大的自学痛苦。即使在今天,学习嵌入式软件开发似乎仍困难重重,这从我的博客空间不时有网友发私信询问如何学习可以看出。
我也曾被网友要求推荐学习嵌入式软件开发的好书。但当我以“嵌入式”关键字在网上书店进行搜索时,所获得的书大部分与Linux、Windows CE、Android和ARM有关。在我看来,网友并不是让我帮助他选择Linux还是Windows CE,ARM还是x86,而认为他希望获得一本学习通用原理和方法的书,因此不敢贸然推荐。基于这种现状,我萌发了写一本既能指导新手入门,又能帮助老手获得突破的书。读者手上拿的正是这本书!本书的创作始于2009年6月,历时2年后于2011年下半年面市。
在本书的创作之初,我问自己:这本书应当包含哪些内容呢?或许可以根据自己过去十多年所经历并克服的成长痛苦进行编排!
嵌入式软件开发是一种软硬件结合非常紧密的职业,对工程师的能力要求自然也就高了。刚开始学习嵌入式软件开发时,最困难的莫过于学习操作系统原理和处理器方面的知识,所以本书必须包含这两方面的内容。讲解操作系统原理如果以Linux、Windows CE等成熟的操作系统为素材并不好,因为它们太大,很容易让人“只见森林不见树木”,也容易让人望而生畏而失去学习的兴趣和信心。从软件开发的角度来看,操作系统的概念和实现原理一旦掌握,不论基于哪一个操作系统做开发都只是调用不同的函数而已。为了让读者获得最好的学习体验,我为本书设计了一个实现简洁、完整的“实时” 操作系统——ClearRTOS,通过渐进式的方式细致地讲解操作系统的概念和实现原理。至于处理器方面的知识,本书没有针对某一具体处理器,而是就编程方面所需的通用知识进行了介绍。对这些通用知识的掌握,将使得处理器对于读者不再那么神秘。
学习嵌入式软件开发的另一大困难是实践问题,本书必须帮助读者解决这一问题。对于很多初学者来说,为了实践而购买一块开发板的学习成本偏高。值得欣喜的是,读者学习本书并不需要购买开发板,而只需要有一台安装于x86或x86-64(包括Intel 64 和AMD 64)处理器上的Windows或Linux操作系统的计算机,对于大多数读者来说这样的学习环境就在身边。另外,软件开发工程师有一个特点,对于自己能修改和调试的代码更具学习兴趣,通过这种方式学习的效果也更佳。本书的所有代码(包括ClearRTOS)都被设计成能在Cygwin环境 和Linux操作系统上编译、调试和运行,所以本书完全迎合工程师的这一学习偏好。总的说来,实践性强是本书很突出的一个特色。
掌握开发所需的工具是学习嵌入式软件开发的又一大挑战,本书在这方面也花费了大量笔墨。与非嵌入式软件开发采用集成开发环境不同,嵌入式软件开发大多是基于命令行的。软件开发工程师除了进行编码工作,还需要能驾驭自己的编译环境并运用其他的开发工具辅助开发工作。本书的工具篇以来自GNU的工具为例帮助读者战胜这一挑战。值得强调的是,其中花了很大的篇幅帮助读者成为Makefile方面的专家。
如果读者只想入门,那么掌握操作系统、处理器和必要的工具就足够了。但如果想获得突破,以实现高质高效地从事软件开发工作那显然不够,还必须理解软件设计的重要性,并借助一定的质量保证方法论来提高工作质量和效率。软件设计和质量保证方法论是业内比较抽象和高级的话题,为此本书在设计篇和质量保证篇通过实践的方式逐步展开讲解,以帮助读者获得一些实用的设计原则、最佳实践和一套有效的质量保证方法论。
总而言之,本书从知识、工具、方法和思想这四大方面全面讲解如何专业地从事嵌入式软件开发,致力于帮助读者全面走向高质高效编程。
读者阅读本书之前,需要掌握C编程语言和基本的UML知识 。如果有使用Linux操作系统的基础经验,对学习本书也会有小小的帮助 。尽管本书是针对嵌入式领域的,但书中的很多思想和方法适用于整个软件行业。
本书结构
全书分为6大篇共33章,读者可以通过浏览书的目录以进一步了解各篇所涵盖的内容。
硬件篇就嵌入式软件开发所需掌握的处理器概念进行了介绍,并通过介绍电路信号的完整性问题告诉读者,嵌入式产品的质量不是软件质量单方面能保证的。
工具篇介绍了提高嵌入式软件开发效率所需掌握的工具。make作为嵌入式开发环境的全能管家,在本篇中花了较大的篇幅对其进行精辟的介绍。此外,gcc编译器、binutils工具集、ld链接器和gdb调试器都在本篇中涵盖了。对于工具的介绍是基于实用的角度展开的,而不是“大全”。
编程语言篇致力于让读者更深入地理解C编程语言。其中对程序的结构、ABI/EABI、volatile关键字进行了讲解,这几方面的知识在非嵌入式软件开发中并不需要深入了解,但在嵌入式软件开发中却是必须掌握的。本篇还通过分析一个因混淆指针和数组所导致的问题,指出开发活动中容易忽视的一个认识盲点,并提出了预防这类问题的终极方法。
设计篇解释了为什么设计是软件产品的质量之本,还介绍了作者常用的设计原则及所倡导的软件设计思想和一些最佳实践。设计思想包括:平台与框架开发、可查错性设计、可开发性设计;最佳实践则覆盖模块管理和错误管理。
操作系统篇通过循序渐进的方式介绍ClearRTOS的设计与实现,使得读者能透彻地理解操作系统的关键概念和实现原理。读者掌握这篇的内容,有助于轻松地在实时Linux、VxWorks、Windows CE等各种实时操作系统上从事软件开发工作。
质量保证篇关注于如何通过质量保证方法论来获得高质量的软件产品,也探讨了工程师的编程习惯对软件质量的影响。本篇中强调了单元测试这一被忽视的质量保证方法的价值,并通过设计实用的单元测试框架展示如何在项目中实施它。本篇中还展示了如何将代码覆盖、静态分析、动态分析和性能分析无缝地整合到开发环境中,以及阐述了“以单元测试为中心”和“要素有形化”质量保证方法论设计思想的具体含义。
致谢
本书是我的处女作,能与读者见面离不开很多人的支持和帮助。首先,感谢我的妻子和女儿。正是在妻子的提议下,我从写博客开始扬起了本书的写作之帆。女儿则是我的开心果,给我的写作之路带来了很多的乐趣,让我得到更多的放松机会。
感谢我的朋友及职业生涯中的上司和同事,正是他们给我机会,或鼓励,或帮助,让我一路积累,才有可能完成本书的创作。他们包括但不限于:庞惠民、章佳欢、刘伟民、夏青、于善成、范鹏、罗延庭。
我也曾被网友要求推荐学习嵌入式软件开发的好书。但当我以“嵌入式”关键字在网上书店进行搜索时,所获得的书大部分与Linux、Windows CE、Android和ARM有关。在我看来,网友并不是让我帮助他选择Linux还是Windows CE,ARM还是x86,而认为他希望获得一本学习通用原理和方法的书,因此不敢贸然推荐。基于这种现状,我萌发了写一本既能指导新手入门,又能帮助老手获得突破的书。读者手上拿的正是这本书!本书的创作始于2009年6月,历时2年后于2011年下半年面市。
在本书的创作之初,我问自己:这本书应当包含哪些内容呢?或许可以根据自己过去十多年所经历并克服的成长痛苦进行编排!
嵌入式软件开发是一种软硬件结合非常紧密的职业,对工程师的能力要求自然也就高了。刚开始学习嵌入式软件开发时,最困难的莫过于学习操作系统原理和处理器方面的知识,所以本书必须包含这两方面的内容。讲解操作系统原理如果以Linux、Windows CE等成熟的操作系统为素材并不好,因为它们太大,很容易让人“只见森林不见树木”,也容易让人望而生畏而失去学习的兴趣和信心。从软件开发的角度来看,操作系统的概念和实现原理一旦掌握,不论基于哪一个操作系统做开发都只是调用不同的函数而已。为了让读者获得最好的学习体验,我为本书设计了一个实现简洁、完整的“实时” 操作系统——ClearRTOS,通过渐进式的方式细致地讲解操作系统的概念和实现原理。至于处理器方面的知识,本书没有针对某一具体处理器,而是就编程方面所需的通用知识进行了介绍。对这些通用知识的掌握,将使得处理器对于读者不再那么神秘。
学习嵌入式软件开发的另一大困难是实践问题,本书必须帮助读者解决这一问题。对于很多初学者来说,为了实践而购买一块开发板的学习成本偏高。值得欣喜的是,读者学习本书并不需要购买开发板,而只需要有一台安装于x86或x86-64(包括Intel 64 和AMD 64)处理器上的Windows或Linux操作系统的计算机,对于大多数读者来说这样的学习环境就在身边。另外,软件开发工程师有一个特点,对于自己能修改和调试的代码更具学习兴趣,通过这种方式学习的效果也更佳。本书的所有代码(包括ClearRTOS)都被设计成能在Cygwin环境 和Linux操作系统上编译、调试和运行,所以本书完全迎合工程师的这一学习偏好。总的说来,实践性强是本书很突出的一个特色。
掌握开发所需的工具是学习嵌入式软件开发的又一大挑战,本书在这方面也花费了大量笔墨。与非嵌入式软件开发采用集成开发环境不同,嵌入式软件开发大多是基于命令行的。软件开发工程师除了进行编码工作,还需要能驾驭自己的编译环境并运用其他的开发工具辅助开发工作。本书的工具篇以来自GNU的工具为例帮助读者战胜这一挑战。值得强调的是,其中花了很大的篇幅帮助读者成为Makefile方面的专家。
如果读者只想入门,那么掌握操作系统、处理器和必要的工具就足够了。但如果想获得突破,以实现高质高效地从事软件开发工作那显然不够,还必须理解软件设计的重要性,并借助一定的质量保证方法论来提高工作质量和效率。软件设计和质量保证方法论是业内比较抽象和高级的话题,为此本书在设计篇和质量保证篇通过实践的方式逐步展开讲解,以帮助读者获得一些实用的设计原则、最佳实践和一套有效的质量保证方法论。
总而言之,本书从知识、工具、方法和思想这四大方面全面讲解如何专业地从事嵌入式软件开发,致力于帮助读者全面走向高质高效编程。
读者阅读本书之前,需要掌握C编程语言和基本的UML知识 。如果有使用Linux操作系统的基础经验,对学习本书也会有小小的帮助 。尽管本书是针对嵌入式领域的,但书中的很多思想和方法适用于整个软件行业。
本书结构
全书分为6大篇共33章,读者可以通过浏览书的目录以进一步了解各篇所涵盖的内容。
硬件篇就嵌入式软件开发所需掌握的处理器概念进行了介绍,并通过介绍电路信号的完整性问题告诉读者,嵌入式产品的质量不是软件质量单方面能保证的。
工具篇介绍了提高嵌入式软件开发效率所需掌握的工具。make作为嵌入式开发环境的全能管家,在本篇中花了较大的篇幅对其进行精辟的介绍。此外,gcc编译器、binutils工具集、ld链接器和gdb调试器都在本篇中涵盖了。对于工具的介绍是基于实用的角度展开的,而不是“大全”。
编程语言篇致力于让读者更深入地理解C编程语言。其中对程序的结构、ABI/EABI、volatile关键字进行了讲解,这几方面的知识在非嵌入式软件开发中并不需要深入了解,但在嵌入式软件开发中却是必须掌握的。本篇还通过分析一个因混淆指针和数组所导致的问题,指出开发活动中容易忽视的一个认识盲点,并提出了预防这类问题的终极方法。
设计篇解释了为什么设计是软件产品的质量之本,还介绍了作者常用的设计原则及所倡导的软件设计思想和一些最佳实践。设计思想包括:平台与框架开发、可查错性设计、可开发性设计;最佳实践则覆盖模块管理和错误管理。
操作系统篇通过循序渐进的方式介绍ClearRTOS的设计与实现,使得读者能透彻地理解操作系统的关键概念和实现原理。读者掌握这篇的内容,有助于轻松地在实时Linux、VxWorks、Windows CE等各种实时操作系统上从事软件开发工作。
质量保证篇关注于如何通过质量保证方法论来获得高质量的软件产品,也探讨了工程师的编程习惯对软件质量的影响。本篇中强调了单元测试这一被忽视的质量保证方法的价值,并通过设计实用的单元测试框架展示如何在项目中实施它。本篇中还展示了如何将代码覆盖、静态分析、动态分析和性能分析无缝地整合到开发环境中,以及阐述了“以单元测试为中心”和“要素有形化”质量保证方法论设计思想的具体含义。
致谢
本书是我的处女作,能与读者见面离不开很多人的支持和帮助。首先,感谢我的妻子和女儿。正是在妻子的提议下,我从写博客开始扬起了本书的写作之帆。女儿则是我的开心果,给我的写作之路带来了很多的乐趣,让我得到更多的放松机会。
感谢我的朋友及职业生涯中的上司和同事,正是他们给我机会,或鼓励,或帮助,让我一路积累,才有可能完成本书的创作。他们包括但不限于:庞惠民、章佳欢、刘伟民、夏青、于善成、范鹏、罗延庭。
【插图】







点击看大图





加载中...
