利用Flash实现DSP对多个程序有选择的加载
??对Flash的操作要靠写入一系列特定的地址和数据序列来完成。在每次对Flash写入之前,要对其原来的内容进行擦除。Flash的擦除包括块擦除和芯片擦除两种。块擦除是对一个模块进行擦除,芯片擦除是擦除整个Flash的内容。因此,对Flash的操作,是以模块为基本单元的。对Flash的操作由指令决定,其必须满足Flash的时序要求,每条指令需要1~6个不等的指令周期。主要操作指令包括读数据指令、编程指令、复位指令、自动选择指令和擦除指令。每个指令周期由一个命令构成,每个命令代码所执行的任务如表1所列。
表1Flash的命令说明
HEX代码命令00h有效/保留10h芯片擦除确认20h保留30h模块擦除继续/确认80h建立擦除90h读电平信号/模块保护状态A0h编程B0h擦除中止F0h读阵列/复位
??下面以M29W800ABFlash的块擦除指令为例,具体说明Flash的操作时序:块擦除指令需要6个总线周期,先以2个解锁周期开始,然后是1个擦除建立周期,接下来又是2个解锁周期,最后是1个擦除确认周期,其指令时序如表2所列。
表2Flash擦除指令说明
周期第1周期第2周期第3周期第4周期第5周期第6周期地址5555h2AAAh5555h5555h2AAAh模块地址数据AAh55h80hAAh55h30h
??其C语言程序设计代码如下:
#defineflash((volatileunsignedint*)0x8000)
Block_Erase(ADDR){
flash[0x5555]=0x00AA;
wait(1000);
flash[0x2AAA]=0x0055;
wait(1000);
flash[0x5555]=0x0080;
wait(1000);
flash[0x5555]=0x00AA;
wait(1000);
flash[0x2AAA]=0x0055;
wait(1000);
flash[ADDR]=0x0030;
}
??需要注意的是,Flash相对于DSP来说是慢速设备,编程时,对Flash的访问需要有足够的延时等待。对其它指令这里就不一一介绍了。要了解更多内容,可参考具体的Flash存储器手册。
3引导装载
??TMS320VC5410和TMS320VC5416片内ROM中固化有TI公司的引导装载(Bootloader)程序,用于在上电复位时把用户代码从外部存储器引导到片内RAM中运行。引导程序是在一些片内固化的一个程序,它负责上电时初始化存储器。换句话说,它将程序从非易失性存储器(如Flash存储器)中调入系统的存储器中。其提供的片内引导模式有:HPI(主机接口)引导、并行EPROM引导、并行I/O引导和串行口引导等。下面先介绍这两块芯片的上电引导过程。
??DSP上电复位后,先检测其MP/MC引脚,如果MP/MC=“0”,表示使用片内ROM引导。此时,DSP从0xFF80处开始执行TI的片内引导程序。进入引 《利用Flash实现DSP对多个程序有选择的加载(第2页)》