Linux/Android开发利器——ARM DS-5使用指南

简介
本书特色
前言
章节列表
精彩阅读
下载资源
相关图书
本书是一本全面介绍ARM DS-5使用方法的书籍,共24章,分为4个部分。
第一部分是DS-5的基本入门部分,主要介绍DS-5的基本功能和组件,DS-5的基本使用方法,DS-5的相关文件、文档和安装。第二部分详细介绍Eclipse的各个重要组成部分,包括Eclipse软件的各个功能的使用介绍,并重点介绍项目管理、编辑器和远程系统管理的详细使用。第三部分详细介绍DS调试器各个重要组成部分的使用,包括从与开发板的连接到调试技术的各个方面的使用细节和步骤。第四部分详细介绍DS-5性能分析各种技术的使用方法,内容包括性能分析环境的构建,分析报告的创建,以及对数据的各种分析方法。
本书适合在Linux和 Android下进行嵌入式开发的设计者使用。
涵盖Linux和Android两大系统
详解ARM DS-5应用方法
全面阐释嵌入式系统调试与性能分析
协助ARM架构下嵌入式高端系统开发与优化
前 言
DS-5(即ARM Development Studio 5)是ARM公司最新推出的嵌入式系统专业软件开发解决方案,是一款基于ARM架构的 Linux和Android平台全面的端到端软件开发工具套件。借助该工具套件,在ARM支持的平台上,针对Linux和Android系统,可以轻松地进行系统开发和优化,缩短开发和测试周期,有助于提高资源的使用效率。
ARM DS-5 工具集包括:
(1)灵活的DS-5 Eclipse集成开发环境(IDE):定制的Eclipse IDE,能与第三方插件兼容;具有功能强大的C/C++编辑器和项目管理器;基于ARM Linux的GNU编译工具;且集成众多实用工具,例如远程系统浏览器、SSH和Telnet 终端等。
(2)DS-5 Debugger端到端调试器:能启动加载程序、内核和用户空间调试;进行非侵入性指令跟踪,包括汇总的配置文件;具有更快、更简单的自动调试会话;设备配置数据库的一次单击即可完成的JTAG调试配置。
(3)Real-Time System Models实时系统模型:预先与ARM嵌入式Linux一起加载的Cortex-A8 系统模型模拟器;实现直接主机上的Linux应用程序调试;具有高于250MHz的典型模拟速度。
(4)ARM流水线性能分析器:无需JTAG探针的系统范围的分析;进程、线程、函数和源代码行的CPU使用情况统计信息;提供性能相关事件(例如高速缓存未命中次数、中断数)与软件执行的即时关联和关键路径标识及动态内存使用情况分析。
(5)DS-5为基于Linux和Android的系统开发最优的解决方案和便捷的调试分析环境。DS-5适合不同层次的开发者使用,包括专业的应用程序开发工程师和嵌入式软件开发入门者,并能满足基于Linux和Android的高端应用开发。
本书是一本全面介绍ARM DS-5使用方法的书籍,适合在Linux和Android下进行嵌入式开发的设计者。全书共24章,分为以下4个部分。
第一部分1~3章,是DS-5使用入门部分。该部分首先介绍DS-5的基本功能和组件,然后指导读者了解DS-5的基本使用方法,最后介绍DS-5的相关文件、文档和安装。
第二部分4~7章,详细介绍Eclipse的各个重要组成部分。包括Eclipse软件各个功能的使用介绍,并重点介绍项目管理、编辑器和远程系统管理的详细用法。通过这些内容可以让读者掌握Eclipse的使用,为后期的开发奠定基础。
第三部分8~15章,详细介绍DS调试器各个重要组成部分的使用。内容包括从与开发板的连接到调试技术的各个方面的使用细节和步骤,通过本部分的学习,可以让读者掌握实际嵌入式软件开发的一些常规调试手段。这些内容是使用DS-5进行嵌入式高级开发必须掌握的调试技术,内容非常丰富,因此,这部分内容适合作为开发人员的手册,在进行DS-5调试过程中随时查阅。
第四部分16~24章,详细介绍DS-5性能分析技术的使用方法。内容包括性能分析环境的构建,分析报告的创建,以及对数据的各种分析方法。这部分内容可以让读者了解资源的利用效率,有助于优化系统设计。最后还介绍了V5.9版本的新增功能。
作者在本书写作过程中得到了许多支持和帮助。首先感谢ARM公司和深圳米尔科技有限责任公司的支持。ARM公司在第一时间为作者提供了最新的DS-5授权的英文文档和测试版软件及仿真器,米尔科技有限责任公司提供了开发板,在此对ARM公司的赵慧波、毛卫洋,米尔公司的资深工程师表示谢意。其次感谢桂林电子科技大学计算机科学与技术学院的黄廷辉老师、教学实践部的秦兴国、黄雄华老师,信息与通信学院的符强老师、机电工程学院的韦荔浦老师,以及硕士研究生周卫、杨飞、谢国龙和宾世昌,他们完成了大量的资料收集、翻译和整理工作,本书是他们汗水的结晶。最后感谢中国水电出版社的杨庆川老师,她在本书的排版、格式、命名及出版方面给予作者很多建议和帮助。
为了尽快将DS-5展示给嵌入式开发者,本书的写作时间比较仓促,加之作者水平有限,书中错误之处敬请广大读者批评指正。
崔更申 秦兴国
于桂林电子科技大学
2012年3月
第1章 DS-5介绍 2
1.1 关于DS-5 2
1.2 关于DS-5 Eclipse 2
1.3 关于DS-5 Debugger 3
1.4 关于Real-Time System Models 3
1.5 关于编译工具 4
1.6 关于GNU编译工具 4
1.7 关于ARM Streamline性能分析器 5
1.8 关于调试硬件配置工具 5
第2章 DS-5快速使用实例 6
2.1 导入示例项目到Eclipse 6
2.2 在Eclipse中编译Gnometris项目 6
2.3 命令行下编译Gnometris项目 7
2.4 Real-Time System Model上装载
Gnometris程序 7
2.5 装载Gnometris程序到ARM Linux 8
2.6 使用SSH连接设置和运行在ARM Linux
上的Gnometris 8
2.7 连接已经在ARM Linux上运行的
Gnometris 程序 12
2.8 调试Gnometris 14
2.9 调试可装载的内核模块 15
2.9.1 预备知识 15
2.9.2 步骤 15
2.10 运行在ARM Linux上的应用程序的
线程性能分析 17
2.10.1 预备知识 17
2.10.2 步骤 18
2.11 调试Android本地C/C++应用程序和库 18
2.11.1 预备知识 19
2.11.2 步骤 19
2.12 DS-5许可管理 22
第3章 DS-5安装并获得许可证 24
3.1 系统要求 24
3.1.1 所支持的平台 24
3.1.2 DS-5要求 24
3.2 安装目录 25
3.3 许可和更新 25
3.4 文档 26
3.5 示例 26
第二部分 使用Eclipse集成开发环境
第4章 开始使用Eclipse开发环境 28
4.1 在Eclipse环境中安装ARM插件 28
4.2 启动Eclipse 29
4.3 使用欢迎界面 29
4.4 Eclipse工作台窗口简介 30
4.5 Eclipse工作台的特点 31
4.6 工作空间 31
4.7 资源 32
4.8 关于工程集 35
4.9 创建工程集合 35
4.10 更改工程管理器栏目中的顶层元素 36
4.11 取消工程集合列表形式 36
4.12 视图和栏目 37
4.12.1 视图 37
4.12.2 栏目 37
4.12.3 修整条 39
4.12.4 快速查看条 39
4.13 菜单 39
4.14 工具栏 40
4.15 编辑源代码 40
4.15.1 导航 40
4.15.2 搜索 41
4.15.3 内容助手 41
4.15.4 书签 41
4.16 配置Eclipse 41
4.17 参数(Preferences)对话框 41
4.18 属性(Properties)对话框 42
4.19 导入和导出选项 43
4.20 使用导入向导 44
4.21 使用导出向导 44
4.22 访问动态帮助 45
4.23 使用ARM-specific速查表 45
4.24 安装新特性 46
4.25 使用限制 47
第5章 使用Eclipse项目 48
5.1 项目类型 48
5.2 创建一个新的C/C++项目 49
5.3 为ARM Linux创建一个新的Makefile
项目 50
5.4 导入一个存在的Eclipse项目 50
5.5 为特定的编译配置设置编译工具 51
5.6 配置C/C++的编译行为 52
5.7 更新项目的工具链 53
5.8 在项目中增加一个新的文件 54
第6章 使用Eclipse编辑器 55
6.1 C/C++编辑器概述 55
6.2 ARM汇编编辑器概述 55
6.3 ELF内容编辑器概述 56
6.4 ELF内容编辑器——头文件标签 56
6.5 ELF内容编辑器——概述标签 57
6.6 ELF内容编辑器——符号表标签 57
6.7 ELF内容编辑器——反汇编标签 58
6.8 分散文件编辑器概述 58
6.9 创建分散(scatter)文件 59
6.10 从BCD文件导入内存映射 60
第7章 使用远程系统管理 62
7.1 远程系统关系概述 62
7.2 远程系统视图 63
7.3 远程系统细节视图 63
7.4 远程暂存视图 64
7.5 终端视图 64
第三部分 使用DS-5调试器
第8章 开始使用DS-5调试器 67
8.1 调试器的概念 67
8.2 从Eclipse中启动调试器 68
8.3 从命令控制台启动调试器 68
8.4 DS-5调试视图快捷方式 70
8.5 DS-5调试器命令行控制台快捷键 71
第9章 配置连接和检查嵌入式目标对象 72
9.1 连接到目标对象的类型 72
9.2 配置到实时系统模块的连接 72
9.3 使用gdbserver配置到Linux目标对象上
的连接 74
9.4 配置到Linux内核上的连接 75
9.5 配置和裸板目标的连接 76
9.6 配置连接到裸板上的事件查看器 77
9.7 导出已有的配置 78
9.8 导入已有的启动配置 79
9.9 从目标对象中取消连接 80
9.10 检查目标对象的执行环境 80
9.11 检查调用堆栈 81
9.12 有关跟踪支持的问题 82
第10章 控制程序的运行 84
10.1 装载镜像文件到目标对象 84
10.2 装载调试信息到调试器 85
10.3 运行一个镜像文件 86
10.4 断点和监视点 86
10.5 设置执行断点 87
10.6 设置数据监视点 88
10.7 设置条件断点 88
10.8 在一个具体的线程设置断点 90
10.9 挂起断点和监视点 91
10.10 导出DS-5 断点设置到一个文件 91
10.11 从一个文件导出DS-5 断点设置 92
10.12 单步执行一个应用程序 92
10.13 处理UNIX信号 93
10.14 处理器异常的处理 94
10.15 配置调试器路径替代规则 94
第11章 调试嵌入式系统 96
11.1 调试管理程序 96
11.2 调试裸板对称多处理系统 97
11.2.1 配置和连接 97
11.2.2 镜像文件和符号装载 97
11.2.3 运行、停止和单步执行 97
11.2.4 断点、观察点和信号 97
11.2.5 检查目标状况 98
11.2.6 跟踪 98
11.3 调试多线程应用程序 98
11.4 调试共享库 99
11.5 调试一个Linux内核 100
11.6 调试Linux内核模块 101
11.6.1 内嵌模块 101
11.6.2 可装载的模块 101
11.7 调试 TrustZone 使能目标对象 101
第12章 使用脚本调试和Flash烧写 103
12.1 导出在调试会话期间生成的DS-5
调试器命令 103
12.2 创建一个DS-5调试器脚本 103
12.3 创建 Jython 脚本 104
12.4 创建一个CMM类型的脚本 106
12.5 运行一个脚本 107
12.6 在Eclipse里配置一个Jython项目 108
12.7 烧写Flash存储器 109
12.7.1 注册一个新的闪存算法 109
12.7.2 在闪存中编程 110
第13章 半主机和Log4j控制运行消息 112
13.1 半主机和内存顶端 112
13.2 半主机工作模式 113
13.3 在调试器中使能自动半主机支持 113
13.4 使用命令行控制台控制半主机消息 113
13.5 日志信息输出的控制 114
13.6 Log4j 配置文件 114
13.7 从调试器定制日志信息输出 114
13.7.1 显示记录消息到控制台的示例 115
13.7.2 显示记录消息到一个文件的示例 116
13.7.3 展示如何将消息日志整合到控制台
和文件的示例 116
第14章 使用快照浏览器 118
14.1 创建一个快照浏览器初始化文件 118
14.1.1 预备条件 118
14.1.2 创建一个快照浏览器初始化文件
的过程 118
14.1.3 创建一个快照浏览器初始化文件
的限制 119
14.1.4 示例 119
14.2 快照浏览器 120
14.2.1 寄存器值 120
14.2.2 内存值 121
14.2.3 调试符号 121
14.3 连接到快照浏览器 122
14.4 创建快照浏览器的调试器脚本时的
注意事项 122
第15章 DS-5调试器视图和视图 124
15.1 App控制台视图 124
15.2 ARM Asm Info视图 125
15.3 ARM汇编编辑器 126
15.4 断点视图 127
15.4.1 断点语法 127
15.4.2 观察点入口语法 128
15.4.3 工具条和上下文菜单选项 128
15.5 C/C++编辑器 129
15.5.1 Action context 菜单选项 130
15.5.2 Editor context 菜单 130
15.6 事件查看器的通道编辑器 131
15.7 命令视图 131
15.8 调试控制视图 133
15.9 Disassembly 视图 135
15.10 Expressions视图 137
15.11 函数视图 139
15.12 历史视图 140
15.13 内存视图 142
15.14 模块视图 144
15.15 Registers视图 145
15.16 屏幕视图 147
15.17 脚本视图 148
15.18 目标视图 149
15.19 踪迹视图 150
15.20 变量视图 152
15.21 导出内存对话框 154
15.22 导入内存对话框 154
15.23 导出跟踪报告对话框 155
15.24 断点属性对话框 156
15.24.1 断点信息 157
15.24.2 断点选项 158
15.25 监视点属性对话框 158
15.26 管理信号对话框 159
15.27 函数过滤器对话框 159
15.28 调试配置——连接表 160
15.29 调试配置文件选项卡 162
15.30 调试配置——调试器标签 164
15.31 调试配置——参数标签 166
15.32 调试配置——环境标签 167
15.33 调试配置——事件查看器标签 168
15.34 DS-5调试器菜单和工具条图标 169
15.34.1 DS-5 调试器图标 170
15.34.2 视图图标 171
15.34.3 视图工具图标 171
15.34.4 视图标记 171
15.34.5 混杂图标 172
第四部分 使用ARM Streamline性能分析器
第16章 设置Linux和Android目标机 174
16.1 设置ARM Linux目标机 174
16.1.1 先决条件 174
16.1.2 装载Gator守护进程 174
16.1.3 准备并编译内核 175
16.1.4 构建Gator模块 175
16.1.5 在目标机上运行 176
16.2 设置Android目标机 176
16.2.1 准备并编译内核 176
16.2.2 构建Gator守护进程 177
16.2.3 构建Gator模块 177
16.2.4 连接目标机 177
16.2.5 在目标机上运行Gator守护进程 177
16.2.6 设置捕捉选项用以支持Android
目标机 178
第17章 使用Streamline数据视图 179
17.1 ARM Streamline数据视图的基本操作 179
17.1.1 Streamline捕捉数据与Streamline
分析报告 180
17.1.2 手动停止捕捉会话 180
17.2 ARM Streamline数据视图的工具栏
选项 180
17.3 分析数据定位对话框的使用 181
第18章 设置捕捉选项 182
18.1 打开捕捉选项对话框 182
18.2 捕捉选项设置 183
第19章 配置Counters计数器 186
19.1 打开Counters配置对话框 186
19.2 使用Counters配置对话框 187
19.2.1 添加新事件 188
19.2.2 删除事件 188
19.2.3 定制事件收集分类列表 189
19.2.4 基于事件采样 189
19.2.5 计数器配置选项 190
第20章 Timeline视图 191
20.1 关于Timeline视图 191
20.1.1 图表 192
20.1.2 进程 192
20.1.3 详细信息栏 192
20.1.4 X-Ray模式 193
20.1.5 进程过滤 193
20.1.6 书签 193
20.2 Timeline图表 194
20.3 数据筛选及Timeline的其他控件 195
20.3.1 使用时间轴标尺对数据进行筛选 195
20.3.2 通过处理控件调整曲线图表及
进程表中内容的排列顺序 195
20.3.3 时间断面标记 196
20.3.4 曲线图表区与进程表区分隔栏 197
20.4 Timeline视图的工具栏选项及快捷键 197
20.5 可视化标注功能 198
第21章 视图 200
21.1 表单视图 200
21.1.1 表单视图的工具栏选项、上下文
菜单及快捷键 200
21.1.2 对表单报告中的数据进行排序 202
21.1.3 调用链视图表头 203
21.1.4 函数视图表头 203
21.1.5 堆栈视图表头及线程表格的最大
堆栈深度 204
21.2 代码视图 204
21.2.1 代码定位功能 205
21.2.2 定位缺失源代码文件 206
21.2.3 查找命令 207
21.2.4 代码视图工具栏选项及快捷键 207
21.3 调用关系视图 208
21.3.1 层次结构如何构造 208
21.3.2 主调函数与被调函数连接节点 209
21.3.3 缩略视图区 209
21.3.4 颜色标记代码性能 210
21.3.5 函数选定高亮操作 210
21.3.6 快捷菜单选项 211
21.3.7 调用关系视图工具栏及快捷键 211
第22章 标注视图和日志视图 213
22.1 通过标注视图定制报告格式 213
22.1.1 annotate.h 头文件代码 214
22.1.2 sum.c源代码 215
22.2 在可视化标注视图中添加图像至报告 215
22.3 Log视图 218
22.3.1 Log视图搜索框 218
22.3.2 Log视图表头 218
22.3.3 Log视图中的Totals面板 219
第23章 高级功能定制 220
23.1 捕捉数据的本地化存储 220
23.2 创建并定制性能 221
23.2.1 gator_events_mmaped.c模板文件 221
23.2.2 自定义counter 223
23.2.3 gator_events函数 223
23.2.4 更新events.xml文件 223
23.3 从已存储的捕捉数据中创建新的
分析报告 224
第24章 v5.9版本的新增功能 225
24.1 Big.little多核调试SMP Debugging
介绍 226
24.2 GPU的使用 228
24.2.1 GPU简介 228
24.2.2 Mali流水线设置 229
24.2.3 Mali具体事件 230
24.3 功耗性能分析 231
24.3.1 功耗探测器简介 231
24.3.2 使用功耗探测器的条件 232
24.3.3 功耗探测器的安装 233
24.3.4 功耗探测器使用 236
- Java面向对象程序设计 [主编 姜春磊 陈虹洁]
- C语言程序设计实验指导与实训(第二版) [主编 倪燃]
- Python程序设计及实践教程 [肖朝晖]
- C语言程序设计 [魏琴 刘祖珉 赵仕波 肖阳春]
- C语言程序设计实验教程 [张小刚 司春景]
- 电气控制与PLC程序设计(第二版) [胡冠山]
- Java Web项目化设计实践教程 [邱云 曾陈萍]
- C语言程序设计(第三版) [主编 丁红 王立新 蔡开立]
- Python数据分析 [主编 冯志辉 赵磊 李放]
- Python程序设计与应用(第二版) [主编 张广渊]
- C程序设计实践教程 [刘卫国]
- C程序设计(慕课版) [刘卫国]
- 程序设计基础实践教程(C/C++语言版) [张桂芬 葛丽娜]
- C++案例项目精讲 [主编 杨国兴]
- SwiftUI完全开发 [李智威 著]
- MySQL数据库项目式教程 [陈亚峰]
- C语言程序设计习题与实验指导(第二版) [主编 甄增荣 张宾]
- C语言程序设计(第二版) [主编 甄增荣 田云霞]
- Unity3D虚拟现实应用开发实践 [主 编 刘龙]
- Python程序设计 [主编 姜春磊 陈虹洁]
- C语言程序设计实践教程(活页式) [主编 郑茵 陈巍 滕泓虬]
- 面向对象程序设计 [主编 张勇 张平华 赵小龙]
- Python程序设计基础及实战 [主编 刘健]
- C语言程序设计 [姜雪]
- Python程序设计实践教程 [王鹤琴 蔡正保]
- C++程序设计实践教程(第三版) [主编 刘卫国 曹岳辉]
- C++程序设计(第三版) [主编 曹岳辉 刘卫国]
- C语言程序设计项目化教程(活页式) [主编 张利华 潘晓利]
- 机器人流程自动化(RPA)实战——基于UiPath [主编 金鑫]
- Python 语言程序设计实践指导 [主编 张双狮]