书籍详情
嵌入式系统软件工程:方法、实用技术及应用
作者:Robert Oshana,Mark Kraeling,
出版社:清华大学出版社
出版时间:2016-05-01
ISBN:9787302425311
定价:¥135.00
购买这本书可以去
内容简介
嵌入式系统在最近几年中得到了迅速发展和广泛应用。这对嵌入式软件的可靠性、稳定性、鲁棒性和性能都提出了更高的要求,对嵌入式软件的开发也提出了新的挑战。本书讲述了嵌入式软件的重要特性和软件工程方法,例如软件设计、基于组件的开发、软件架构、系统集成和测试,以及与之配套的方法论、语言、工具和流程等。它几乎涵盖了嵌入式软件开发的所有方面,包括建模、软/硬件协同设计、操作系统、编程规范、性能与优化、集成测试、质量控制、多核软件、知识产权与项目管理等主要问题。书中列举了存储与I/O、Linux与开源软件,以及面向网络和汽车的应用,最后的实例研究更可以帮助读者加深对嵌入式软件的理解。书中各章所描述的问题都是在嵌入式软件开发过程中常见的问题,每章都有对各自问题的背景介绍、问题求解以及实例和总结。这些章节各自独立,层次分明,既自成体系又互相联系。本书力求理论与实践紧密结合,内容翔实、实例丰富。本书可以作为高等院校“嵌入式软件”课程的教材,也可供从事嵌入式系统开发与应用的工程技术人员自学与参考。
作者简介
暂缺《嵌入式系统软件工程:方法、实用技术及应用》作者简介
目录
序(一)1
序(二)3
译者序5
嵌入式系统软件工程——路线图7
前言15
致谢17
关于作者19
第1章嵌入式软件工程与实时系统
1.1软件工程
1.2嵌入式系统
1.3实时系统
1.3.1实时系统的类型——软实时和硬实时系统
1.3.2硬实时系统的例子
1.3.3实时事件的特点
1.3.4有效执行与执行环境
1.4实时系统设计的挑战
1.4.1响应时间
1.4.2从故障中恢复
1.4.3嵌入式系统软件的构建过程
1.5分布式和多处理器架构
1.6嵌入式系统软件
1.7嵌入式系统的硬件抽象层
1.8小结
第2章嵌入式系统软/硬件协同开发
2.1当今嵌入式系统示例
2.2HW/SW原型机用户
2.3HW/SW原型机设计选项
2.4原型设计决策标准
2.5选择正确的原型
2.6工业设计链
2.7更改设计流程的必要
2.8不同类型的虚拟原型机
2.9虚拟原型的简要历史
2.10专有产品的限制
2.11什么使得虚拟原型机变快
2.12标准化:SystemC TLM2.0的时代
2.13SystemC TLM2抽象层
2.14系统架构虚拟原型机
2.15软件虚拟原型机
2.16小结——虚拟化的重要性日益增加
第3章嵌入式系统的软件建模
3.1何时、为何要为嵌入式系统建立模型
3.2建模
3.3什么是建模语言
3.4建模语言举例
3.5V图承诺
3.6为什么要建立嵌入式系统的模型
3.7何时为嵌入式系统建立模型
3.7.1任务和安全关键型应用程序
3.7.2高度复杂的应用程序和系统
3.8操作复杂性
3.9缺陷检测时间与成本
3.10大型开发团队需要建模
3.11建模通常是唯一的选择
3.12建模是有利的,但不是说所有模型都是错的吗
3.13有了原型机——又该如何
3.14结论
3.15下一步——试用
3.15.1带有直流电动机的闭环控制
3.15.2下载套件了解更多原型机设计
3.15.3使用NI状态图模块设计应用程序
3.15.4设计和模拟电刷式直流电动机H桥电路
3.15.5使用开放源代码Modelica模型进行多域物理建模
参考文献
第4章嵌入式系统的软件设计架构与模式
4.1架构和设计综述
4.2三个层次的设计
4.3什么是设计模式
4.3.1必须要采用面向对象技术来使用设计模式吗
4.3.2一个架构实例
4.3.3使用模式
4.3.4做权衡决策
4.4软件架构的类别和视图
4.4.1主要的架构视角
4.4.2次要的视角
4.5小结
参考文献
第5章实时构件: 事件与触发器
5.1事件和触发器
5.2室温控制单元
5.3事件系统
5.4事件句柄
5.5事件方法
5.6事件数据结构
5.7可重入性
5.7.1禁用和启用中断
5.7.2进入临界区和退出临界区
5.7.3信号量
5.7.4进入/退出临界区的实现
5.8事件处理
5.9集成
5.10触发器
5.11闪烁的LED
5.12设计思想
5.13嘀嗒定时器
5.14触发器接口
5.15触发器描述符
5.16数据分配
5.17设置触发器
5.18嘀嗒计数
5.19确保可重入
5.20初始化
5.21闪烁
5.22蜂鸣器鸣响
5.23实时性
5.24小结
第6章嵌入式软件的硬件接口
6.1简介
6.2与硬件团队的合作
6.2.1主动合作
6.2.2团队代表
6.2.3注册设计工具
6.2.4共同开发
6.2.5系统集成
6.3硬件设计方面有用的知识
6.3.1硬件事件的通知
6.3.2向硬件下达任务
6.3.3位域对齐
6.3.4固定位的位置
6.3.5模块版本号
6.3.6调试钩子
6.4支持多个硬件版本
6.4.1编译开关
6.4.2构建开关
6.4.3运行开关
6.4.4自适应开关
6.5硬件交互困难
6.5.1原子寄存器访问
6.5.2同一寄存器中混合的位类型
6.5.3边沿与电平中断
6.6测试与故障排除
6.6.1临时钩子
6.6.2永久钩子
6.7小结
第7章嵌入式软件编程和实现准则
7.1简介
7.1.1高质量编程的原则
7.1.2是什么让嵌入式不同于一般编程
7.2启动嵌入式软件项目
7.2.1硬件平台输入
7.2.2工程文件和组织
7.2.3团队编程指南
7.2.4语法标准
7.2.5源代码中的安全要求
7.3变量结构
7.3.1变量声明
7.3.2数据类型
7.3.3定义
第8章嵌入式操作系统
8.1前台/后台系统
8.2实时内核
8.2.1RTOS(实时操作系统)
8.2.2临界区
8.2.3任务管理
8.2.4分配任务优先级
8.2.5决定堆栈的大小
8.2.6空闲任务
8.3优先级
8.4就绪队列
8.5调度点
8.6上下文切换
8.7中断管理
8.7.1处理CPU中断
8.7.2非内核感知的中断服务程序
8.7.3拥有多种中断优先级的处理器
8.7.4所有的中断向量的共同地址
8.7.5每个中断向量对应唯一的地址
8.8时钟周期(或系统时钟周期)
8.9等待队列
8.10时间管理
8.11资源管理
8.11.1资源管理: 禁用/启用中断
8.11.2资源管理: 信号量
8.11.3资源管理: 优先级反转
8.11.4资源管理: 互斥信号量
8.11.5资源管理: 僵局(死锁)
8.12同步
8.12.1同步: 信号量
8.12.2同步: 信用跟踪
8.12.3双方相约
8.13消息传递
8.13.1消息
8.13.2消息队列
8.13.3流控制
8.13.4客户端和服务器端
8.14内存管理
8.15小结
第9章嵌入式系统设计的软件复用
9.1为什么软件复用如此重要
9.2什么限制了软件复用
9.3各种软件复用
9.4通过层实现复用
9.5进入到下一个级别
9.6引入元件厂
9.7工厂硬件配置
9.8工厂软件配置
9.9工厂对可复用性的作用
9.10RTOS不可知论
9.11任意扩展性
9.12结论
参考文献
第10章嵌入式系统的软件性能工程
10.1示例: eNodeB应用程序的延迟时间与吞吐量对比
10.2性能模式和反模式
参考文献
第11章嵌入式软件的性能优化
11.1代码优化过程
11.2使用开发工具
11.2.1编译器的优化
11.2.2基本的编译器配置
11.2.3启用优化
11.2.4附加的优化配置
11.2.5使用分析器
11.3背景——理解嵌入式架构
11.4基本的C优化技术
11.4.1选择正确的数据类型
11.4.2函数的调用规范
11.4.3指针和内存访问
11.4.4限制和指针别名
11.4.5循环
11.4.6额外的提示和技巧
11.5一般循环转换
11.5.1循环展开
11.5.2多采样技术
11.5.3部分求和
11.5.4软件流水线
11.6优化技术的实例应用: 互相关
11.6.1设置
11.6.2原始实例
第12章嵌入式软件的内存优化
12.1简介
12.2代码大小的优化
12.2.1编译标志位和标志位挖掘
12.2.2目标ISA的大小和性能的折中
12.2.3为代码大小调整ABI
12.2.4买者自负: 编译器优化正交码的大小
12.3内存布局优化
12.3.1内存优化简介
12.3.2重点优化
12.3.3向量化和动态代码: 计算比率
12.3.4C语言指针别名
12.4数据结构、数据结构的数组及其添加
12.5内存性能的循环优化
12.5.1数据对齐的连锁效应
12.5.2选择数据类型的益处
第13章嵌入式软件的功耗优化
13.1简介
13.2理解功耗
13.2.1功耗的基本概念
13.2.2静态与动态功率消耗
13.2.3最大功率、平均功率、最坏情况功率和典型功率
13.3测量功耗
13.3.1使用电流表测量功率
13.3.2使用霍尔传感器芯片测量功率
13.3.3VRMs(电压调整模块的电源芯片)
13.3.4静态功率测量
序(二)3
译者序5
嵌入式系统软件工程——路线图7
前言15
致谢17
关于作者19
第1章嵌入式软件工程与实时系统
1.1软件工程
1.2嵌入式系统
1.3实时系统
1.3.1实时系统的类型——软实时和硬实时系统
1.3.2硬实时系统的例子
1.3.3实时事件的特点
1.3.4有效执行与执行环境
1.4实时系统设计的挑战
1.4.1响应时间
1.4.2从故障中恢复
1.4.3嵌入式系统软件的构建过程
1.5分布式和多处理器架构
1.6嵌入式系统软件
1.7嵌入式系统的硬件抽象层
1.8小结
第2章嵌入式系统软/硬件协同开发
2.1当今嵌入式系统示例
2.2HW/SW原型机用户
2.3HW/SW原型机设计选项
2.4原型设计决策标准
2.5选择正确的原型
2.6工业设计链
2.7更改设计流程的必要
2.8不同类型的虚拟原型机
2.9虚拟原型的简要历史
2.10专有产品的限制
2.11什么使得虚拟原型机变快
2.12标准化:SystemC TLM2.0的时代
2.13SystemC TLM2抽象层
2.14系统架构虚拟原型机
2.15软件虚拟原型机
2.16小结——虚拟化的重要性日益增加
第3章嵌入式系统的软件建模
3.1何时、为何要为嵌入式系统建立模型
3.2建模
3.3什么是建模语言
3.4建模语言举例
3.5V图承诺
3.6为什么要建立嵌入式系统的模型
3.7何时为嵌入式系统建立模型
3.7.1任务和安全关键型应用程序
3.7.2高度复杂的应用程序和系统
3.8操作复杂性
3.9缺陷检测时间与成本
3.10大型开发团队需要建模
3.11建模通常是唯一的选择
3.12建模是有利的,但不是说所有模型都是错的吗
3.13有了原型机——又该如何
3.14结论
3.15下一步——试用
3.15.1带有直流电动机的闭环控制
3.15.2下载套件了解更多原型机设计
3.15.3使用NI状态图模块设计应用程序
3.15.4设计和模拟电刷式直流电动机H桥电路
3.15.5使用开放源代码Modelica模型进行多域物理建模
参考文献
第4章嵌入式系统的软件设计架构与模式
4.1架构和设计综述
4.2三个层次的设计
4.3什么是设计模式
4.3.1必须要采用面向对象技术来使用设计模式吗
4.3.2一个架构实例
4.3.3使用模式
4.3.4做权衡决策
4.4软件架构的类别和视图
4.4.1主要的架构视角
4.4.2次要的视角
4.5小结
参考文献
第5章实时构件: 事件与触发器
5.1事件和触发器
5.2室温控制单元
5.3事件系统
5.4事件句柄
5.5事件方法
5.6事件数据结构
5.7可重入性
5.7.1禁用和启用中断
5.7.2进入临界区和退出临界区
5.7.3信号量
5.7.4进入/退出临界区的实现
5.8事件处理
5.9集成
5.10触发器
5.11闪烁的LED
5.12设计思想
5.13嘀嗒定时器
5.14触发器接口
5.15触发器描述符
5.16数据分配
5.17设置触发器
5.18嘀嗒计数
5.19确保可重入
5.20初始化
5.21闪烁
5.22蜂鸣器鸣响
5.23实时性
5.24小结
第6章嵌入式软件的硬件接口
6.1简介
6.2与硬件团队的合作
6.2.1主动合作
6.2.2团队代表
6.2.3注册设计工具
6.2.4共同开发
6.2.5系统集成
6.3硬件设计方面有用的知识
6.3.1硬件事件的通知
6.3.2向硬件下达任务
6.3.3位域对齐
6.3.4固定位的位置
6.3.5模块版本号
6.3.6调试钩子
6.4支持多个硬件版本
6.4.1编译开关
6.4.2构建开关
6.4.3运行开关
6.4.4自适应开关
6.5硬件交互困难
6.5.1原子寄存器访问
6.5.2同一寄存器中混合的位类型
6.5.3边沿与电平中断
6.6测试与故障排除
6.6.1临时钩子
6.6.2永久钩子
6.7小结
第7章嵌入式软件编程和实现准则
7.1简介
7.1.1高质量编程的原则
7.1.2是什么让嵌入式不同于一般编程
7.2启动嵌入式软件项目
7.2.1硬件平台输入
7.2.2工程文件和组织
7.2.3团队编程指南
7.2.4语法标准
7.2.5源代码中的安全要求
7.3变量结构
7.3.1变量声明
7.3.2数据类型
7.3.3定义
第8章嵌入式操作系统
8.1前台/后台系统
8.2实时内核
8.2.1RTOS(实时操作系统)
8.2.2临界区
8.2.3任务管理
8.2.4分配任务优先级
8.2.5决定堆栈的大小
8.2.6空闲任务
8.3优先级
8.4就绪队列
8.5调度点
8.6上下文切换
8.7中断管理
8.7.1处理CPU中断
8.7.2非内核感知的中断服务程序
8.7.3拥有多种中断优先级的处理器
8.7.4所有的中断向量的共同地址
8.7.5每个中断向量对应唯一的地址
8.8时钟周期(或系统时钟周期)
8.9等待队列
8.10时间管理
8.11资源管理
8.11.1资源管理: 禁用/启用中断
8.11.2资源管理: 信号量
8.11.3资源管理: 优先级反转
8.11.4资源管理: 互斥信号量
8.11.5资源管理: 僵局(死锁)
8.12同步
8.12.1同步: 信号量
8.12.2同步: 信用跟踪
8.12.3双方相约
8.13消息传递
8.13.1消息
8.13.2消息队列
8.13.3流控制
8.13.4客户端和服务器端
8.14内存管理
8.15小结
第9章嵌入式系统设计的软件复用
9.1为什么软件复用如此重要
9.2什么限制了软件复用
9.3各种软件复用
9.4通过层实现复用
9.5进入到下一个级别
9.6引入元件厂
9.7工厂硬件配置
9.8工厂软件配置
9.9工厂对可复用性的作用
9.10RTOS不可知论
9.11任意扩展性
9.12结论
参考文献
第10章嵌入式系统的软件性能工程
10.1示例: eNodeB应用程序的延迟时间与吞吐量对比
10.2性能模式和反模式
参考文献
第11章嵌入式软件的性能优化
11.1代码优化过程
11.2使用开发工具
11.2.1编译器的优化
11.2.2基本的编译器配置
11.2.3启用优化
11.2.4附加的优化配置
11.2.5使用分析器
11.3背景——理解嵌入式架构
11.4基本的C优化技术
11.4.1选择正确的数据类型
11.4.2函数的调用规范
11.4.3指针和内存访问
11.4.4限制和指针别名
11.4.5循环
11.4.6额外的提示和技巧
11.5一般循环转换
11.5.1循环展开
11.5.2多采样技术
11.5.3部分求和
11.5.4软件流水线
11.6优化技术的实例应用: 互相关
11.6.1设置
11.6.2原始实例
第12章嵌入式软件的内存优化
12.1简介
12.2代码大小的优化
12.2.1编译标志位和标志位挖掘
12.2.2目标ISA的大小和性能的折中
12.2.3为代码大小调整ABI
12.2.4买者自负: 编译器优化正交码的大小
12.3内存布局优化
12.3.1内存优化简介
12.3.2重点优化
12.3.3向量化和动态代码: 计算比率
12.3.4C语言指针别名
12.4数据结构、数据结构的数组及其添加
12.5内存性能的循环优化
12.5.1数据对齐的连锁效应
12.5.2选择数据类型的益处
第13章嵌入式软件的功耗优化
13.1简介
13.2理解功耗
13.2.1功耗的基本概念
13.2.2静态与动态功率消耗
13.2.3最大功率、平均功率、最坏情况功率和典型功率
13.3测量功耗
13.3.1使用电流表测量功率
13.3.2使用霍尔传感器芯片测量功率
13.3.3VRMs(电压调整模块的电源芯片)
13.3.4静态功率测量
猜您喜欢