TMS320C54x DSP在线烧写FLASH存储器并实现自举引导的方法
扫描二维码
随时随地手机看文章
摘要:通过一个完整的实例,详细阐述了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表结构序 号内容及意义110aa(16位存储格式)2swwsr值3bscr值4boot之后程序执行入口偏移地址xpc5boot之后程序执行入口地址pc6第一个程序段的长度7第一个程序段要装入的内部ram区域移地址8第一个程序段要装入的内部ram区地址9第一个程序段代码…10第二个程序段的长度11第二个程序段要装入的内部ram区偏移地址12第二个程序段要装入的内部ram区地址13第二个程序段代码…14boot表结构标志:0x0000tms320c5416提供了多种自举加载的方法。在此使用并行加载模式,因此令int2=1和int3=1。在并行模式下,自举表放在外部数据存储器的32k高端地址区间:8000h~0fffh。自举表首地址放在数据空间的0ffffh单元。加载时,bootloader读取数据空间的0ffffh单元中的内容,将其作为首地址,从该地址开始复制数据到内部的程序空间。复制完毕后,bootloader便跳转到指定的程序入口地址,开始执行用户程序。