首页 trace32使用用户手册

trace32使用用户手册

举报
开通vip

trace32使用用户手册Trace32软件使用(亦可见TRACE32-使用.pdf与icd_tutorial.pdf)一、首先安装软件Trace32。二、启动软件,Trace32ICDARMUSB;2.1启动之后的调试界面如下图所示。Pic1.调试界面红圈中的“systemdown”指示目标板已经供电,如果目标板电源电压低或没有的话,红圈的区域会显示“POWERDOWN”。TRACE-ICP通过JTAG接口的1脚检测目标板电压,电压范围应该在1.8到3.3伏之间。如Pic1中红色字体所指示的...

trace32使用用户手册
Trace32软件使用(亦可见TRACE32-使用.pdf与icd_tutorial.pdf)一、首先安装软件Trace32。二、启动软件,Trace32ICDARMUSB;2.1启动之后的调试界面如下图所示。Pic1.调试界面红圈中的“systemdown”指示目标板已经供电,如果目标板电源电压低或没有的话,红圈的区域会显示“POWERDOWN”。TRACE-ICP通过JTAG接口的1脚检测目标板电压,电压范围应该在1.8到3.3伏之间。如Pic1中红色字体所指示的那样,调试界面分成五个区域,从上到下依次是主菜单区、快捷按钮区、工作区、行命令输入区、行命令软件区、状态显示区。主菜单区是各种菜单命令的入口区域。快捷按钮区是各种常用命令的快捷使用按钮。用户可以自定义主菜单和快捷按钮。工作区是各种对话框窗口的显示区域。行命令输入区是各种命令通过手动输入执行的区域。行命令软键区是协助用户输入行命令的区域,它提供所有行命令的软键输入方法。状态显示区指示当前的调试状态。2.2JTAG连接设置该设置的作用是告诉调试界面目标板JTAG链路的设置情况,以便能够正确连接,这些设置主要包括:1、选择要调试的处理器型号。2、是否有多个器件串联在同一个JTAG链路里,连接顺序如何,每个器件的JTAGIR寄存器的宽度是多少。(情况一)3、JTAG时钟使用TCK还是RTCK。TCK由TRACE-ICP提供,一般情况下选用10MHz。RTCK是TRACE-ICP的TCK进入目标JTAG链路之后,从目标JTAG链路返回的时钟,它与目标处理器的时钟同步。一般情况下,具有睡眠模式的处理器多选用RTCK作JTAG时钟,如ARM926EJ-S。(情况二)4、通过JTAG与目标连接时,是否要先复位目标板。JTAG口上的SRST信号产生复位信号。(情况三)5、通过JTAG与目标连接时,是否要停止目标处理器运行。(情况四)从主菜单“CPU”中选择“SystemSettings…”,打开如下图所示对话框。从“CPU”下拉菜单里选择要调试的处理器。Pic2.SystemSettings对话框对于前面描述的第一种情况,多个器件串联在同一个JTAG链上,用户需要在图二十三所示的对话框中选择“MultiCore”,打开MultiCore对话窗口,如下图所示。Pic3.MultiCore对话框最上方的红框中的部分描述多个器件在一个JTAG链上的位置。所谓“JTAG串联”,就是一个器件的TDI和另一个器件的TDO相连,没有连接的TDI与JTAG口的TDI连接,没有连接的TDO与JTAG口的TDO连接。图二十四中的红框中的图形形象地描述了这种连接。在图形中,“core”表示被调试的处理器,如ARM926EJ-S,“IRPOST”表示连接在JTAGTDI和“core”的TDI之间的器件的JTAGIR寄存器长度的和,在“IRPOST”下方的编辑框内要填入这个和的值,“DRPOST”表示连接在JTAGTDI和“core”的TDI之间的器件的数目,在“DRPOST”下方的编辑框内填入这个数目值,“IRPRE”表示连接在JTAGTDO和“core”的TDO之间的器件的JTAGIR寄存器长度的和,在“IRPRE”下方的编辑框内要填入这个和的值,“DRPRE”表示连接在JTAGTDO和“core”的TDO之间的器件的数目,在“DRPRE”下方的编辑框内填入这个数目值。填入上面四个值,就完成了JTAGMultCore的设置。对前面描述的第二种情况,JTAG时钟的选择,可以通过SystemSettings对话框上的JtagClock列表框来实现,如下图所示。Pic4.JtagClock列表框红框中的部分就是JtagClock列表框,通过这个列表框用户可以选择JTAG时钟是TCK或RTCK,选择TCK的时候,顺便选择它的频率,5MHz或10MHz或25MHz,也可以手动在编辑框中输入频率值,如1MHz。对前面描述的第三种情况,通过JTAG与目标连接时,是否要先复位目标板,用户可以通过下图中红框中的单选按钮进行选择。Pic5.系统复位选择红框中的“EnReset”单选钮如果在前面打勾(选择),表示在TRACE-ICP做JTAG连接时会做系统复位。通过前面三种情况,用户完成了在JTAG连接动作之前的设置工作。接下来,用户就可以连接目标了。这个连接通过下图中的红框中的“Up”或“Attach”单选钮来完成。Pic6.JTAG连接选择红框中的“Up”单选钮,JTAG通讯连接之后,目标处理器会停止执行,选择红框中的“Attach”单选钮,JTAG通讯连接之后,目标处理器处于它在JTAG通讯之前的状态,原来是运行的,那么,它现在仍然保持运行状态,这就是我们前面描述的第四种情况,如果用户在选择“Up”或“Attach”单选钮之后,在“Up”前面的小园框中有一个绿色圆点,表明JTAG通讯已经连接成功。如下图所示。Pic7.UP连接成功如果选择“Attach”按钮并且目标处理器正在运行的话,在界面的状态显示区会有一个绿色的“Running”条显示,如下图所示。Pic8.Attach连接成功可以通过点击红圈中的按钮停止程序执行,以便观察程序当前的处理器执行状态。三、运行脚本文件从主菜单区点击“File->RunBatchfile…”打开脚本文件选择对话框。如下图所视。Pic9.脚本文件执行菜单Pic10.脚本文件选择对话框在图三十一所示的对话框中选择要执行的脚本文件,用户可以选择任意目录下的脚本文件。脚本文件的内容主要以调试命令为主。有关脚本文件的编写,请参考软件安装目录的“pdf”目录下的文件“practice_user.pdf”。脚本文件的一般功能是自动执行JTAG设置、目标处理器设备寄存器设置、下载要调试的应用程序(支持直接写入FLASH)、设置调试源文件路径。四、观察/修改寄存器从主菜单区点击“CPU->CPURegisters”,打开内核寄存器窗口,如下图所示。Pic11.内核寄存器观察菜单Pic12.内核寄存器窗口从Pic12所示的内核寄存器窗口,用户能够观察处理器内核寄存器的值。如果用户想修改某一个寄存器的值,只要双击寄存器名右边的值,在行命令输入区就会出现相应寄存器值修改的命令,紧接着输入十六进制的值(如,0x12345678)并回车就可以了。下图是以修改寄存器R2的值为例,在行命令输入区出现的命令。Pic13.修改内核寄存器从主菜单区点击“CPU->Peripherals”,打开设备寄存器窗口,如下图所示。Pic14.设备寄存器观察菜单Pic15.设备寄存器窗口如上图所示的设备寄存器窗口在调试不同的处理器时是不同的。如果用户要修改某个寄存器的值,双击该寄存器的值,在行命令输入区就会出现相应的设备寄存器修改命令,在命令后面输入要修改的值回车即可。如下图所示。Pic16.设备寄存器修改命令上图的设备寄存器的值没有输入。由于设备寄存器映射在处理器的存储器地址空间。所以,也可以用存储器修改命令修改设备寄存器的值,如Data.Set。设备寄存器窗口显示的内容是由一个后缀为“.per”的文件定义的。这个文件是文本的,通过文本编辑器可以编辑,因此,用户可以定制自己的设备寄存器窗口内容。用户在行命令输入区输入“Per.Program”和后缀为“.per”的设备文件,就可以使自己的设备文件有效,设备寄存器窗口就会按这个文件进行显示。五、观察/修改存储器从主菜单区点击“View->Dump…”,打开存储器观察窗口,如下图所示。Pic17.存储器地址输入框在地址输入框中输入要观察的地址,地址也可以用符号方式输入。输入地址之后点击“OK”按钮,打开存储器显示窗口,如下图所示。Pic18.存储器显示窗口用鼠标双击某一个存储单元的内容,在命令行就会出现存储器数据修改命令提示,用户只要填入要修改的数据回车即可。如下图所示。Pic19.存储器修改命令提示六、下载程序使用data.load命令实现程序下载的功能,如下图所示。Pic20.下载程序上图中,“elf”指示所下载的程序的文件 格式 pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载 ,“/v”指示程序下载完成之后进行校验。七、观察符号表如下图所示,点击“View->Symbols->Browse”打开符号表对话框。Pic21.打开符号表对话框符号表对话框如下图所示。Pic22.符号表对话框在符号表对话框中可以通过单选钮“Symbols”选择要观察函数或是变量等符号。在符号表对话框中双击变量符号会打开变量观察对话框,双击函数名会打开程序列表窗口。八、打开程序列表窗口点击“View->ListSource”打开程序列表窗口,如下图所示。Pic23.打开程序列表窗口打开后的程序列表窗口可以有下面几种形式。Pic24.找不到源文件的程序列表窗口对于上图所示的情形,需要用Y.SPATH命令指定源程序路径。如下图所示。Pic25.指定源程序路径(其一)Pic26.带源程序的混合显示程序列表窗口(其二)通过点击程序列表窗口上的“Mode”按钮可以切换混合和源码显示方式。Pic27.带源程序的源码程序列表窗口(其三)如果用户没有通过data.load命令加载符号文件或者所加载的符号文件包含的调试信息不足,用户将会看不到源码,所得到的程序列表窗口可能如下图所示。Pic28.不带调试信息的程序列表窗口(其四)九、单步执行程序单步执行程序有step和stepover两种形式。这两种形式的快捷键分别是F2和F3。Step的功能是单步执行一条机器指令或高级语言的一行,stepover与step不同的地方在于它可以单步一条函数调用指令或高级语言函数。在混合显示模式,单步以机器指令为单位,在源码模式下,单步以源码程序行为单位。单步执行程序时可以屏蔽中断,如下图所示。Pic29.屏蔽中断Pic29中红框内的单选钮IMASKASM和IMASKHLL选择之后,单步时就会屏蔽中断。用户也可以通过命令sys.oimaskasmon和sys.oimaskhllon来设置这两个选项。十、设置软件断点设置软件断点可以在命令行输入命令break.set<address>/soft来实现,在命令中的<address>代表程序地址,可以是程序中的函数名等符号。如下图所示。Pic30.用命令设置软件断点也可以通过在程序列表窗口的程序指令或源码旁边的空白处双击鼠标左键,直接在看到的程序上设置软件断点。如下图所示。Pic31.在程序列表窗口中设置软件断点在Pic31中红色圆圈中的标示就是断点标示。另外,用户还可以在程序列表窗口中点击鼠标右键,打开辅助对话框,选择Breakpoints->Program。如下图所示。Pic32.通过鼠标右键设置软件断点如果在设置软件断点之前执行了map.bonchip<range>命令,并且所设置的软件断点在<range>所指的地址范围内,那么,通过双击鼠标左键和单击鼠标右键设置软件断点的方法所设置的断点将是onchip硬件断点。如果用户在CPU不能进行正确写操作的地址上设置软件断点,将会出现下图所示的错误提示。Pic33.软件断点错误提示如果用户要察看所有的断点,可以从主菜单点击Break->List打开断点列表。如下图所示。Pic34.断点列表在断点列表上,用户可以用鼠标左键双击某一断点,打开该断点所在的程序列表窗口,用户也可以用鼠标右肩单击某一断点,激活断点列表窗口的右键辅助功能,对该断点做使能/除能、删除、改变设置等操作。还可以从主菜单选择“Break->Set”打开断点设置对话框,如图五十六。在“address/expression”中输入断点的地址或者符号(点击叹号打开符号表从中选择),然后选择“implementation”下的“SOFT”,最后,点击“set”完成设置。十一、设置Onchip硬件断点设置Onchip硬件断点有几种方式。一种是通过在命令行输入命令的方式。命令格式为:break.set<address>/onchip<address>可以是源码符号。如下图所示。Pic35.通过命令行设置onchip硬件断点方法二是通过先执行map.bonchip<range>,<range>表示地址范围,然后再在属于这一范围的程序列表窗口中的指令或源码程序行上双击鼠标左键,来设置onchip硬件断点。方法三是在程序列表窗口中的指令或源码程序行上单击鼠标右键,打开右键辅助功能,选择“breakpoints…”,打开断点设置对话框,从“implementation”下拉选项中选择“Onchip”,然后,单击“Set”按钮,完成设置。如下图所示。Pic36.通过断点设置对话框设置onchip断点一种方法是直接从主菜单中选择“Break->Set”打开断点设置对话框,如Pic36所示。在“address/expression”中输入断点的地址或者符号(点击叹号打开符号表从中选择),然后选择“implementation”下的“Onchip”,最后,点击“set”完成设置。十二、设置数据观察断点数据观察点的作用就是当程序对这个观察点所在的地址或地址范围进行读或写操作时,能够停止程序的执行。设置数据观察断点时,可以指定数据的内容(可以是位屏蔽的)和类型(字节、半字、字),也可以不设定。如果设定了,那么,只有在这些数据内容匹配的时候,程序才会停下来。设置数据观察断点的命令格式如下:break.set<address|range>/readwrite|read|write{data.byte|word|long<value>}如下图所示。Pic37.通过命令行设置数据观察断点设置完数据观察断点,可以通过点击主菜单“Break->List”打开断点列表观察断点的设置情况,如下图所示。Pic38.从断点列表观察数据断点的设置情况上面的数据断点,用户也可以通过从主菜单点击“Break->Set”打开断点设置对话框,如图五十六所示,在断点设置对话框中设置。用户也可以在程序列表窗口或存储器观察窗口中点击鼠标右键,选择“Breakpoints…”打开断点设置对话框,在其中设置。上述数据断点是Embedded-ICE直接提供的功能,数量有限,只能设置一个。用户在断点设置对话框中可以点击“advanced”按钮,打开断点设置高级选项对话框,对断点的附属选项(计数、条件、命令)进行设置。如下图所示。Pic39.带高级选项的数据断点的设置用户在图五十九中的“count”编辑框中输入计数值,在“condition”编辑框中输入条件,在“CMD”编辑框中输入所要执行的命令。输入完成之后,用户点击“set”按钮设置断点。用户从主菜单点击“Break->List”打开断点列表窗口观察所设的断点。如下图所示。Pic40.带高级选项的数据断点列表使用高级选项,会影响程序的性能。十三、全速运行程序在命令行输入“GO”命令,程序从当前PC开始实时全速运行。要全速运行程序,用户也可以通过主菜单点击“Run->Go”来实现。或者,用户可以按F7来全速运行程序。程序全速运行时,在状态显示区会有“Running”指示。如下图所示。Pic41.全速运行状态指示用户也可以在主菜单或程序列表窗口点击下图所示的红框中的按钮,也可以实现全速运行程序。Pic42.全速运行程序的按钮十四、停止运行程序用户从命令行输入“Break”命令,或者按快捷键F8,都可以停止运行程序。用户也可以从主菜单下选择“Run->Break”,停止运行程序。用户也可以在主菜单或程序列表窗口单击下图中所示红框中的按钮来停止运行程序。Pic43.停止运行程序的按钮十五、观察变量用户通过在命令行输入“Var.Watch”或从主菜单选择“View->Watch”打开变量观察窗口,如下图所示。Pic44.变量观察窗口点击上图中的红框中的“Watch”按钮,打开变量符号列表对话框,如下图所示。Pic45.变量符号列表对话框用户在变量符号列表对话框中用鼠标左键双击某一个变量名,把该变量添加到Pic45所示的变量观察窗口中。添加变量之后的变量观察窗口如下图所示。Pic46.添加变量之后的变量观察窗口在变量观察窗口中的变量名上点击鼠标右键,打开右键辅助功能菜单,从中选择“Format…”,打开变量显示格式设置对话框。如下图所示。Pic47.变量显示格式设置对话框在这个对话框中,用户根据所需要的变量格式进行设置,然后按“Apply”或“Ok”按钮确认。用户也可以在程序列表窗口中用鼠标右键点击变量名,打开右键辅助功能对话框,从中选择“AddtoWatchWindow”,直接将该变量添加到变量观察窗口中。另外,在程序列表窗口中,用鼠标左键单击变量名时,该变量的值会及时显示出来,如下图所示。Pic48.显示变量的程序列表窗口十六、观察堆栈用户在命令行输入“Var.Frame”或者从主菜单选择“View->Stackframe”都可以打开堆栈观察窗口,如下图所示。Pic49.堆栈观察窗口用户也可以在命令行输入“Var.Frame/Locals/Caller”或者从主菜单选择“View->StackframewithLocals”打开带局部变量的堆栈观察窗口,如下图所示。Pic50.带局部变量的堆栈观察窗口。十七、在线Flash编程用户可以将应用程序直接下载到目标板的片上或片外Flash存储器中。一种方法是通过JTAG扫描的方式编程,这种方式编程速度慢,一般程序大小在几十千字节的情况下使用。另一种方法是通过一小段运行在目标机上的编程算法程序来完成,这种方法比较通用。这两种算法的区别从命令上体现出来。这些命令包括:Flash.Reset–Flash定义复位,之前所作的所作的所有Flash定义全部清除。Flash.Create–定义目标板上的Flash存储器的类型,位置,总线宽度,扇区大小等信息。Flash.Target–只有需要在目标板上运行编程算法的情况中使用。当Flash.Create命令中的Flash类型是Target时,指定需要通过在目标板上运行编程算法。该命令指定编程算法程序、下载到目标板的位置、数据结构的位置、数据区的大小。编程算法程序也可以不用该命令加载,而通过data.load命令单独加载。Flash.Erase–对所指定的Flash进行擦除操作。Flash.Program–对所指定的Flash进行编程操作。Pic51.通过JTAG进行Flash编程的例子上图所示的例子是把所有的命令都写到了一个批处理脚本文件中的情况,该脚本文件先擦除Flash,然后再编程。文件中分号后面的内容是注释。Data.load命令中的星号会打开一个文件打开对话框,用户通过该对话框制定要编程的文件。Pic52.通过编程算法进行Flash编程的例子十八、T32使用之常用命令解释1.把调试用的.elf文件下载到目标板中命令:d.load.elf*.elf跟着直接输入elf或axf文件路径说明:此命令把.elf文件中的调试符号信息下载到Trace32中,二进制代码下载到目标板中的代码段存储区域。如果代码段对应的存储体是SRAM,那么代码能够真实的下载到SRAM中(最常见的就是EVB板条死)。如果存储体是FLASH,由于FLASH程序的擦写需要特殊的命令序列,所以执行完下载命令后,虽然Trace32没有报错,但实际上代码没有下载进去。这个时候需要用cmm文件把代码下载到FLASH中去。2.elf文件下载进去后,在调试之前还需要做一些准备工作a.map.bonchip0x0—0x3ffff(FLASH的地址范围)如果程序下载到SRAM中,此命令不用执行,如果是FLASH,一般情况下都需要执行此条命令,否则无法设置断点,目前大多数CPU在ICD调试模式下只支持两个硬件断点。b.y.spath+路径(eg:y.spathd:\source)支持所加路径的C源码以及汇编代码显示。3.以上工作做完后,就可以利用Trace32强大的调试功能来调试程序了(可惜到现在我们只是用到了其中的一部分)。a.查看ARM寄存器。一般使用在调试/查看汇编代码的情况下使用。b.查看存储器单元以及存储器映射的寄存器内容。注意:MSM5105的寄存器具有只读和只写属性(SoftWareInterface中有描述),对于只写属性的寄存器,虽然能够看到寄存器的内容,但不可信。有时调试需要直接对寄存器或者变量进行赋值,可以双击对象,在命令行中加以更改。c.设置断点。断点调试应该是我们最常用的调试手段了,具体设置方法可以在代码处直接双击设置或取消设置,或者通过工具条设置:点击Browse,选择要设置断点的函数。d.读出存储器区域的内容,存成文件,以便于和原文件进行比较。比如怀疑代码区内容被更改或者在软件部制作完整的.bin本时,都需要用到此命令。Data.save.BinaryFileNameAddress//保存二进制文件e.STEP(F2)/STEPOVER(F3)/GO(F7)f.有时侯,Trace32不能正确显示临时变量的值,这个时候可以通过查看汇编代码的方式确定临时变量真实的值。g.查看函数的调用关系有时需要弄清楚某一函数是哪个函数调用的,可以通过在此函数处设置断点,等程序停在此断点后,点击菜单view/Stackframe就能看到。h.但有时候采用上述方法无法看到调用关系,这是可以通过R14寄存器(子程序链接寄存器)来实现,eg:程序因为某种异常,跳到了中断向量表处。此功能对于定位程序重启之类的问题还是很有效的。第一步:设置断点第二步:查看R14寄存器能够看到R14寄存器的值是0x1BA9C8,此地址就是调用处代码的地址,具体内容可以点击IndirectList查看:第三步:查看调用代码以上是在命令行中输入的一些常用命令,其他的很多功能我还没有用过,相信这些功能对于我们的调试还是很有帮助的。大家调试时可以多试一试,如果有意外的发现,还请和大家一起分享,共同提高我们对调试工具的掌握程度!十九、Trace32脚本Trace32使用中常见的脚本开关设置解释sys.o.TURBOoff//关闭时CPU会自动检测读取存储器的速度sys.o.BigEndianoff//设置数据存储格式为小端模式sys.o.ResBreakon//在复位后进入Jtag顺序控制器,再进入调试模式sys.o.SHOWERRORoff//显示错误信息sys.o.EnReseton//启用复位sys.o.TRSTon//打开测试访问端口,复位sys.o.CFLUSHon//自动维护软件断点Trace32的脚本基本语法1、先来个输出HelloWorld!实例a.新建一个文本文件,改扩展名为.cmm文件如:test.cmmb.打开Trace32软件,选择第二个,Editfile,并打开test.cmm文件c.在文件中输入print"HelloWorld!",点击上面的Save保存按钮,或点击Save&Run也行,即运行了第一个Trace32程序。d.输出的内容在左下角,可以看到HelloWorld!字样。2、脚本变量申明a.本地变量申明:LOCAL&a&b&c//关健字为LOCAL,变量以“&”开头ENTRY&a&b&c=&a*&bRETURN&cb.全局变量申明:GLOBAL&State&Level//关健字为GLOBAL,变量以“&”开头3、Trace32使用的基本控制语句a.条件控制最基本的IF-ELSE(注意Trace32关健字不区分大小写,也可以是ifelse)如下:IF"a"=="a"(PRINT"true")ELSEIF"a"=="b"(PRINT"false")ELSE(PRINT"这里不会运行(test)")解释一下,Trace32里面没有then关健字,多行语句请使用括号"()"括起来。b.循环语句while和RePeaT&true=0!=1&count=1WHILE&true(DOmem_testPRINT"MEMTEST"&count&count=&count+1)ENDDO-------------RePeaT[<count>]<block>[WHILE[<condition>]]orRePeaT<count><command>c.GOTO跳转语句GOTOendloop//关健字为GOTO,endloop为标号,如:endloop:print"这里为GOTO执行地"GOTO102.//102.为行号4、Trace32使用的其它执行命令a.执行其它脚本文件DO<filename>[<parlist>]比如有二个文件:a.cmmb.cmma.cmm内容为:dobb.cmm内容为:print"acallb"运行a.cmm文件b.调用子函数GOSUBsubr10x10010."abc"//调用子函数,关健字GOSUB,subr1为子函数标号,后面为调用的参数0x10010."abc"subr1://这里是子函数,以变量名加冒号,标号形式。ENTRY&address&len&stringData.Set&address++(&len-1)&stringRETURNc.ENTER和ENTRY语句enter&xprint"x=&x"ENTRY&addressGOSUBfunc1&address1.ENTRY&resultPRINT“Result=”&resultENDDOfunc1:LOCAL&addr&sizeENTRY&addr&sizeData.Set&addr++&size0x0&retval=Data.Byte(&addr)RETURN&retvald.INKEY字符输入INKEYINKEY&keyIF&key==0x0dprint"正确的输入"elseprint"错误的字符"二十、Trace32调试技巧1.调试步骤连接好Trace32-ICD和目标板,注意不要带电插拔JTAG,容易损坏Trace32或目标板,然后依次打开Trace32-ICD和目标板的电源。开启调试软件Trace32设置CPU类型,状态等,可以通过命令或菜单,命令如下:sys.resetsys.CPUARM1176JZ;这里设置CPU类型sys.up;启动调试,如果正常的话,状态为system.ready;否则会报错,需要检查CPU设置是否正确,TRACE32和目标板的连接和电源是否正常如果调试正常启动后,就可以下载编译好的文件(可以是.elf.axf.binary等文件)到RAM或FLASH中调试了下载编译文件,命令如下:data.load.elfE:\source\test.axf/PATHE:\source这里的/PATH选项是用来指明源代码的路径,在调试时Trace32就可以查找到源代码了。这里Trace32会根据.elf文件里包含的目标代码起始地址加载到RAM的对应地址上,也可以指定加载到RAM的地址,但须和编译时的设置一致,否则程序不能正常运行。注:Trace32也可以把编译目标文件烧录到flash中进行调试,需要使用flash烧录相关命令,这里就不详述了。然后就可以设置断点进行调试了,如:break.set0x0c008000Trace32的断点有两种,一种是硬件断点(在FLASH中的断点),另一种是软断点(在RAM中的断点);硬件断点需要CPU的支持,如ARM7最多只支持2个硬件断点,如果使用了软断点的话,就只能使用一个硬断点了;而软断点没有限制,可以设置很多个。注:在Trace32中,如果要使用硬件断点,需要先设置好FLASH内存映射范围,如下命令:Map.bonchip0x0000--0xfffff;具体范围根据目标板FLASH的范围设置设置好断点就可以正常调试了。2.源代码调试在编译源码的时候,编译成(加-g选项)debug版本的目标文件(可以是axf/elf等格式),用Trace32就可以直接进行源代码调试了。Trace32几乎支持所有的编译器的编译文件,具体格式参见Trace32的帮助。axf/elf等编译文件也叫符号文件,即在文件中把源码的符号表(函数/变量等)保存下来了,供调试时使用,但里面的符号表只是起定位作用,在调试时还需要有目标源代码,否则只能进行汇编级调试,Trace32支持把机器码反汇编成汇编语言进行调试,而且不需要目标文件支持,Trace32可以自动从FLASH/RAM中读取机器码,然后反汇编成汇编代码。通过data.load命令把符号表文件(.elf等)下载到目标机器上,指定源代码路径,就可以进行代码调试。data.load.elfE:\source\test.axf/PATHE:\source3.死机定位方法在调试产品时会碰到设备死机的情况,如下在调试过程中出现问题,可以很方便的用Trace32来查看问题;但如果是设备在正常运行时(没有接JTAG调试)出现问题或死机就比较难定位问题了;这里可以通过Trace32的attach功能来进行调试,如下:把出问题的机器和Trace32-ICD连接好(连接JTAG,测试机器需先预留JTAG口),然后开启Trace32,设置好CPU类型,使用sys.attach命令就可以让Trace32和问题机器连接上了,正常连接后,system的状态就变成了running或up。接下来可以就可以直接进行汇编级调试了。但一般情况下,汇编级调试很难定位问题,需要进行源码级调试,可以按如下操作进行:先把Trace32-ICD和一个同问题机器同类型的机器连接好,然后把符号表文件(.elf或.axf文件等)下载(通过data.load命令)到好的机器上,然后再把JTAG线从好的机器上拔下,连接到问题机器上;然后再用sys.attach命令让Trace32和文件机器连上,这样就可以进行源码级调试了。如果不想这么麻烦,也可以这样操作,连接好Trace32-ICD和问题机器,打开Trace32软件,此时system的状态为“systemdown”,然后通过“data.load”命令下载符号表文件(.elf等),由于system状态为down,Trace32会提示没有符号表文件没有下载成功,不用管它,因为虽然没有下载到问题机器的RAM上,但符号表文件已经下载到Trace32上了;然后再通过sys.attach命令让Trace32和问题机器关联上,这样就可以进行源码级调试了二十一、其它技巧当完成前期基本的配置与打开窗口后可以保存设置。
本文档为【trace32使用用户手册】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
天山书童
暂无简介~
格式:pdf
大小:1MB
软件:PDF阅读器
页数:0
分类:高中语文
上传时间:2019-11-24
浏览量:7