新書推薦:
《
希腊文明3000年(古希腊的科学精神,成就了现代科学之源)
》
售價:HK$
82.8
《
粤行丛录(岭南史料笔记丛刊)
》
售價:HK$
80.2
《
岁月待人归:徐悲鸿自述人生艺术
》
售價:HK$
61.4
《
女人的中国医疗史:汉唐之间的健康照顾与性别
》
售價:HK$
103.8
《
资治通鉴熊逸版:第四辑
》
售價:HK$
470.8
《
中国近现代名家精品——项维仁:工笔侍女作品精选
》
售價:HK$
66.1
《
宋瑞驻村日记(2012-2022)
》
售價:HK$
115.6
《
汗青堂丛书138·帝国的切口:近代中国口岸的冲突与交流(1832-1914)
》
售價:HK$
127.4
|
編輯推薦: |
《嵌入式系统软件工程》是NEWNES红宝书之专家指南,该书为读者提供了嵌入式软件工程的方法和技术,以优化嵌入式系统的设计和实践。在处理嵌入式系统开发过程中遇到的问题时,使用软件工程的方法,将事半功倍,极大提高效率,这部由16位业界知名专家联合撰写的嵌入式软件开发著作超过120万字,是一部真正意义上的嵌入式百科全书,适合作为嵌入式系统开发者的案头工具。Elsevier出版公司官网提供配套材料和教师资源。
|
內容簡介: |
嵌入式系统在最近几年中得到了迅速发展和广泛应用。这对嵌入式软件的可靠性、稳定性、鲁棒性和性能都提出了更高的要求,对嵌入式软件的开发也提出了新的挑战。本书讲述了嵌入式软件的重要特性和软件工程方法,例如软件设计、基于组件的开发、软件架构、系统集成和测试,以及与之配套的方法论、语言、工具和流程等。它几乎涵盖了嵌入式软件开发的所有方面,包括建模、软硬件协同设计、操作系统、编程规范、性能与优化、集成测试、质量控制、多核软件、知识产权与项目管理等主要问题。书中列举了存储与IO、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.2HWSW原型机用户
2.3HWSW原型机设计选项
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静态功率测量
13.3.5动态功率测量
13.3.6分析应用的功率消耗
13.4最小化功耗
13.4.1硬件支持
13.4.2时钟控制和电压控制
13.4.3低功耗示例
13.5优化数据流
13.5.1减少存储器访问的功率消耗
13.5.2DDR简介
13.5.3优化DDR数据流功耗
13.5.4通过时序优化功率
13.5.5通过交替方式优化
13.5.6优化存储器的软件数据组织
13.5.7优化通用DDR配置
13.5.8优化DDR burst访问
13.6SRAM和高速缓存数据流的功率优化
13.6.1SRAM所有存储器与代码大小
13.6.2SRAM功率消耗和并行处理
13.6.3数据转换与功率消耗
13.6.4高速缓存的使用与SoC存储器布局
13.6.5局部性说明
13.6.6集合关联说明
13.6.7高速缓存布局
13.6.8回写高速缓存与直写式高速缓存
13.6.9高速缓存一致性功能
13.6.10编译器优化高速缓存
13.7外设通信使用
13.7.1数据DMA与CPU
13.7.2协处理器
13.7.3系统总线配置
13.7.4外设速度等级和总线宽度
13.7.5外设到内核的通信
13.8算法
13.8.1编译器优化级别
13.8.2指令打包
13.8.3探讨循环展开
13.8.4软件流水处理
13.8.5禁止递归
13.8.6降低精度
13.8.7低功率代码序列和数据模式
13.9小结
第14章嵌入式系统中的用户界面设计
14.1用户界面设计分析阶段
14.1.1初步迭代设计
14.1.2第二个原型的开发高保真工具绘制模型
14.1.3基本的应用案例
14.1.4用户分析方案
14.1.5层次任务分析
14.1.6设计克服用户认识、感知及学习时的局限性的途径
14.1.7错误信息
14.2虚拟窗口
14.3使用实体关系图的数据模型
14.4使用CREDO试验矩阵来分析虚拟窗口
14.5启发式评估
14.6格式塔
14.7应用模型视图控制器体系结构设计用户界面
14.7.1MVC软件体系架构
14.7.2关于MVC软件体系结构的问题及展望
14.7.3使用MVC的解决方案
14.8对安全性要求苛刻的用户界面
14.8.1更加安全的HMI设计过程
14.8.2人机界面设计安全手册
参考文献
第15章嵌入式软件质量、集成和测试技术
15.1什么是软件测试
15.1.1为什么要测试软件
15.1.2多少测试就足够了
15.1.3应该何时进行测试
15.1.4谁来做决策
15.2可用的技术
15.2.1静态和动态分析
15.2.2需求追踪
15.2.3静态分析遵循编码标准
15.2.4基本结与基本圈复杂度案例研究
15.2.5理解动态分析
15.2.6继承高完整性的系统
15.2.7定义单元、模块和集成测试
15.2.8定义结构化覆盖分析
15.2.9结合单元测试和系统测试来实现代码覆盖
15.2.10通过回归测试保持功能
15.2.11单元测试和由测试驱动的开发
15.2.12自动生成测试用例
15.3设置标准
15.3.1标准的术语
15.3.2公认的流程标准的演变
15.3.3自由选择适当的标准
15.3.4建立内部的流程标准
15.3.5建立内部编码规范集的公共基础
15.3.6处理现有的代码库
15.3.7获得自定义软件开发的内部编码标准案例研究
15.4处理异常
15.4.1处理自动生成的代码
15.4.2处理继承的代码
15.4.3通过目标代码验证跟踪需求
15.5实施测试解决方案的环境
15.5.1实用主义的考虑
15.5.2考虑备选方案
15.6小结
第16章嵌入式系统的软件开发工具
16.1调试工具简介
16.2GDB调试
16.2.1GDB调试器的配置
16.2.2启动GDB
16.2.3编译应用程序
16.2.4调试应用程序
16.2.5检查数据
16.2.6使用断点
16.2.7步进
16.2.8更改程序
16.2.9分析内核转储
16.3调试代理设计
16.3.1使用案例
16.3.2调试代理简介
16.3.3启动应用程序
16.3.4上下文切换
16.3.5位置独立的可执行文件
16.3.6来自应用程序的调试事件
16.3.7多核
16.3.8启动调试代理
16.4使用JTAG调试
16.4.1使用JTAG的好处
16.4.2使用JTAG启动主板
16.4.3与调试代理的比较
16.4.4GDB和JTAG
16.5使用Eclipse和GDB的调试工具
16.5.1使用GDB调试Linux应用程序
16.5.2Linux内核的KGDB调试
16.6检测代码
16.7分析工具
16.7.1strace
16.7.2mtrace
16.7.3Valgrind
16.8硬件功能
16.8.1硬件断点
16.8.2硬件监视点
16.9调试提示和技巧
第17章嵌入式系统的多核软件开发
17.1分析和高层设计
17.1.1分析
17.1.2高层次设计
17.1.3小结
17.2实现和低层次设计
17.2.1基于线程的实现
17.2.2互斥、锁、嵌套锁
17.2.3粒度
17.2.4实现任务并行
17.2.5消息传递实现
17.2.6使用混合方法
参考文献
第18章安全关键软件的开发
18.1引言
18.2有哪些安全需求
18.3项目规划策略
18.4故障、失效、危害和风险分析
18.4.1故障、错误和失效
18.4.2可用性和可靠性
18.4.3故障处理
18.4.4危害分析
18.4.5风险分析
18.5安全关键的架构
18.6软件实施策略
参考文献
第19章知识产权
19.1背景
19.2软件属于你吗
19.2.1获得软件
19.2.2版权保护
19.2.3获得版权
19.3专利
19.3.1什么是专利
19.3.2为什么会有专利
19.3.3决定为哪些部分申请专利
19.3.4申请专利
19.3.5专利里都有什么
19.3.6专利授权
19.4问题
19.4.1开源软件
19.4.2授权和出售软件
19.4.3收购
19.4.4发现侵权
19.4.5避免版权侵权
19.4.6避免专利侵权
第20章管理嵌入式软件开发
20.1能力成熟度模型集成
20.2OSI模型
20.3软件开发
20.3.1V模型
20.3.2瀑布模型
20.3.3敏捷模型
20.4组织
20.5项目纲领
20.6利益相关者和核心团队
20.7产品生命周期管理
20.8组合管理
20.9项目管理生命周期
20.10项目生命周期
20.11解决问题
20.12沟通
20.13缩写,符号,首字母缩略词
20.14版权确认
参考文献
第21章嵌入式系统的敏捷开发
21.1引言
21.2嵌入式系统有什么特殊之处
21.3嵌入式系统的敏捷项目规划
21.3.1项目展望
21.3.2初始安全性可靠性风险评估
21.3.3初始项目风险评估
21.3.4估算
21.3.5进度安排
21.4嵌入式软件项目管理
21.4.1站立会议
21.4.2性能指标
24.4.3迭代回溯共同的阶段
21.5嵌入式敏捷开发实践
21.6敏捷规模因素
21.7敏捷方法能帮助你遵守标准吗
21.8小结
参考文献
第22章嵌入式软件在汽车领域中的应用
22.1发展历史
22.1.1汽车电子: 19112000
22.1.2电子内容增长的驱动力
22.1.3引发的嵌入式软件增长
22.1.4汽车编程语言
22.1.5小结
22.2汽车的各部分及其区别
22.2.1车身
22.2.2底盘和安全
22.2.3辅助驾驶
22.2.4动力总成和变速器
22.2.5信息娱乐和远程信息处理
22.2.6汽车子部分总结
22.3汽车质量
22.3.1基于墨菲定律制定计划
22.3.2容错通信
22.3.3容错软件
22.3.4零缺陷软件
22.3.5风险管理和故障模式
22.3.6失效模式和影响分析
22.4开发和测试
22.4.1子系统的互操作性
22.4.2软件规范
22.4.3软件体系结构
22.4.4建模
22.4.5自动编码与驱动程序
22.4.6基准测试
22.4.7跟踪和调试
22.4.8最后阶段的测试
22.4.9校验
22.4.10维护在产品生命周期内支持
22.5汽车诊断
22.5.1故障指示灯
22.5.2数据记录器
22.5.3第二代车载诊断
22.6汽车标准
22.6.1汽车工业软件可靠性协会
22.6.2汽车开放系统体系结构
22.6.3汽车电子委员会
22.7汽车安全
22.7.1ISO 26262标准
22.7.2汽车安全完整性等级
22.8汽车防盗
22.8.1过去这意味着:汽车警报器等
22.8.2现在这意味着: 黑客行为
22.8.3未来这将意味着: 假冒
22.9汽车市场不久的未来
22.9.1性能
22.9.2多核的出现
22.9.3车载终端
22.9.4自动汽车
22.10小结
第23章IO及存储设备编程
23.1IO设备与IO控制器
23.1.1IO设备的分类
23.1.2IO控制器
23.1.3内存映射与DMA
23.1.4闪存、SDSDHC与硬盘驱动器
23.1.5网络附加存储
23.2IO编程
23.2.1IO控制模式
23.2.2IO软件目标
23.2.3IO软件层
23.2.4案例研究: Linux设备驱动程序
23.3存储编程
23.3.1IO用于块设备
23.3.2闪存设备编程
23.3.3SATA设备驱动程序
23.4存储系统性能改善
23.4.1案例研究1: SDHC上的性能优化
23.4.2案例研究2: NAS上的性能优化
23.5小结
参考文献
第24章网络应用的嵌入式软件
24.1引言
24.2网络设备的系统结构
24.3网络多核SoC
24.3.1核心
24.3.2数据包引擎的硬件PEH块
24.4网络编程模型
24.5数据包处理软件的结构
24.5.1数据层面的基础设施DP红外线
24.5.2转发引擎的结构
24.5.3数据包处理应用的要求
24.6网络应用编程技术
24.6.1网络应用程序员可以使用的多核性能技术
24.6.2查找流上下文时避免使用锁
24.6.3避免引用计数
24.6.4安全引用机制
24.6.5流并行
24.6.6减少与更新统计数据相关的缓存冲突
24.6.7统计数据加速
24.7网络应用程序员常用的性能技术
24.8嵌入式网络设备的Linux操作系统
24.9小结
第25章嵌入式Linux操作系统
25.1简介
25.1.1选择Linux进行嵌入式系统开发的原因
25.1.2Linux发行版
25.1.3适用于Linux的嵌入式平台
25.1.4许可
25.2嵌入式Linux入门
25.2.1内存管理单元
25.2.2启动载入器
25.2.3引导装载程序
25.2.4内核
25.2.5应用程序
25.3在参考板上运行Linux
25.3.1参考平台
25.3.2从BeagleBone入手
附录AC语言编码标准: 源代码的发展
A.1适用范围
A.2定义
A.3规则与约定
A.3.1显示格式
A.3.2命名
A.3.3执行语句限制
A.3.4语言结构与特征
A.4复杂性
A.5问题构建
A.6源和include文件布局
A.7特性
A.8标准缩写
A.9建议的模块名
A.10源代码模板
A.11标准的包含文件模板
A.12portable.h包含文件模板
A.13函数模板
附录BC 在嵌入式软件、系统与平台方面的使用
B.1C 对于嵌入式相对廉价的特性
B.2C 对于嵌入式稍微昂贵的特性
B.3C 对于嵌入式昂贵的特性
案例研究1软件性能工程
CS1.1项目简介和说明
CS1.2初始性能评估与信息要求
CS1.3开发初始评估
CS1.4跟踪报告指标
CS1.5减少测量误差
CS1.6经验教训与总结
参考文献
案例研究2用户界面设计: 警务指挥与控制系统
CS2.1案例简介
CS2.2警务指挥与控制系统
CS2.2.1警务指挥与控制系统的说明和概念模型
CS2.2.2系统数据收集方法
CS2.2.3系统用例图和用例场景
CS2.3重要用例
CS2.4场景
CS2.4.1警务指挥和控制的用户界面场景完美场景
CS2.4.2不完美的场景
CS2.4.3警务指挥和控制系统的典型用户场景
CS2.5层次任务分析
CS2.6警务指挥和控制系统的主要交互方式
CS2.7克服用户认知、感知和学习限制的设计方法
CS2.8克服用户局限性的外部认知方法
CS2.9警务指挥和控制系统的报错信息和警告
CS2.10数据模型实体关系图与警务指挥和控制系统中的虚拟操作系统
CS2.11识别警务指挥和控制系统用户界面设计中的完全形态
CS2.12数据显示技术
CS2.13第一原型的易用性测试
CS2.14二次迭代低保真原型
CS2.14.1为低保真原型第二次迭代所做的易用性测试和缺陷矫正
CS2.14.2低保真原型的最终版
CS2.14.3支持从新手到专家的过渡
CS2.15高保真原型
CS2.16快速开始向导
案例研究3转化为多核
CS3.1典型应用软件简介
CS3.2软件系统分区
CS3.2.1控制层面软件迁移
CS3.2.2数据层面软件迁移
CS3.3数据包的并行处理
CS3.4混合方法并行加流水线
CS3.5与控制层面分区的数据通信
CS3.6管理代理
CS3.7RxTx驱动器
案例研究4嵌入式系统质量和衡量计划的软件工程
CS4.1开发方法
CS4.2度量收集
CS4.3小结
|
目錄:
|
目录
序(一)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.2HWSW原型机用户
2.3HWSW原型机设计选项
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静态功率测量
13.3.5动态功率测量
13.3.6分析应用的功率消耗
13.4最小化功耗
13.4.1硬件支持
13.4.2时钟控制和电压控制
13.4.3低功耗示例
13.5优化数据流
13.5.1减少存储器访问的功率消耗
13.5.2DDR简介
13.5.3优化DDR数据流功耗
13.5.4通过时序优化功率
13.5.5通过交替方式优化
13.5.6优化存储器的软件数据组织
13.5.7优化通用DDR配置
13.5.8优化DDR burst访问
13.6SRAM和高速缓存数据流的功率优化
13.6.1SRAM所有存储器与代码大小
13.6.2SRAM功率消耗和并行处理
13.6.3数据转换与功率消耗
13.6.4高速缓存的使用与SoC存储器布局
13.6.5局部性说明
13.6.6集合关联说明
13.6.7高速缓存布局
13.6.8回写高速缓存与直写式高速缓存
13.6.9高速缓存一致性功能
13.6.10编译器优化高速缓存
13.7外设通信使用
13.7.1数据DMA与CPU
13.7.2协处理器
13.7.3系统总线配置
13.7.4外设速度等级和总线宽度
13.7.5外设到内核的通信
13.8算法
13.8.1编译器优化级别
13.8.2指令打包
13.8.3探讨循环展开
13.8.4软件流水处理
13.8.5禁止递归
13.8.6降低精度
13.8.7低功率代码序列和数据模式
13.9小结
第14章嵌入式系统中的用户界面设计
14.1用户界面设计分析阶段
14.1.1初步迭代设计
14.1.2第二个原型的开发高保真工具绘制模型
14.1.3基本的应用案例
14.1.4用户分析方案
14.1.5层次任务分析
14.1.6设计克服用户认识、感知及学习时的局限性的途径
14.1.7错误信息
14.2虚拟窗口
14.3使用实体关系图的数据模型
14.4使用CREDO试验矩阵来分析虚拟窗口
14.5启发式评估
14.6格式塔
14.7应用模型视图控制器体系结构设计用户界面
14.7.1MVC软件体系架构
14.7.2关于MVC软件体系结构的问题及展望
14.7.3使用MVC的解决方案
14.8对安全性要求苛刻的用户界面
14.8.1更加安全的HMI设计过程
14.8.2人机界面设计安全手册
参考文献
第15章嵌入式软件质量、集成和测试技术
15.1什么是软件测试
15.1.1为什么要测试软件
15.1.2多少测试就足够了
15.1.3应该何时进行测试
15.1.4谁来做决策
15.2可用的技术
15.2.1静态和动态分析
15.2.2需求追踪
15.2.3静态分析遵循编码标准
15.2.4基本结与基本圈复杂度案例研究
15.2.5理解动态分析
15.2.6继承高完整性的系统
15.2.7定义单元、模块和集成测试
15.2.8定义结构化覆盖分析
15.2.9结合单元测试和系统测试来实现代码覆盖
15.2.10通过回归测试保持功能
15.2.11单元测试和由测试驱动的开发
15.2.12自动生成测试用例
15.3设置标准
15.3.1标准的术语
15.3.2公认的流程标准的演变
15.3.3自由选择适当的标准
15.3.4建立内部的流程标准
15.3.5建立内部编码规范集的公共基础
15.3.6处理现有的代码库
15.3.7获得自定义软件开发的内部编码标准案例研究
15.4处理异常
15.4.1处理自动生成的代码
15.4.2处理继承的代码
15.4.3通过目标代码验证跟踪需求
15.5实施测试解决方案的环境
15.5.1实用主义的考虑
15.5.2考虑备选方案
15.6小结
第16章嵌入式系统的软件开发工具
16.1调试工具简介
16.2GDB调试
16.2.1GDB调试器的配置
16.2.2启动GDB
16.2.3编译应用程序
16.2.4调试应用程序
16.2.5检查数据
16.2.6使用断点
16.2.7步进
16.2.8更改程序
16.2.9分析内核转储
16.3调试代理设计
16.3.1使用案例
16.3.2调试代理简介
16.3.3启动应用程序
16.3.4上下文切换
16.3.5位置独立的可执行文件
16.3.6来自应用程序的调试事件
16.3.7多核
16.3.8启动调试代理
16.4使用JTAG调试
16.4.1使用JTAG的好处
16.4.2使用JTAG启动主板
16.4.3与调试代理的比较
16.4.4GDB和JTAG
16.5使用Eclipse和GDB的调试工具
16.5.1使用GDB调试Linux应用程序
16.5.2Linux内核的KGDB调试
16.6检测代码
16.7分析工具
16.7.1strace
16.7.2mtrace
16.7.3Valgrind
16.8硬件功能
16.8.1硬件断点
16.8.2硬件监视点
16.9调试提示和技巧
第17章嵌入式系统的多核软件开发
17.1分析和高层设计
17.1.1分析
17.1.2高层次设计
17.1.3小结
17.2实现和低层次设计
17.2.1基于线程的实现
17.2.2互斥、锁、嵌套锁
17.2.3粒度
17.2.4实现任务并行
17.2.5消息传递实现
17.2.6使用混合方法
参考文献
第18章安全关键软件的开发
18.1引言
18.2有哪些安全需求
18.3项目规划策略
18.4故障、失效、危害和风险分析
18.4.1故障、错误和失效
18.4.2可用性和可靠性
18.4.3故障处理
18.4.4危害分析
18.4.5风险分析
18.5安全关键的架构
18.6软件实施策略
参考文献
第19章知识产权
19.1背景
19.2软件属于你吗
19.2.1获得软件
19.2.2版权保护
19.2.3获得版权
19.3专利
19.3.1什么是专利
19.3.2为什么会有专利
19.3.3决定为哪些部分申请专利
19.3.4申请专利
19.3.5专利里都有什么
19.3.6专利授权
19.4问题
19.4.1开源软件
19.4.2授权和出售软件
19.4.3收购
19.4.4发现侵权
19.4.5避免版权侵权
19.4.6避免专利侵权
第20章管理嵌入式软件开发
20.1能力成熟度模型集成
20.2OSI模型
20.3软件开发
20.3.1V模型
20.3.2瀑布模型
20.3.3敏捷模型
20.4组织
20.5项目纲领
20.6利益相关者和核心团队
20.7产品生命周期管理
20.8组合管理
20.9项目管理生命周期
20.10项目生命周期
20.11解决问题
20.12沟通
20.13缩写,符号,首字母缩略词
20.14版权确认
参考文献
第21章嵌入式系统的敏捷开发
21.1引言
21.2嵌入式系统有什么特殊之处
21.3嵌入式系统的敏捷项目规划
21.3.1项目展望
21.3.2初始安全性可靠性风险评估
21.3.3初始项目风险评估
21.3.4估算
21.3.5进度安排
21.4嵌入式软件项目管理
21.4.1站立会议
21.4.2性能指标
24.4.3迭代回溯共同的阶段
21.5嵌入式敏捷开发实践
21.6敏捷规模因素
21.7敏捷方法能帮助你遵守标准吗
21.8小结
参考文献
第22章嵌入式软件在汽车领域中的应用
22.1发展历史
22.1.1汽车电子: 19112000
22.1.2电子内容增长的驱动力
22.1.3引发的嵌入式软件增长
22.1.4汽车编程语言
22.1.5小结
22.2汽车的各部分及其区别
22.2.1车身
22.2.2底盘和安全
22.2.3辅助驾驶
22.2.4动力总成和变速器
22.2.5信息娱乐和远程信息处理
22.2.6汽车子部分总结
22.3汽车质量
22.3.1基于墨菲定律制定计划
22.3.2容错通信
22.3.3容错软件
22.3.4零缺陷软件
22.3.5风险管理和故障模式
22.3.6失效模式和影响分析
22.4开发和测试
22.4.1子系统的互操作性
22.4.2软件规范
22.4.3软件体系结构
22.4.4建模
22.4.5自动编码与驱动程序
22.4.6基准测试
22.4.7跟踪和调试
22.4.8最后阶段的测试
22.4.9校验
22.4.10维护在产品生命周期内支持
22.5汽车诊断
22.5.1故障指示灯
22.5.2数据记录器
22.5.3第二代车载诊断
22.6汽车标准
22.6.1汽车工业软件可靠性协会
22.6.2汽车开放系统体系结构
22.6.3汽车电子委员会
22.7汽车安全
22.7.1ISO 26262标准
22.7.2汽车安全完整性等级
22.8汽车防盗
22.8.1过去这意味着:汽车警报器等
22.8.2现在这意味着: 黑客行为
22.8.3未来这将意味着: 假冒
22.9汽车市场不久的未来
22.9.1性能
22.9.2多核的出现
22.9.3车载终端
22.9.4自动汽车
22.10小结
第23章IO及存储设备编程
23.1IO设备与IO控制器
23.1.1IO设备的分类
23.1.2IO控制器
23.1.3内存映射与DMA
23.1.4闪存、SDSDHC与硬盘驱动器
23.1.5网络附加存储
23.2IO编程
23.2.1IO控制模式
23.2.2IO软件目标
23.2.3IO软件层
23.2.4案例研究: Linux设备驱动程序
23.3存储编程
23.3.1IO用于块设备
23.3.2闪存设备编程
23.3.3SATA设备驱动程序
23.4存储系统性能改善
23.4.1案例研究1: SDHC上的性能优化
23.4.2案例研究2: NAS上的性能优化
23.5小结
参考文献
第24章网络应用的嵌入式软件
24.1引言
24.2网络设备的系统结构
24.3网络多核SoC
24.3.1核心
24.3.2数据包引擎的硬件PEH块
24.4网络编程模型
24.5数据包处理软件的结构
24.5.1数据层面的基础设施DP红外线
24.5.2转发引擎的结构
24.5.3数据包处理应用的要求
24.6网络应用编程技术
24.6.1网络应用程序员可以使用的多核性能技术
24.6.2查找流上下文时避免使用锁
24.6.3避免引用计数
24.6.4安全引用机制
24.6.5流并行
24.6.6减少与更新统计数据相关的缓存冲突
24.6.7统计数据加速
24.7网络应用程序员常用的性能技术
24.8嵌入式网络设备的Linux操作系统
24.9小结
第25章嵌入式Linux操作系统
25.1简介
25.1.1选择Linux进行嵌入式系统开发的原因
25.1.2Linux发行版
25.1.3适用于Linux的嵌入式平台
25.1.4许可
25.2嵌入式Linux入门
25.2.1内存管理单元
25.2.2启动载入器
25.2.3引导装载程序
25.2.4内核
25.2.5应用程序
25.3在参考板上运行Linux
25.3.1参考平台
25.3.2从BeagleBone入手
附录AC语言编码标准: 源代码的发展
A.1适用范围
A.2定义
A.3规则与约定
A.3.1显示格式
A.3.2命名
A.3.3执行语句限制
A.3.4语言结构与特征
A.4复杂性
A.5问题构建
A.6源和include文件布局
A.7特性
A.8标准缩写
A.9建议的模块名
A.10源代码模板
A.11标准的包含文件模板
A.12portable.h包含文件模板
A.13函数模板
附录BC 在嵌入式软件、系统与平台方面的使用
B.1C 对于嵌入式相对廉价的特性
B.2C 对于嵌入式稍微昂贵的特性
B.3C 对于嵌入式昂贵的特性
案例研究1软件性能工程
CS1.1项目简介和说明
CS1.2初始性能评估与信息要求
CS1.3开发初始评估
CS1.4跟踪报告指标
CS1.5减少测量误差
CS1.6经验教训与总结
参考文献
案例研究2用户界面设计: 警务指挥与控制系统
CS2.1案例简介
CS2.2警务指挥与控制系统
CS2.2.1警务指挥与控制系统的说明和概念模型
CS2.2.2系统数据收集方法
CS2.2.3系统用例图和用例场景
CS2.3重要用例
CS2.4场景
CS2.4.1警务指挥和控制的用户界面场景完美场景
CS2.4.2不完美的场景
CS2.4.3警务指挥和控制系统的典型用户场景
CS2.5层次任务分析
CS2.6警务指挥和控制系统的主要交互方式
CS2.7克服用户认知、感知和学习限制的设计方法
CS2.8克服用户局限性的外部认知方法
CS2.9警务指挥和控制系统的报错信息和警告
CS2.10数据模型实体关系图与警务指挥和控制系统中的虚拟操作系统
CS2.11识别警务指挥和控制系统用户界面设计中的完全形态
CS2.12数据显示技术
CS2.13第一原型的易用性测试
CS2.14二次迭代低保真原型
CS2.14.1为低保真原型第二次迭代所做的易用性测试和缺陷矫正
CS2.14.2低保真原型的最终版
CS2.14.3支持从新手到专家的过渡
CS2.15高保真原型
CS2.16快速开始向导
案例研究3转化为多核
CS3.1典型应用软件简介
CS3.2软件系统分区
CS3.2.1控制层面软件迁移
CS3.2.2数据层面软件迁移
CS3.3数据包的并行处理
CS3.4混合方法并行加流水线
CS3.5与控制层面分区的数据通信
CS3.6管理代理
CS3.7RxTx驱动器
案例研究4嵌入式系统质量和衡量计划的软件工程
CS4.1开发方法
CS4.2度量收集
CS4.3小结
|
|