新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于TMS320DM642的

基于TMS320DM642的

——
作者:胡嘉凯 蒋建国 齐美彬 时间:2006-06-03 来源:电子产品世界 收藏

摘  要:DSP系统在独立运行时需要把用户代码从外部Flash中加载到系统RAM运行,包括了Flash的编程及上电加载两项技术,是DSP系统开发中的重点和难点。本文采用一种在系统编程方法对Flash编程,巧妙地利用JTAG仿真器实现系统在线调试及编程,无需进行COFF到HEX的数据格式转换。

关键词:在系统编程;DSP;加载器

引言
 
  一个完整的系统必须要有一个合适的存储器存放用户代码。Flash是一种非易失性存储器,而且具有电可擦写、容量大、价格便宜等特点,通常可用于在DSP系统中存放用户代码。
Flash在正常使用前要进行编程,即将用户代码写入Flash。在系统编程方法不需要其它编程设备和编程电源,只借助于仿真器,可直接通过DSP烧写程序对Flash进行编程。本文所使用的编程方法就属于在系统编程。
本文首先介绍常见的Flash编程方法,然后详细介绍本文方法的原理,以及DSP系统上电加载原理,最后给出整个实现过程并分析了Flash编程时需要注意的一些问题。

        
图1 系统上电的工作步骤           

图2  程序流程

Flash编程方法

常见的Flash编程方式

  Flash在正常使用前必须写入用户程序,传统上有3种编程方法:由供应商出货前把程序代码写入Flash、编程器编程和在系统编程。

  第1种方法不能满足用户更改代码的需求,所以在开发阶段不宜采用。当使用编程器编程时,要求Flash固定在PCB板前必须把用户程序写入片内。因此,现在一般都优先考虑在系统编程方法,首先应确定所选的DSP是否直持在系统编程。现行的在系统编程的方法一般是先把待加载程序(用户程序)的.out文件(COFF格式)转成HEX格式,然后去掉HEX格式文件的文件头,再通过烧写程序写到Flash里去。也可以不进行COFF格式到HEX格式的转换这一步,把COFF文件作为源文件,去除文件头信息后将其写入Flash。

本文方法的编程原理

  本文的实现方法比较简单,首先把用户程序映射到系统RAM,再把用户程序作为数据直接从RAM搬入Flash中。

  首先在CCS上完成用户程序,生成可执行的.out文件,将该文件设为文件1进行加载;然后加载烧写程序的.out文件,将其设为文件2;最后运行文件2,通过它把文件1烧入Flash。

  操作步骤非常简单,这里要说明几点。首先,2个.out文件各自独立,文件2加载后,文件1成为数据,CCS在运行时,运行的是最新加载的程序,也即文件2。其次,文件2与文件1映射到RAM中的物理空间各自独立,也就是文件2不能映射到文件1已映射的地方,如果发生重叠,文件2的内容就会覆盖原先文件1映射到该地址空间的内容,写入Flash的内容就会发生错误。再次,用户程序里包括了二次加载程序,以在自举时把用户程序从Flash还原到RAM中。

 

 

 

 

 

 

总线周期

 

 

 

 

 

命令

1

 

2

 

3

 

4

 

5

 

6

 

序列

 地址

 数据

 地址

 数据

 地址

 数据

 地址

 数据

 地址

 数据

 地址

 数据

软件复位

 XXX

 F0

 

 

 

 

 

 

 

 

 

 

芯片擦除

 XXX

 AA

 XXX

 55

 XXX

 80

 XXX

 AA

 XXX

 55

 XXX

 10

扇区擦除

 XXX

 AA

 XXX

 55

 XXX

 80

 XXX

 AA

 XXX

 55

 SA

 30

字节写

 XXX

 AA

 XXX

 55

 XXX

 A0

 PA

 PD

 

 

 

 

表1  Am29LV033C内存指令表

二次加载和Bootloader

  要保证用户程序的正确运行,仅把程序写入Flash是不够的,必须保证上电后,程序能够从Flash中正确恢复到RAM。系统上电工作步骤如图1所示。
DSP首先自检,得到程序的加载模式。在C6000中主要有2种模式,一种是主机加载模式,也即DSP从0x0000 0000开始执行程序;另一种是ROM加载模式,该模式又有8位、16位、32位几种,不同的DSP略有不同,这里选用8位ROM模式。工作时,DSP先从地址0x9000 0000开始,把0x9000 0000~0x9000 0400这1K(在C62xx中是64K)的数据搬到0x0000 0000~0x0000 0400,然后再从0x0000 0000开始执行程序。这一次加载由DSP自行完成,但是1K的程序作为用户程序显然不够,因此,这1K的程序要做成加载器,也就是手工写的Bootloader,利用它把用户程序从Flash搬入RAM。加载器搬运用户程序又是一次加载,因此把这个过程统称为二次加载。

  Bootloader要完成两项功能,第一,把其它程序搬到指定的地址;第二,跳转到用户程序入口,这里要先修改ISP,再跳转到复位中断,因此在Bootloader的最后总是一条跳转指令。由于Bootloader在Flash中的位置是0x9000 0000~0x9000 0400,而Bootloader又是放在用户程序里的,因此,为了方便烧写程序把Bootloader写到该位置,这里在用户程序的.cmd文件中把bootloader定位在程序段的起始位置。

编程方法实现

系统配置和参数设置

  TMS320DM642是TI公司的一款视频图像DSP,工作时钟最高可达到600MHz。程序存储器最大可调至272M



评论


相关推荐

技术专区

关闭