保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

TMS320VC5416并行自举的巧妙实现


加载建立自举表的代码,称为代码2。代码1是DSP脱机运行时的代码,代码2仅仅是把代码1按照自举表的格式写入到外部FLASH中的代码。需要注意的是,代码1和代码2在分配程序存储空间时不可以重叠,而且代码2的数据空间必须包含代码1和外部FLASH共同占用的空间,因为它要把代码1按访问数据的方法写到外部FLASH中。由于下载完代码1后并没有运行,而是紧接着下载代码2,两者的程序存储区又不重叠,因此下载完码2后,先前下载的代码1仍旧在DSP中,只是被代码2看成数据而已。“两次下载法”的具体操作步骤如下:

(1)将DSP的MP/MC引脚置高,让DSP工作在微处理器方式。

(2)将代码1通过仿真器下载到DSP中,但不运行该代码。

(3)将代码2通过仿真器下载到DSP中,运行此代码。

(4)代码2运行结束后,去掉仿真器,并将MP/MC引脚置低,让DSP工作在微型计算机方式。

(5)复位DSP,观察程序运行的结果是否正常。

“两次下载法”中两次代码的存储区分配情况如图3所示。

    图中,代码1中的数据段起始地址

为0xA,数据段结束地址这0xB,代码段起始地址为0xC,代码段结束地址为0xD,其中0xB和0xC可以是同一地址,也可是不同地址;代码2中的数据段起始地址为0xG,数据段结束地址为0xFFFF,代码段起始地址为0xE,代码段结束地址为0xF,其中0xF和0xG可以是同一地址,也可以是不同地址。对TMS320VC5416而言,因其0x0000~0x7FFF对应的是内部的32K字空间,所以两个表中的地址大小关系为0xG<0xC<0xD<0x8000。

基于上述思想,假设代码1的程序段为0x4000~0x7FFF,数据段为0x3000~0x3FFF,代码2的程序段为0x2000~0x2FFF,数据段为0x3000~0xFF7F(需要注意的是,代码2的数据段必须包含代码1的代码段和FLASH所占据的地址空间,代码2的代码段绝对不能与代码1的代码段有重叠),外部FLASH占据的地址空间为0x8000~0xFF7F,自举表的首地址从0x8000开始,并且SWWSR和BSCR的值分别为0x0E38和0x8806,程序入口地址为0x004089,代码1长度为16K字,代码1的存放起始地址为0x004000,那么代码2在FLASH中建立自举表的程序如下:

UINT I; //定义临时变量

UINT *Addr1,*Addr2; //定义临时地址指针变量

Addr1=(uint *)0xffff;

Word_Program(Addr1,0x8000); //在数据空间0xffff地址写自举表起始地址0x8000

Addr1=(uint *)0x8000; //自举表首地址

Word_Program(Addr1,0x10AA); //自举总线宽度为16位,即第一个字为0x10AA

Addr1++; //累为地址

Word_Program(Addr1,0x0E38); //SWWSR的值

Addr1++; //累加地址

Word_Program(Addr1,0x8806); //BRSC的值

Addr1++; //累加地址

Word_Program(Addr1,0); //程序入口地址XPC为0

Addr1++; //累加地址

Word_Program(Add

《TMS320VC5416并行自举的巧妙实现(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/160052.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。