TMS320VC5416并行自举的巧妙实现
r1,0x4089); //程序入口地址PC为0x4089
本文链接地址:http://www.oyaya.net/fanwen/view/160052.html
Addr1++; //累加地址
Word_Program(Addr1,0x4000); //代码长度为0x4000
Addr1++; //累加地址
Word_Program(Addr1,0); //目标程序入口地址XPC为0
Addr1++;
Word_Program(Addr1,0x4000); //目标程序入口地址PC为0x4000
Addr1+; //累加地址
Addr2=(uint *)0x4000 //代码1起始地址
for(I=0;I<0x4000;I++) //写代码1到FLASH,长度为16K字
Word_Program(Addr1++,*(Addr1++));
Word_Program(Addr1,0x0000); //自举表结尾的一个字写入0x0000,自举表建立结束
代码2除了上面的自举表的建立外还包括FLASH的擦除和自举表数据的校验。需要注意的是,在对FLASH进行写操作之前,必须对其进行擦除,擦除部分的程序可参考前面的Word_Program()子函数。
这样,通过简单的“两次下载法”,利用代码2将要脱机运行的代码1以自举表的格式写到FLASH存储器中,校验正确后DSP即可脱机工作了。
采用“两次下载法”利用DSP自身对FLASH进行编程,可实现DSP的并行自举。这种在系统编程的DSP自举实现方式简单灵活。文中给出的硬件电路仅适用于程序代码小于32K字的系统中。在一般DSP系统中,都会有FPGA等可编程器件,利用它们可以灵活地对FLASH进行分页操作。这样,在程序量超过32K字的情况下,此方法也适用。
《TMS320VC5416并行自举的巧妙实现(第4页)》