《trace32仿真器使用教程+》由会员分享,可在线阅读,更多相关《trace32仿真器使用教程+(23页珍藏版)》请在金锄头文库上搜索。
1、 上海锐极电子科技有限公司 021/52666785/52667625 Ruijitek Electronic & Technology Co.,LTD. Http: Email: support 简介简介 大家可能会对 uTrace-ICD 比较陌生, 简单介绍一下, uTrace-ICD 是 TRACE32-ICD 的兼容机。 在这里我首先感谢国人的努力能让我用很 少的 RMB 用上这么高端仿真器。废话少说,下面我给大家介绍一下 uTrace-ICD 下具体实现 Linux 调试的具体过程。 大概介绍一下实现的具体原理,首先要有一块可用的目标板,我选 用的是 SMDK2410 评估板。编译
2、环境是在虚拟 VMware+RedHat9.0, 调试环境是 uTRACE。在这里有个问题:就是在虚拟机下编译的 arm linux 内核如何传递给安装在 Windows 下的 uTRACE。 我用的方法就是 通过 SMB 服务器。 在 Redhat9.0 下配置 SMB Server 将 arm linux 的源 码包通过网络共享的方式共享给 Windows XP。在 XP 下的 Windows 资源管理器中将 Redhat9.0 共享的 arm linux 源码包影射为本地的一个 虚拟盘比如是:Z 盘。这样 uTRACE 就可以象操作本地盘一样来读取 Redhat9.0 中的 arm li
3、nux 源码包以及编译生成的内核映像及内核的符 号表。 对于 uTRACE 调试器来说,需要的东东就是包含调试信息的 arm linux 的内核映像 vmlinux。在这里要注意“包含调试信息“,arm linux 内 核配置选项默认可能是不包含调试信息,如果将没有包含调试信息的 vmlinux 供 uTRACE 使用是实现不了内核源码级调试的。 所以我们在配 置 arm linux 内核时一定要将包含内核调试信息的选项选上。具在 上海锐极电子科技有限公司 021/52666785/52667625 Ruijitek Electronic & Technology Co.,LTD. Http:
4、 Email: support “kernel hacking“下。 其次 uTRACE 调试器需要的就是 arm linux 内核源 码树。 调试器的工作原理就是通过给定的地址查找对应的符号表找到对 应的符号,以及符号所在文件的路径信息,行信息等,近而找到源程序 所对应的函数或变量。 简单介绍了 uTRACE 调试的基本原理,接下来,具体介绍一下 arm linux 内核,驱动,及应用层源码级调试的具体实现过程。 具体实现具体实现 上一节简单介绍了 uTrace-ICD 调试的基本原理,下面将详细介绍 调试的具体实现过程。 首先介绍一下我用的评估板 SMDK2410 的具体情况。目标板是 n
5、or flash 启动,大小为 8M,SDRAM 配置情况是 32M,首地址是 0x30000000。软件配置情况:bootloader 为 ppcboot2.0,arm linux 内 核为 2.4 内核(实现过程对 2.6 内核也适用)。 第一步第一步:配置虚拟机配置虚拟机 Redhat9.0 编译环境。编译环境。 安装交叉编译器 arm-elf-gcc,解压 arm linux 源码包到 “SMDK2410kernel”下,解压 ppcboot 到“SMDK2410ppcboot-2.0.0” 下。 配置 SMB Server 将“SMDK2410”目录网络共享出去。在 Windows
6、上海锐极电子科技有限公司 021/52666785/52667625 Ruijitek Electronic & Technology Co.,LTD. Http: Email: support XP 下同过网上邻居访问此目录并映像为本地磁盘“Z 盘“, 这样 uTRACE 就可以像访问本地文档一样访问 Linux 下的文档了。 接下来编译 ppcboot 以及 arm linux 内核生成可执行映像,分别为 ppcboot 及 vmlinux(注意在配置 arm linux 内核时将“Kernel Hacking”下 “Include debugging Information in ker
7、nel binary”选项选上-生成调试信 息)。 第二步第二步:bootloader 的调试。的调试。 以上开发环境都建立好,我们可以开始 PPCBOOT 的调试。打开 uTRACE-ICD 调试软件,目标板上电。在 System Settings 里选 CPU 为 S3C2410X,然后点 UP 使 CPU 进入调试状态。 打开反汇编窗口,命令 为 Data.list,可以查看当前 PC 处反汇编情况。 此时 PC 指向 arm 复位地 址 0x0 即 nor flash 上内容的反汇编,此时我们也可以在 flash 上进行调 试。以下连结是反汇编图。 NOR Flash 反汇编图反汇编图
8、 上海锐极电子科技有限公司 021/52666785/52667625 Ruijitek Electronic & Technology Co.,LTD. Http: Email: support 此时查看的代码为 Flash 上固化的代码。我们可以在 Flash 上进行单步 调试,设置断点(注意在 Flash 上调试,只能设置 Onchip 断点,并且 ARM9 最多支持两个)。 如果要在 Flash 上实现源码级的调试,我们需要加载包含当前代码 的带调试信息的目标文件。对 ppcboot 来说,在 ppcboot 源代码目录下 经交叉编译会生成 ppcboot 档,这个就是带调式信息的目标
9、文件,本例 就是要加载它,并且要注意,编译生成的目标文件与烧录到 Flash 上的 代码是同一个版本,否则加载的调试信息将是错误的调试信息,代码对 应上将会出错。 我们用命令行方式加载调试信息,命令如下:Data.LOAD.Elf Z:ppcboot-2.0.0ppcboot /gnu /nocode /strippart “/SMDK2410/“ /path “Z:“ 上海锐极电子科技有限公司 021/52666785/52667625 Ruijitek Electronic & Technology Co.,LTD. Http: Email: support 其中 Data.LOAD.El
10、f 指定是以 ELF 档格式加载 Z:ppcboot-2.0.0ppcboot 指定文件的全路径 /nocode 指定只加载调试信息,而不加载可执行代码,此时代码已经固 化到 Flash 上,不需要再加载。 /strippart “/SMDK2410/“将调试信息中包含“/SMDK2410/“的部分去掉, 因为可执行档是在 linux 环境中编译的,其中,编译出的调试信息中路 径信息包含 “/SMDK2410/“, 由于 Windows 中无法以包含这个字符串的 路径来搜索文件,所以要将其剥去。 /path “Z:“ 告诉 uTRACE-ICD 搜索路径在 Z:盘。 加载后,我们就可以以源码的
11、方式来调试 PPCBOOT 了,如下: PPCboot 源码调试图源码调试图 上海锐极电子科技有限公司 021/52666785/52667625 Ruijitek Electronic & Technology Co.,LTD. Http: Email: support C 与汇编混合模式: 上海锐极电子科技有限公司 021/52666785/52667625 Ruijitek Electronic & Technology Co.,LTD. Http: Email: support 第三步第三步:ARM Linux 的调试。的调试。 首先将 C:T32demoarmkernel(uTrac
12、e 安装目录)目录下的 linux 整个目录拷贝到自己的工作目录,比如说 E:SMDK2410 下。Linux 目 录下是关于linux内核调试的一些配置文件。 打开E:SMDK2410下linux 目录,新建一个目录取名为 SMDK2410,将 integrator 目录下的内容完 全拷贝到新建的目录中。然后根据自己的目标板修改 linux.cmm 文件。 修改后载入 uTrace 调试运行。 linux.cmm 脚本调试图 单步调试运行 linux.cmm 脚本。脚本会控制程序运行到 linux 内核入口 start_kernel(具体实现是在 start_kernel 这个地址处设置 O
13、nchip 端点) 上海锐极电子科技有限公司 021/52666785/52667625 Ruijitek Electronic & Technology Co.,LTD. Http: Email: support 如下图所示: start_kernel 处源码调试 我们在这里可以单步跟踪内核启动流程,来学习内核的初始化过程并且 可以通过符号表来定位程序或变量所在的文件, 并且可以在程序或变量 所在处设置断点(硬件断点或软件断点或 WatchPoint 断点)。 加载 linux 内核感应模块(即 uTrace 对 arm linux 的支持模块,因为 uTrace可以支持多种操作系统调试比如
14、Wince, Vxworks等基本上所有 常用操作系统的调试, 为了支持对应操作系统必须将对应操作系统的支 持模块加载近来以支持该系统内核模块的调试),会在主菜单增加 linux 主菜单,其下是关于 linux 内核的多种信息。 上海锐极电子科技有限公司 021/52666785/52667625 Ruijitek Electronic & Technology Co.,LTD. Http: Email: support 增加的 linux 菜单 其中有 Display Tasks,ps,Display Moduoles,Display File System 等子菜单。下面详细介绍其中每个菜
15、单项的作用。 1Display Tasks1Display Tasks 查看系统内核心中每个任务的详细状态。 Display Tasks 菜单图Display Tasks 菜单图 上海锐极电子科技有限公司 021/52666785/52667625 Ruijitek Electronic & Technology Co.,LTD. Http: Email: support 双击任务前的 magic 可以查看每个任务的详细情况。 其中包含:relationship 标志本进程父子进程关系。 Arguments 标志本进程运行参数 Environment 标志本进程运行环境变量。 Open files 标志本进程打开的档 Addresses 标志本进程代码地址,数据地址,堆栈地址及大小。 Code file 标志代码由哪些档组成,包括可执行文件,动态连接 库,以及它们的起始地址。 Times 标志进程时间信息启动时间,休眠时间等。 TreeView 任务图 上海锐极电子科技有限公司 021/52666785/52667625 Ruijitek Electronic & Technology Co.,LTD. Http: Email: support 2PS 子菜单2PS 子菜单 同 linux 控制台命令 ps 命令。 PS 菜单命令图 上海锐极电子科技