ARM DS-5是一款功能强大的集成开发环境(IDE),专为ARM架构的处理器设计。它提供了丰富的工具和功能,用于高级调试和诊断,帮助开发人员深入分析和优化他们的应用程序。以下是使用ARM DS-5进行高级调试和诊断的一些方法和技巧:
1 DS-5 工程创建
1. 启动 DS-5 并设置工作空间:从桌面菜单中选择 “Eclipse for DS-5” 来启动 DS-5。在弹出的 “Workspace Launcher” 对话框中,可以接受默认的工作空间,也可以点击 “Browse” 选择一个文件夹作为工作空间,例如 “c:\ds-5_workspace”,并勾选 “Use this as the default and do not ask again” 选项后点击 “OK”。
2. 获取许可证:如果是首次使用 DS-5,会弹出 “No License Found” 对话框,点击 “Open License Manager”,在 “ARM License Manager” 对话框中点击 “Add License”,接着在 “Add License” 对话框中选择 “Generate a 30-day evaluation license for DS-5 Ultimate Edition” 选项并点击 “Next”。然后在 “Choose Network Interface” 对话框中选择一个网络接口,建议选择物理网络接口。在 “Developer Account Details” 对话框中输入 ARM 开发者(银牌)账号的详细信息,如果没有账号则需创建一个,最后点击 “Finish”。当许可证成功注册后,可在 “ARM License Manager” 中看到 30 天的评估许可证以及可用的工具包,关闭该对话框,并在确认重启 Eclipse 的对话框中点击 “Restart Eclipse”。
3. 创建新项目:从 DS-5 主菜单中选择 “File”->“New”->“C Project”,弹出 “C Project” 对话框。在 “Project name” 字段中输入项目名称,如 “hello world”;在 “Project type” 下选择 “Executable”->“Empty Project”;在 “Toolchains” 中选择 “ARM Compiler 5”,点击 “Finish” 即可创建一个名为 “hello world” 的 C 项目,可在 “Project Explorer” 视图中查看该项目。
2 ARM DS-5 加载 ELF 文件运行
1. 创建工程并扫描硬件信息:使用 ARM DS-5 前需创建工程项目,并扫描相应硬件信息,如 CPU、Coresight 组件、Cache 等,扫描完成后再执行 “build platform”12.
2. 创建加载脚本:可通过 JTAG 接口用 DS-5 将镜像烧写到内存,配置 PC 指针来启动固件。创建脚本时要注意将固件启动汇编部分的 data 段的 copy 部分注释掉,因为 DS-5 加载 elf 文件时会自动根据 elf 符号表将 data 段加载到对应地址1.
3. 执行脚本:执行 DS-5 脚本时先进行 SoC reset 操作,reset 后系统从 bootrom 重启,DS-5 接入,接着执行 stop 命令,再 load elf 文件,DS-5 会自动解析入口点,最后执行 run 命令即可1.
3 ARM DS-5 断点设置及常用 Debug 命令
1. 断点设置:在 DS-5 的调试界面中,可在代码行号左侧空白处点击设置普通断点。对于条件断点,在断点设置窗口中找到对应的断点,于条件表达式框中输入条件即可 。
2. 常用 Debug 命令:
1) stop 命令:用于暂停程序的执行,比如在加载 elf 文件前执行此命令,可使程序处于停止状态以便进行后续操作1.
2) run 命令:使程序从当前停止位置继续运行,可用于启动已加载的 elf 文件17.
3) step into:单步执行程序,遇到函数调用会进入函数内部继续单步执行,便于详细查看程序的执行流程和函数内部的逻辑。
4) step over:同样是单步执行,但遇到函数调用时,会将函数当作一个整体执行完,直接跳到函数调用的下一行,适合在不需要深入函数内部时快速查看主程序流程。
5) step return:在函数内部执行时,使用此命令可直接执行到函数返回处,跳出当前函数,继续执行函数调用后的代码。
4 ARM DS-5 + DSTREAM 使用配置——软件配置
1. 申请 License:登录 ARM 官网注册账号并申请免费版本23.
2. 建立 Data Base:打开 DS-5 工具,按提示建立 Data Base23.
3. Platform Configuration:进行扫描操作,完成后执行 “build platform”123.
4. DEBUG 配置:根据具体的调试需求,进行相应的 DEBUG 配置,如选择连接的目标设备、调试模式等3.
5 ARM DS-5 Trace 使用
1. 创建 Debugger Core 连接:新建一个 “Debugger” core 连接,创建完成后需断开先前已连接的,以便进行后续的 trace 数据抓取等操作4.
2. 重新编译平台:完成 debugger 的创建后,重新编译.sdf 文件,编译时需选择 “Full Debug and Trace”4.
3. 加载 elf 文件:将对应的 elf 文件加载到 DS-5 中,以便在分析 trace 数据时能正确地显示函数名、变量名等符号信息4.
4. 使用 Trace 控制窗口:通过 Trace 控制窗口可查看 trace 数据,还可抓取 trace dump 快照进行线下分析。此外,可按步骤配置来查看 trace 中函数的执行情况,如函数执行时间占比等
ETM 数据 Trace 和指令 Trace
1)新建一个"Debugger" core 连接, 创建步骤如下图所示,下图创建的是一个名为 “Trace_Demo” 的 debuger core 连接,需要注意的是在创建完成后,需要将先前已经连接的进行断开,如下图的“New_configuration
2)重新编译平台
上面第一步完成了debuger 的创建之后,需要再重新编译 .sdf 文件,编译方法如下图:
当前是进行trace数据抓取,所以选择 “Full Debug and Trace”
Trace 控制窗口
6 总结:
ARM DS - 5 高级调试与诊断技巧总结:
1. 灵活运用断点、单步调试和观察点,精确控制程序执行流程并监测变量变化。
2. 借助多核调试和系统级调试功能,处理多核协同与硬件交互相关问题。
3. 利用性能和内存分析技巧,排查性能瓶颈和内存相关故障。
4. 掌握工程创建、文件加载运行以及相关配置方法,保障调试工作顺利开展。