trace32仿真器使用教程+

简介
大家可能会对uTrace-ICD比较陌生,简单介绍一下,uTrace-ICD 是TRACE32-ICD的兼容机。在这里我首先感谢国人的努力能让我用很少的RMB用上这么高端仿真器。废话少说,下面我给大家介绍一下uTrace-ICD下具体实现Linux调试的具体过程。
大概介绍一下实现的具体原理,首先要有一块可用的目标板,我选用的是SMDK2410评估板。编译环境是在虚拟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 linux源码包以及编译生成的内核映像及内核的符号表。
对于uTRACE调试器来说,需要的东东就是包含调试信息的arm linux的内核映像vmlinux。在这里要注意"包含调试信息",arm linux内核配置选项默认可能是不包含调试信息,如果将没有包含调试信息的vmlinux供uTRACE使用是实现不了内核源码级调试的。所以我们在配置arm linux内核时一定要将包含内
核调试信息的选项选上。具在
幼童香港小便真相"kernel hacking"下。其次uTRACE调试器需要的就是arm linux内核源码树。调试器的工作原理就是通过给定的地址查对应的符号表到对应的符号,以及符号所在文件的路径信息,行信息等,近而到源程序所对应的函数或变量。
简单介绍了uTRACE调试的基本原理,接下来,具体介绍一下arm linux内核,驱动,及应用层源码级调试的具体实现过程。
具体实现
上一节简单介绍了uTrace-ICD调试的基本原理,下面将详细介绍调试的具体实现过程。
姬林芳首先介绍一下我用的评估板SMDK2410的具体情况。目标板是nor flash启动,大小为8M,SDRAM配置情况是32M,首地址是
0x30000000。软件配置情况:bootloader为ppcboot2.0,arm linux内核为2.4内核(实现过程对2.6内核也适用)。
第一步:配置虚拟机Redhat9.0编译环境。
安装交叉编译器arm-elf-gcc,解压arm linux源码包到
“\SMDK2410\kernel”下,解压ppcboot到“\SMDK2410\ppcboot-2.0.0”下。
配置SMB Server将“\SMDK2410”目录网络共享出去。在Windows
XP下同过网上邻居访问此目录并映像为本地磁盘“Z盘“,这样uTRACE 就可以像访问本地文档一样访问Linux下的文档了。
接下来编译ppcboot以及arm linux内核生成可执行映像,分别为ppcboot及vmlinux(注意在配置arm linux内核时将“Kernel Hacking”下“Include debugging Information in kernel binary”选项选上--生成调试信息)。
刚果埃博拉疫情第二步:bootloader的调试。
以上开发环境都建立好,我们可以开始PPCBOOT的调试。打开uTRACE-ICD调试软件,目标板上电。
在System Settings里选CPU 为S3C2410X,然后点UP使CPU进入调试状态。打开反汇编窗口,命令为Data.list,可以查看当前PC处反汇编情况。此时PC指向arm复位地址0x0即nor flash上内容的反汇编,此时我们也可以在flash上进行调试。以下连结是反汇编图。
NOR Flash反汇编图
微生物过滤器此时查看的代码为Flash上固化的代码。我们可以在Flash上进行单步调试,设置断点(注意在Flash上调试,只能设置Onchip断点,并且ARM9最多支持两个)。
如果要在Flash上实现源码级的调试,我们需要加载包含当前代码的带调试信息的目标文件。对ppcboot来说,在ppcboot源代码目录下经交叉编译会生成ppcboot档,这个就是带调式信息的目标文件,本例就是要加载它,并且要注意,编译生成的目标文件与烧录到Flash上的代码是同一个版本,否则加载的调试信息将是错误的调试信息,代码对应上将会出错。
我们用命令行方式加载调试信息,命令如下:Data.LOAD.Elf
柯西不等式Z:\ppcboot-2.0.0\ppcboot /gnu /nocode /strippart
"/SMDK2410/" /path "Z:\"
其中Data.LOAD.Elf指定是以ELF档格式加载
Z:\ppcboot-2.0.0\ppcboot 指定文件的全路径
/nocode 指定只加载调试信息,而不加载可执行代码,此时代码已经固化到Flash上,不需要再加载。
/strippart "/SMDK2410/"将调试信息中包含"/SMDK2410/"的部分去掉,因为可执行档是在linux环境中编译的,其中,编译出的调试信息中路径信息包含 "/SMDK2410/",由于Windows中无法以包含这个字符串的路径来搜索文件,所以要将其剥去。
滁州学院学报
/path "Z:\" 告诉uTRACE-ICD搜索路径在Z:\盘。
加载后,我们就可以以源码的方式来调试PPCBOOT了,如下:PPCboot源码调试图

本文发布于:2024-09-21 12:31:33,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/128168.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:单片机编程
标签:调试   内核   调试信息
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议