打印

代码调试工具 (1)

[复制链接]
763|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qaz098xsw|  楼主 | 2017-11-14 14:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
代码调试工具
开发DSP芯片,调试工具是必不可少的。TMS320系列DSP芯片的系统集成和调试工具主要有:
    (1)C/汇编语言源码调试器。
    (2)初学者工具DSK
    (3)软件模拟器(Simulator)。
    (4)评价模块EVM。
    (5)软件开发系统SWDS
    (6)仿真器XDS
     下面我们分别介绍这几种调试工具。

      1.1 C/汇编源码调试器
      c/汇编源码调试器是一种工作在PC机上的先进的软件揍口,它与调试工具(如软件模拟器、评价模块、软件开发系统、仿真器)配合使用。调试器可以完全控制用C或汇编语言编写的程序。用户程序既可用C语言调试,也可用汇编语言调试,还可以进行C和汇编的混合调试。调试器提供了非常友好的用户界面,面向窗口、支持鼠标和莱单式的接口使用户不必**复杂的命令,使用十分方便。
       A 调试器的主要特征
        调试器的主要特征包括:
    (1)提供完善的控制程序运行的特征,如:条件执行,单步执行,断点设置和清除,批文件执行命令。
    (2)多操作支持:增强了并行处理能力以支持TMS320C40的多处埋器的调试。
    (3)多级调试:可同时调试C和汇编语言“,调试C语言时,用户可同时观察C源码及由C源码产生的目标代码的反汇编,调试器也可用作汇编语言调试器。
    (4)可灵活配置的界面:由于调试器的显示界面是可配置的,因此用户可根据需要设置不同的界面。显示的颜色、窗口的边界、尺寸和位置等都可以改变。
    (5)灵活的命令输人:输入命令的方式灵活多样,可用键人命令法。鼠标、功能键或下拉莱单输入。调试器具有命令**功能,不必重新输人即可执行以前输人的命令。
    (6)全屏幕编辑:任何窗口中显示的数据值可很容易地更改。
    (7)连续更新:调试器可连续更新屏幕上的信息,并高亮显示更改的数据。
    (8)综合数据显示:用户可方便地在屏幕上建立窗口以显示和编辑变量、数组、结构及指针等数据类型。
    (9)功能强大的命令集:调试器提供了一个充分利用C表达式的命令集。
      B  调试器的调试模式
      调试器提供三种调试模式:自动模式,汇编模式,混合模式。
    (1)自动模式:在自动模式中,调试器自动显示当前正在运行的代码,或者是汇编语言,或者是C语言。这也是缺省的调试模式。
    (2)汇编模式:在这种模式下,显示的是汇编语言,不管运行的是C语言还是汇编语言。
    (3)混合模式:在这种模式下,可以同时显示C语言程序和汇编程序。
      C 调试器窗口
      调试器能显示多种不同类型的窗口。窗口的名称显示在窗口的顶行。调试器共有八种类型的窗口,可以分为三大类。

      1.命令显示窗:命令窗口提供一个可以键入各种命令的区域,并显示各种信息,如进程信息、错误信息或命令输出。
      2.代码显示窗:显示汇编语言代码或C语言代码。有三种代码显示窗口:
    (1)反汇编囱口——显示内存的反汇编码。
    (2)文件窗口——显示任何文本文件,主要是C语言源程序。
    (3)进程调用窗口——运行C代码时显示当前跟踪运行的函数进程。
      3.数据显示窗:观察和修改各种类型的数据。有四种数据显示窗口:
    (1)内存显示窗口——显示一定范围的内存内容。
    (2)CPU窗口——显示处理器各个寄存器的内容。
    (3)数据显示窗口——显示一个集合的数据类型,如数组、结构等。
    (4)观察窗口一显示已选定的数据,如变量、寄存器或内存的某个单元。
      调试器的窗口可任意移动或改变大小,在数据显示窗口中可以编辑其中的任一个值,当然,在作这些工作之前,必须首先选择好窗口并使之成为活动窗口。
      D  调试器的命令输入

    调试器提供了非常灵活方便的命令输人方法。调试器提供的命令输入方法主要有以下几种:

     1.命令行输入
        命令行输入就是在调试器的命令窗口中键人命令。如:
  • go main       ;执行到程序的main处
  •         win  CPU      :激活CPU窗口

复制代码

     利用调试器的**功能可以用简便的方法输入以前键人过的命令。如用TAB键可以向后逐条移动执行过的命令,用TAB加SHIFT键可以向前逐条移动执行过的命令,选择好以后按回车键即可。
      2.菜单输入
      菜单输入是一种常用的输入方法。选择菜单可以来用三种不同的方法:鼠标输入、按键输入和热键输入。热键输入主要用于没有下拉菜单的主莱单,如RUN、STEP和NEXT。鼠标输入比较方便,用鼠标左键点中相应的主菜单和下拉菜单即可。按键输入时首先同时按下ALT键和代表主莱单的高亮字母以选择主菜单,然后按下代表下拉莱单的高亮字母即可,当然也可以用方向键选择好下拉菜单再按回车键。
      3.批文件输人
       调试器提供的take命令可以使调试器执行一个批处理文件。设有一个批处理文件
      batcom.fil的内容为:
  • reset
  •         load  sample.out
  •         go  main

复制代码

     则在调试器的命令行中键入take  batcom.fil就使调试器在复位系统之后,装人sample.out    并执行至程序的main处。

      E  调试器使用方法简介
      使用调试器调试程序主要有以下几个步骤:调试器配置;装人程序;运行程序;观察运行结果;编辑更改数据。
      1.调试器配置
      在使用调试器之前,首先必须根据需要配置调试器。调试器配置包括内存配置和显示配置,其中内存配置尤为重要。内存配置用于告诉凋试器哪些内存有效,哪些内存不能进行存取。因此提供给调试器的内存映象应与实际目标系统的内存配置相一致,当然内存映象也应与链接命令文件中的 MEMORY定义相匹配。当内存映象配置好以后,启动调试器运行程序时,如果访问一个没有定义的存储区,则调试器将显示一个错误信息。一般地,配置内存可在启动调试器之前进行。方法就是在调试器能够自动读到的批文件 init.cmd中放入内存映象命令。启动调试器,在初始化过程中读入init.cmd的命令,从而完成内存配置。需要注意的是,对于不同的调试环境,init.cmd的文件名有所不同,如模拟器中的文件名为siminit.cmd,仿真器中的文件名为emuinit.cmd等。
  • ;TMS320C50存储映象配置
  •                   MR                        ;重设内存映象
  •                   MA 0,0,0x0FFFF,RAM        ;程序存储器0-0x0FFFF
  •                   MA 0,1,0x7F,RAM           :数据存储器 0-0x7F
  •                   MA 0x100,1,0x400,RAM      ;程序存储器 0x100-0x4FF
  •                   MA 0x800,1,0,0x0FFFF,RAM  ; 数据存储器 0x800-0x0FFFF
  •                   MAP  ON                    ;启动内存映象

复制代码

           
      其中,MA(Map  Add)命令定义了有效的内存范围,并标识这些范围的读写特征。对TMS320C5X而言,MA的命令格式为:MA地址,页,长度,类型
      其中,地址表示一段存储器的起始地址,长度表示该段存储器的长度,类型表示这段存储器的读写特征。其中,ROM表示只读,RAM表示可读可写,WOM表示只写,PROTECT表示不可存取。IPORT表示输入口,OPORT表示输出口,IOPORT表示输入/输出口。在MA命令格式中,注意TMS320C5X有一个域“页”,分别用0,1,2表示程序存储器空间、数据存储器空间和I/O空间。MAP ON命令用于启动内存映象。
      Init.cmd是在启动调试器时自动装人的。如果在启动后不想用init.cmd中的内存配置,则也可以调人另一个存储器配置。方法是可以创建另外一个内存配置文件。文件内容的格式如下:
  •    MR            :重设内存映象
  •         MA命令        ;定义新的内存映象
  •         MAP ON         ;启动内存映象
  •        设文件名为mem.new,则在启动调试器后,用下列命令读入即可对内存重新配置为mem.new的内容:
  •           take       mem.new

复制代码

       在调试过程中也可以修改内存映象。如用MA命令可增加一段内存,用MD命令可删除一段内存,用MR命令则删除内存映象中的所有内存段,还可以用ML命令列出已经定义的内存及其读写特征。除了可对内存进行配置外,其它如屏幕颜色、窗口位置、窗口大小和边框类型等也可以进行配置。缺省情况下,启动调试器自动调入init.clr文件中的配置。如果要修改配置,则在修改后将当前配置存人一个文件,下次启动调试器后再装入这个配置文件即可,也可将修改后的配直存入init.clr中,则启动调试器自动装入修改的配置,不必重新装入。
   
      2.装人程序
      调试器装入运行调试的程序是编译汇编链接后生成的 .out文件。装入的方法是在主菜单的FILE命令下选择LOAD命令,然后键入文件名即可。如果是由C程序得到的文件,则同时在FILE窗口中显示相应的C语言程序。
      3.运行程序
      运行程序的方法主要有:run,runb,go,单步运行等,使用方法如下:
  • run是最基本的运行命令,执行run命令后,程序开始运行直至遇到断点或按了ESC键或鼠标左键。
  • runb用来运行并计算一段程序的时钟周期数。若要计算某一段程序执行的周期数,首先在这段程序的开始和结束处各设置一个断点,然后运行run至第一个断点,再运行runb至第二个断点,在命令窗口输入? clk命令就可以得到该段程序的执行周期数。
  • go命令用来执行至程序的某一点,如go main就使程序执行至main标号处。

复制代码


      单步运行分step和next两种。用:step命令调试C语言时,每执行一次执行一条C语句,调试汇编语言时,则每执行一次执行一条汇编语句。  next命令与:step命令类似,所不同的是在遇到函数调用时,不进入函数内部,而直接执行到调用语句的下一条语句。    运行程序时,还可以有条件的运行。如,
  •      run  i<  100        即只要i<  l00,调试器就一直运行。
  •         Step  50             即step单步运行50次。
  •         next  100            即next单步运行100次。

复制代码

    4.观察运行结果。
     调试程序时,观察运行结果是检验程序运行正确与否的重要一步。调试器提供了灵活的观察运行结果的手段。观察数据一般有下列三种方法:
    (1)直接在已有的显示窗口中观察。如在CPU窗口中可以观察到处理器的寄存器值,在存储器窗口中可以观察到一段内存的内容,首先在命令窗口中键入要观察的内存的首地址,如要观察TMS320C50从OX809800开始的一段内存,则键入
  •    mem   0x809800

复制代码

   (2)在命令窗口中用?命令观察。这种方法比较适合于观察一些临时的变量。如
  •    ?I             观察变皇i的内容
  •         ?AR0           观察寄存器AR0
  •         ?Ox809800,x    以16进制观察Ox809800内存的内

复制代码

   (3)增加显示窗口跟踪变量。这类显示窗口又有两种。一种是WA1CH窗,可以观察单个变量、寄存器或指定的存储单元。如
  •    wa I            观察变量i;
  •         wa sp           观察堆栈指针;
  •         wa  Ox809800    观察Ox809800内存的内容。

复制代码

     另一种是DISP窗,可以观察集合数据类型,如数组、结构等。例如
  •      disp  indata      观察数组indata;

复制代码

     5.编辑和更改数据。
      编辑更改数据的方法主要有两种,一是直接在数据显示窗口中更改。如在CPU窗口中可以更改寄存器值,在存储器窗口中可以更改内存的内容,也可在DISP窗口和WATCH窗口中更改数据内容,另一种方法是利用表达式的附加作用更改数据。如   
  • ?AR3 + +        AR3内容加l”
  •         ?AR0 = 8        AR0等于8

复制代码






相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

632

主题

842

帖子

3

粉丝