位置:51电子网 » 技术资料 » D S P

TMS320C54x DSP在线烧写FLASH存储器并实现自举引导的方法

发布时间:2008/5/27 0:00:00 访问次数:624

摘要:通过一个完整的实例,详细阐述了tms320c54x系列dsp芯片在线烧写flash存储器。并实现自举引导的方法。给出了硬件连接方案和完整的c语言烧写程序。

关键词:tms320c54x flash 烧写 自举引导

在dsp系统中通常贴片式flash存储器保存程序,并且在上电或复位时再将存储在flash中的程序搬移到dsp片内或者片外的ram中全速运行。这个“程序搬移”的过程叫做自举加载。

本文以tms320c5416 dsp对mbm29lv400bc存储器的操作为例,详细阐述了在线烧写flash并实现自举加载的方法。该方法适合于大多数c54x系列dsp对符合jedec标准的flash的操作。为便于读者使用,本文的程序全部采用c语言编写。

1 tms320c5416与mbm29lv400bc的硬件接口

mbm29lv400bc与tms320c5416的接口很方便,前者只需作为后者的外部数据存储器与其进行连接,而中间的逻辑电路采用cpld实现即可。这里使用16位数据宽度,所以byte引脚通过一个上拉电阻接到3.3v电源。连接电路原理如图1所示。相应的vhdl语言程序为:

flash_ce<=dsp_ds;

flash_oe<=(not dsp_r_w)or dsp_mstrb;

flash_we<=dsp_r_w or dsp_mstrb;

2 tms320c5416自举引导过程

当mp/mc=0时,tms320c5416被置于微计算机模式。上电或复位时,程序指针指向片内rom区的ff80h单元,该单元放置了一条跳转指令,使程序跳转到f800h单元。而f800h就是自举加载器(bootloader)引导程序的起始单元。

bootloader的任务就是将存放在外部flash中的程序“搬运”到dsp内部或外部的ram区,“搬运”完后跳转到程序入口处执行。存放在外部flash中的用户程序与一些必要的引导信息组合在一起,称为boot表示(自举表)。16位模式下通用的boot表结构如表1所示。

表1 16位模式下通用boot表结构

序 号 内容及意义
1 10aa(16位存储格式)
2 swwsr值
3 bscr值
4 boot之后程序执行入口偏移地址xpc
5 boot之后程序执行入口地址pc
6 第一个程序段的长度
7 第一个程序段要装入的内部ram区域移地址
8 第一个程序段要装入的内部ram区地址
9 第一个程序段代码…
10 第二个程序段的长度
11 第二个程序段要装入的内部ram区偏移地址
12 第二个程序段要装入的内部ram区地址
13 第二个程序段代码…
14 boot表结构标志:0x0000

tms320c5416提供了多种自举加载的方法。在此使用并行加载模式,因此令int2=1和int3=1。在并行模式下,自举表放在外部数据存储器的32k高端地址区间:8000h~0fffh。自举表首地址放在数据空间的0ffffh单元。加载时,bootloader读取数据空间的0ffffh单元中的内容,将其作为首地址,从该地址开始复制数据到内部的程序空间。复制完毕后,bootloader便跳转到指定的程序入口地址,开始执行用户程序。

摘要:通过一个完整的实例,详细阐述了tms320c54x系列dsp芯片在线烧写flash存储器。并实现自举引导的方法。给出了硬件连接方案和完整的c语言烧写程序。

关键词:tms320c54x flash 烧写 自举引导

在dsp系统中通常贴片式flash存储器保存程序,并且在上电或复位时再将存储在flash中的程序搬移到dsp片内或者片外的ram中全速运行。这个“程序搬移”的过程叫做自举加载。

本文以tms320c5416 dsp对mbm29lv400bc存储器的操作为例,详细阐述了在线烧写flash并实现自举加载的方法。该方法适合于大多数c54x系列dsp对符合jedec标准的flash的操作。为便于读者使用,本文的程序全部采用c语言编写。

1 tms320c5416与mbm29lv400bc的硬件接口

mbm29lv400bc与tms320c5416的接口很方便,前者只需作为后者的外部数据存储器与其进行连接,而中间的逻辑电路采用cpld实现即可。这里使用16位数据宽度,所以byte引脚通过一个上拉电阻接到3.3v电源。连接电路原理如图1所示。相应的vhdl语言程序为:

flash_ce<=dsp_ds;

flash_oe<=(not dsp_r_w)or dsp_mstrb;

flash_we<=dsp_r_w or dsp_mstrb;

2 tms320c5416自举引导过程

当mp/mc=0时,tms320c5416被置于微计算机模式。上电或复位时,程序指针指向片内rom区的ff80h单元,该单元放置了一条跳转指令,使程序跳转到f800h单元。而f800h就是自举加载器(bootloader)引导程序的起始单元。

bootloader的任务就是将存放在外部flash中的程序“搬运”到dsp内部或外部的ram区,“搬运”完后跳转到程序入口处执行。存放在外部flash中的用户程序与一些必要的引导信息组合在一起,称为boot表示(自举表)。16位模式下通用的boot表结构如表1所示。

表1 16位模式下通用boot表结构

序 号 内容及意义
1 10aa(16位存储格式)
2 swwsr值
3 bscr值
4 boot之后程序执行入口偏移地址xpc
5 boot之后程序执行入口地址pc
6 第一个程序段的长度
7 第一个程序段要装入的内部ram区域移地址
8 第一个程序段要装入的内部ram区地址
9 第一个程序段代码…
10 第二个程序段的长度
11 第二个程序段要装入的内部ram区偏移地址
12 第二个程序段要装入的内部ram区地址
13 第二个程序段代码…
14 boot表结构标志:0x0000

tms320c5416提供了多种自举加载的方法。在此使用并行加载模式,因此令int2=1和int3=1。在并行模式下,自举表放在外部数据存储器的32k高端地址区间:8000h~0fffh。自举表首地址放在数据空间的0ffffh单元。加载时,bootloader读取数据空间的0ffffh单元中的内容,将其作为首地址,从该地址开始复制数据到内部的程序空间。复制完毕后,bootloader便跳转到指定的程序入口地址,开始执行用户程序。

相关IC型号
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!