门关键词: 压电传感器ppt 温度控制器电路图 双置开关 森海塞尔px100耳机 松本开关 添加windows组件 电脑元件
IC库存(8958万) PDF资料(329万) IC价格 IC求购 资讯 技术资料
电子元器件搜索:
维库电子市场网是知名的电子元器件交易网站,为电子生产企业提供IC库存和技术资料查询服务。
TMS320C6x DSP的软件开发和程序调试方法
新闻出处:嵌入式技术网 发布时间: 2007-11-15

摘 要 主要介绍了TMS320C6x的软件开发的过程和程序调试方法,概括说明TMS320C6X调试器的基本功能和使用方法,对主要调试命令和不容易掌握的命令做了重点说明,并指出程序调试中应该注意的一些问题。熟练掌握调试开发工具对于加快DSP产品的开发速度是十分重要的。
  关键词 DSP TMS320C6x 调试器

1 前言

  从80年代美国TI公司推出第一代DSP TMS320C1x以来至今的十几年里,DSP已经得到突飞猛进的发展,目前TI公司已经推出了第三代DSP TMS320C6x和TMS320C8x,它们的性能价格比和开发手段都得到长足的进步,更加适合于开发者的需求。随着DSP的开发和应用的深入,DSP 在数字信号、信息与信号处理、通信与信息系统、自动控制、雷达、军事、气象、航天和航空、医疗和家用电器等等许多领域的应用将会更加广泛。

2 TMS320C6x的主要特点

  TMS320C6x是TI公司90年代中后期的最新一代DSP产品序列,它们是定点、浮点兼容的DSP序列,其中有先推出来的是定点序列 TMS320C62x,包括TMS320C6201和TMS320C6202两种,本文的作者采用‘C6201开发视频DSP产品,所以针对性介绍 ‘C62x。
  C62x DSP与以前TI公司或其它公司的产品相比,其有如下显著特点:
  .时钟频率最大可达200MHz,指令周期为5ns。
  .每秒最大的处理能力为16亿次定点运算即1600MIPS。
  .体系结构采用VLIW,片内八个并行处理单元,包括两个乘法器和六个算术逻辑单元,分为相同的两组。单个指令字长32位,八个指令组成一个指令包,总长度8 ×32位=256位。芯片内部设置了专门的指令分配模块,可以将每个256位的指令包,同时分配到8个处理单元并由8个单元同时进行。
  .采用加载/存储体系结构,数据在多个处理单元之间的传输靠32位通用寄存器;存储器寻址范围4G(32位),其中片内集成有l Mbit SRAM,被配置了两个部分:一是512k内部程序(部分根据需要可配置或cache )存储器;二是512k内部数据存储器。
  .32 位外部存储器接口。包括直接同步存储器接口,可与同步动态存储器(DRAM)、同步突发静态存储器(SBRAM)连接;主要用于大容量、高速存储器;还包括直接异步存储器接口,可和静态存储器(SRAM),只读存储器(ROM)连接,主要用于小容量存储器和程序存储;还有直接外部控制器接口,可与FIFO 寄存器连接,这是控制接口线最少的存储方式。因此C62x可方便地配置不同速度、不同容量、不同复杂程度的存储器。
  .TMS320C62x的指令集可进行字节寻址,获得8位/16位/32位数据,可提高存储器的利用率;指令集中的所有指令都是有条件执行指令,可以根据条件决定是否执行。
  .具有灵活的锁相环路时钟产生器(×1,×2,×4),可以对50MHz输入时钟进行不同的倍频处理。
  .双通信道自加载DMA协处理器,用于数据的DMA传输。
  .16位宿主机接口,可以配置为宿主DSP的加速器。
  .可加入IEEE1149.1试验的在线仿真器。
  .功耗低,使用DSP核的省电形式可以降低功耗。
  .采用0.25μm CMOS工艺,五级金属处理,352脚BGA封装。

3 TMS320C6 x的软件开发和调试

  随着TMS320C6 x的推出和开发应用的深入,TI公司为C6x提供了一系列的软件、硬件开发工具,极大地方便了C6x的开发,与其它DSP开发工具相比,具有相当的特点:
  .基于Windows的高级语言调试器;
  .基于C语言的系统调试器;
  .EVM支持软件系统;
  .优化的C语言编程器,符合ANSI C语言标准;
  .汇编器和链接器;
  .实时在线仿真器和高级软件模拟器;
  .较为完整的库函数等。
  TI公司在对C6x DSP的软件开发的问题上,为了便于广大用户在C62x系统上进行软件的开发,郑重推荐了针对C62x DSP软件开发的流程。图1表示TMS320C6x的开发流程图,图2则说明开发TMS320C6X的程序调试过程。


图1 TMS320C6x的开发流程图

图2 TMS320C6x的程序调试方法流程图

4 TMS320C6x调试器的主要特征

  与其他DSP一样,采用C6xDSP产品进行产品开发,调试工具是必不可少的,随着TMS320C6x的推出的,TMS320C6x的C/汇编原代码调试器也随之产生。在实际开发中,TMS320C6x调试器与调试工具(软件开发系统、软件模拟器、开发板、仿真器等)配合使用,它能够提供给开发者开发、测试和优化C语言程序(优化时需要满足ANSI C标准 的C6x 优化器)和汇编的高级用户接口,它基于WINDOWS操作系统,具有十分友好的用户界面,用户调试面向窗口、支持鼠标或命令键入操作、具有许多菜单接口和随调试系统有在线帮助,提供帮助信息,使开发使用十分方便,TMS320C6x调试器的主要特征如下:
  (1)多级调试。调试器允许调试C代码和汇编代码,用户在调试C程序代码时,可以只察看C代码,也可以调试和察看汇编原代码。
  (2)全面配置、反映当前状态的面向窗口的用户接口。它可把代码、数据和命令采用不同的窗口来控制显示,用户图形接口非常直观,符合所用的WINDOWS操作系统的习惯。
  (3)综合数据显示。可以方便地创建窗口,显示和编辑变量、数组、结构、指针以及其它数据类型(如:浮点类型、整数型、字符型、枚举型和指针)的数据值。
  (4)在屏编辑。所有窗口显示的数据都可以方便通过输入命令或使用鼠标来修改。
  (5)自动屏幕更新。调试器可以更新所有窗口的显示信息,更新值用高亮度显示,很方便用户的跟踪调试。
  (6)动态调试。除了基本的调试环境外,‘C6x 的调试器还具有调试评估环境,调试评估能提供一种方法用来搜集调试评估代码指定范围的执行情况,直接为开发者反馈开发的应用系统的性能和帮助开发者指出程序代码的瓶径。
  (7)模块调试评估。除了具备调试器的基本特征外,'C6 x 调试器还可对采用仿真器的片内功能模块进行调试评估,以达到监视目标系统操作的目的,该工具与一般的简单设置软件断点的方法相比,它扩展了调试器的功能。
  (8)全面控制程序执行。它可采用条件执行、单步执行等来控制程序的执行,还可以用鼠标设置或清除断点,并且用户能定义和指定目标系统可以访问内存映像,调试还可以通过编写批处理文件来进行。

5 TMS320C6x的调试窗口

  TMS320C6x的调试窗口能够显示多种不同类型的窗口,窗口类型名称显示在窗口的左上角,按类型它可以划分为以下几类:
  (1)代码窗口。它显示汇编和C语言代码,有3种代码显示窗口:反汇编窗口——显示系统内存的反汇编代码;文件窗口——显示文本文件;过程调用窗口——调试C代码时显示跟踪运行当前和过去函数调用进程。
  (2)数据窗口。用来显示和修改不同类型的数据值,有3种数据窗口:内存窗口——显示有效范围内的内存内容,允许用户同时察看几个不同的数据段的值;CPU窗口——显示各寄存器的内容;观察窗口——显示已经选定的数据值。
  (3)命令窗口。可以键入各种命令,显示象进程、错误和命令输出等信息。
  (4)调试和调试评估窗口。显示代码执行的有关信息。

6 TMS320C6x调试器的功能及其使用方法

  TMS320C6x调试器具有12种基本功能,这些功能和命令可以通过鼠标、键盘输入命令字、功能键操作和用下拉式菜单实现。下面将详细阐述那些比较重要通常靠键盘输入的命令。调试器的功能和命令的用法说明如下:
  (1)管理多个调试器(PDM模式)
  TMS320C6x是一个真正的多处理调试系统,为TMS320C6x独有,它允许采用并行调试管理器(PDM)来调试程序,只需在命令窗口键入 prun、phaltsend,pesc,set,stat,@等等命令,它允许用户使用一组调试器,在多个处理器上运行代码,并且向一组调试器发送命令。
  (2) 模式改变
  在命令窗口键入asm、c、mix命令,可以在汇编、自动、混合3种模式之间切换。它也可以通过下拉式菜单来实现。
  (3)窗口管理
  通过键入move、size、win、zoom命令来激活窗口、更改激活窗口的位置和尺寸,也可以通过鼠标来实现。
  (4)显示和更改数据
  此类命令较多,用户可以显示和更改不同类型的数据项。主要命令有如下几点:
  .?命令观察和显示C代码变量的数值,如:

  命令     输出结果    注解
  ?j     4194425     ;观察变量j的值。
  ? j =0x5a;  90       ;观察内存地址05A的内容。
  ? A3             ;观察寄存器A3的数值。
  ? A3++            ;观察寄存器A3加1后的数值。

  .eval expression 或e expression 命令用于给寄存器或内存某地址,但不显示出其结果。
  eval  -A3      ;寄存器A3减1后的数值
  eval  A3/=2     ;寄存器A3的内容除以2
  .mem  [,[display format][,window name]]命令用于显示内存地址范围内的内容。
  命令中的 expression可以是绝对地址、符号地址或C的表达式。现分别举例:
  mem  0x0     ;观测数据内存开始段 0x0的内容。
  mem  &SYS     ;观测指向C表达式中的符号参数SYS所在地址的内容。
  mem  SP-A0+label ;观测从程序区SP-A0+label 开始的一段内容缺省时为数据区
  mem  SP-AR0+label ;观测从数据区 SP-AR0+label 开始的一段内容。
  所有的显示和更改的数据都可以存储到一个文件里。
  .disp 命令用用于显示在观察窗口里的内存内容。
  disp .(float .)0x26 ;以浮点形式观测0x26 单元的数值。
  setf 命令,用于更改数据值的缺省格式,命令格式为:[datatype,disp format],例如:
  setf int,d     ;设置显示整数的缺省格式为十进制。
  setf short,u    ;设置显示短型整数的缺省格式为无符号数。
  setf u,short    ;与上相反。
  setf         ;列表显示所有数据格式。
  setf *       ;返回原来系统设定的缺省数据格式。
  .wa命令,用于连续跟踪变量、寄存器或指定的存储单元的值。
  wa PC,d       ;以十进制形式形显示PC的值。
  wa 0x0026@I/O    ;显示作为I/O口地址0x0026的数值。
  wa A3        ; 显示寄存器A3的数值。
  whatis 命令,用于显示符号数据类型。格式为:whatis symbol,具体应用如:
  whatis aai     ;  int aai[10][5]
  whatis xxx     ;  struct xxx{
                       int a ;
                       struct xxx*f3;
                       int f4[10];
                            }

  此外,还有wd 、wr命令,用来删除在观测窗的数据类型和所有的数据类型。
  (5)执行系统任务
  此类命令允许用户能够控制目标系统,并为用户提供DOS命令一样的功能命令。
  使用cd 、dir、clr在调试环境下更改当前目录,列表当前或其他路径下的文件,清除命令窗口的所有显示信息。
  .alias 命令,用于将常用的命令用字符来表示,如定义:
  alias init "load test.out; file source c; go main"
  在命令窗口键入init 命令后,调试器将自动执行3条命令,即装入test.out目标文件,迅速显示C源程序,并执行程序到main处。
  alias RESTRUN "restart;run" ;表示重新启动调试器并执行目标文件。
  此外,如:alias mfill, "fill %1,%2,%3,%4;mem%" ;alias命令还能为命令串提供参数,采用%加上数字(如%1、%2、%3等)代表某参数,例如:经常需要显示内存某段的内容。
  mfill 0x80802,0x18,0x1122 : 此时0x80802代表fill 和mem命令中的参数%1、%; 0x18,0x1122将代替fill命令中的%2和%3参数,若要显示有定义的别名,用不带参数的alias;删除全部别名用unalias命令。
  必须注意的是,当退出调试器时,所有定义过的别名将丢失,若再次进入调试器并使用原来的别名,则应该建立一个批处理文件,并在该文件中定义别名。
  (6)用批处理文件控制文件的执行。命令有if / else / endif 语句 loop / endloop语句。
  命令批处理文件的执行。格式:take batch 文件, 例如:take myfile.bat。
  .命令system,格式system[operating system-com mand][flags],用于进入操作系统,使用不带参数的system命令后可以执行任何的DOS操作,如:system “copy a:\backup\sample.c sample.c”,表示在非当前目录复制sample.c到当前目录。
  .Exit命令,用于退回原状态;Quit、 pause分别表示退出调试状态和暂时终止调试。
  (7)管理断点
  这类命令控制软件中的断点,可以根据需要设置和控制断点,也可以采用鼠标方便地进行。命令有ba 、bd、bl、br分别表示增加、删除、列表出、重新设定断点。
  (8)定义用户习惯的界面
  命令有prompt sconfig.cfr, sconfig.cfr为窗口界面配置文件。
  (9)显示文本文件,装入目标文件
  此类命令可以装入目标文件,控制文件窗口和命令窗口。
  .命令file 、load、 reload和 sload分别表示显示目标文件的源代码、加载目标文件和它的符号表、加载目标文件但不加载它的符号表、只加载目标文件的符号表部分。
  .func{function name | address}命令显示文件窗口指定的函数,后面加函数名或其程序段的起始地址。例如:
  func code 显示从函数code开始的C原程序。
  .addr命令,格式为addr{address | function name},表示显示某具体地址点的汇编代码或C源代码。
  (10)内存映象
  内存映象是非常重要, 它包括许多命令,表示允许用户定义所调试目标系统所能进入的有效内存范围,用户开发系统在进行调试前,用户必须为调试器提供内存映象,内存映象告之调试器它能或不能访问的内存范围。当然,提供给调试器的内存映象必须与实际的目标系统的内存配置相一致,同样链接命令文件中的所定义的memory与内存映象相匹配。内存映象因应用的不同而不同。如果内存映象不正确,将可能导致如下几种问题:
  访问了非法的内存地址:当内存映象配置好后,启动调试器运行程序时访问了一个没有定义或被保护的内存地址,则显示一个错误信息。
  访问了没有定义或被保护的存储区:当内存映象配置好后,调试器按照内存映象检查所能访问的存储区,如果试图访问没定义或被保护的存储区,调试器将显示错误信息。
  将带有段的COFF文件加载到了整个内存范围。必须保证在COFF文件指定的内存映象范围与象init.cmd批处理命令文件定义的内存范围匹配(因为在启动调试器,在初始化过程中读入init.cmd命令时,完成了内存配置),否则回出错。
  TMS320C6x内存映象命令主要有:ma、mr等,ma命令定义有效的内存范围并且标识其读写特性。其格式为:ma 地址 长度 类型,其中地址表示一段存储区的起始地址,长度表示存储区的长度,类型表示这段存储区的读写特性,ROM表示只读,RAM表示可读可写,WOM表示不可读取, PROTECT表示不可存取,PRAM表示只读写程序存储区,IOPUT表示输入/输出端口;mr表示重新设置内存映象,ma、mr命令可以让用户为调试多目标系统而定义多个内存映象,建立一个带如下命令的批处理文件,其他如上:
  mr      ;重新设置内存映象。
  MA commands  ;定义新的内存映象
  map on    ;允许内存映象
  (11)程序执行
  这类命令提供用户在调试器环境下控制执行程序的各种方法。例如有单步执行、部分执行、连续单步执行和全部执行等。
  (12)调试评估命令
  与TI公司选取先前的调试器相比,TMS329C6x所具有的特色部分,在特定的调试环境下能给出调试评估程序执行的情况,能提供一些直观的统计数字来反馈调试评估和调试所开发应用程序的性能如何,它的性能特征还有:
  .效率更高的代码。调试评估的环境下,用户可以判别程序中用时最多、性能影响最大的段,可进一步优化这段程序,进而达到提高程序性能的目的。
  .显示多个数据区的统计特性(包括百分比和直方图)。用户可以选定反汇编或C代码的程序段的统计特性进行调试评估。
  .特性数据的综合显示。调试评估器能够提供用户判别程序代码中瓶颈问题的有关信息,表现为:
  ①统计数据的显示形式设置。可以在某一时刻显示一整套数据或某一项数据;显示调试评估的所有段或部分段统计数据。
  ②统计数据的可视化。所有统计数据都是可看见的。
  ③禁止调试评估的段。用户根据需要设置调试评估以外禁止调试评估段。这样可以不影响调试评估段。
  程序代码调试评估步骤,分五步:
  .第一步:进入调试器的代码调试评估状态,用鼠标点击profile菜单选择调试评估模式,相应地进入调试评估界面和执行调试评估命令。
  .第二步:设置可作调试评估的程序段,有三种不同类型的段,分别可为C源程序或反汇编的程序行数段、C源程序或反汇编中的部分代码区段和C源程序中的函数。
  .第三步:设置代码确定调试评估的停止位置,方法是有目的设置一些软件断点作为调试评估的停止位置。
  .第四步:执行代码调试评估,在前三步完成后,就可以进行调试评估命令的执行,执行方式有两种,一种是完全执行方式,表示对设置段的所有统计数据进行调试评估;二是部分快速执行方式,表示对设置段的部分统计数据进行调试评估。
  .第五步:查看调试评估数据,在调试评估代码执行的期间,所收集的调试评估数据显示在profile窗口上。统计数据类型如表1。

表1 统计数据类型

  标识符号    调试评估统计数据
Count表示在调试评估期间进入某调试评估段的次数
Inclusive调试评估段程序总的执行时间(时钟计)包括段内调用子程序的时间
Incl—Max(inclusive max)在调试评估段内递归一次时的最大Inclusive时间
Exclusive(完全执行下)调试评估段程序总的执行时间(时钟计),但不包括段内调用子程序的时间
Exc—Max(exclusive max)在调试评估段内递归一次时的最大Exclusive时间
Address表明调试评估段某行所在存储器地址
  特别方便的是的调试评估代码的统计数据可以存储到一个扩展名为prf的文件以备用。

7 结论

  本文简要介绍了TMS320C6x的基本特点及其软件系统的开发调试方法,比较详细地阐述了TMS320C6x调试器的基本功能和使用方法,对主要调试命令和不容易掌握命令作了重点阐述。结合自己在TMS320C6x DSP 上开发压缩编码的体会,认为熟练掌握这些调试方法确实能提高TMS320C6x DSP上开发应用软件系统的开发效率,做到事半功倍的效果。

作者简介:施福忠,男,31岁,工程师,主要从事视频压缩编码,数学图象处理和DSP产品的开发等.
作者单位:国防科技大学电子工程学院404教研室(长沙 410073)

参考文献

1 Texas Instruments company TMS320C6x C Source Debugger.1998-01
2 Texas Instrument company TMS329C6x Programmer's Guide.1998-01
3 Texas Instrument company TMS320C6x Optimizer C Compiler.1998-01
4 Texas Instrument company TMS320C6x Evaluation Module Reference Guide 1998-03


关闭】 【打印
 
相关专题
 
友情链接:
© 2007 电子元件网 网站地图