新闻中心

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

基于TMS320DM642的Flash编程

作者: 时间:2011-08-09 来源:网络 收藏
方法实现

本文引用地址://m.amcfsurvey.com/article/150378.htm

  系统配置和参数设置

是TI公司的一款视频图像DSP,工作时钟最高可达到600MHz。程序存储器最大可调至272M×8位,其EMIF接口分4个空间,即CE0~CE3。映射到CE1空间,其地址为0x90000000~0x90400000,上电时采用8位ROM加载方式。

  Am29LV033C是AMD公司生产的存储器,其主要特点有:3.3 V单电源供电,可使内部产生高电压进行和擦除操作;只需向其命令寄存器写入标准的微处理器指令,具体、擦除操作由内部嵌入的算法实现,并且可以通过查询特定的引脚或数据线监控操作是否完成;可以对任一扇区进行读、写或擦除操作,而不影响其它部分的数据。

  由于4MB的ROM有22根地址线,而DM642只有20根地址线,因此加入FPGA,对Flash进行分页,这里共分8页,每页512KB,每页内含8块,每块64KB。

  Am29LV033C有多条内存指令,可以实现芯片ID的读取、软件复位、整片擦除、块擦除等。在这里主要介绍烧写时用到的指令,其擦写命令如表1所示。表中的XXX表示任意地址,SA为块地址,即地址线的第16位到21位,PA为烧写地址,PD为烧写数据。

  待烧写程序(用户程序)为USER.out,大小为2M;烧写程序为FBCT.out,大小为4K,地址分配如表2所示。

  编程过程

  第一步,对整个Flash进行一遍擦除。因为Flash在编程时只能把“1”置为“0”,而不能把“0”置为“1”。

  第二步,判断擦除结束。通过DQ6、DQ7均可完成判断,当DQ6位不再跳变时说明擦除结束。这里通过读取最后一位数据是否为“0xFF”来完成判断。

  第三步,进行软件复位。软件复位使Flash处于就绪状态,当Flash在进行擦除、编程时软件复位信号无效。

  第四步,取得编程地址。如果地址超过最大地址则编程结束。

  开始地址长度写入Flash的开始地址

  USER.out0x800000002M0x9001 0000

  bootloader0x0000 00001K0x9000 0000

  FBCT.out,0x300000004K--

  表2 程序的地址分配

  注意事项

  对于不同的DSP,不同的Flash,在实现时可能不一样,这里有几个问题必须注意:

  (1) 文件1和文件2的.cmd文件要分配好各自的地址,地址空间不能重叠。

  (2) 不是每个DSP都可以实现在系统编程,如TMS320C6204就不行,而C621x,C64x等就可以。原因在于Flash在编程时速度较慢,一般为ms级,所以需要WE#信号的有效时间较长。但是,一般的WE#有效时间都只有几十ns,这么短的时间不足以让DSP把内容写进Flash。C64x等之所以能实现在系统编程,是因为在编程时DSP自动延长了编程的有效时间。

  (3) 如果用户程序中不含加载器程序,那么用户程序的目的地址就不能从Flash的前1K地址开始。

  (4) 不同型号Flash的编程时序和指令可能会有所不同,编程之前要弄清该Flash的编程时序和指令。如果Flash要求有偏移地址,就需要加上基地址。

  (5) 对于程序的未初始化段不必烧入Flash,可以参考.map文件,里面对于各段有详细说明。

程序流程

  图2 程序流程

  结语

  利用上面的方法,本文在平台中通过JTAG仿真头,成功地实现了在系统编程,为程序的调试提供了一种非常方便的手段,也为用户程序的升级提供了一种简单易行的方法,同时这个方法也在C6211环境下成功实现,其它DSP同样可参考本方法。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭