$COMMAND_LINE_OBJECTS;MEMORY //片内存储区定义{mem_rth { TYPE(PM RAM) START(0x00040000) END(0x000400ff) WIDTH(48) } //程序内存,中断向量表段mem_pmco { TYPE(PM RAM) START(0x00040100) END(0x000491ff) WIDTH(48) }//程序内存,代码段mem_pmda { TYPE(PM RAM) START(0x0004db00) END(0x0004efff) WIDTH(32) }//程序内存,数据段mem_dmda { TYPE(DM RAM) START(0x00050000) END(0x00057fff) WIDTH(32) }//数据内存,数据段mem_dmex { TYPE(DM RAM) START(0x00800000) END(0x00800fff) WIDTH(32) } //数据存储区,片外数据段} //以下是对多片(ID1 和ID2)映射空间说明MPMEMORY{ID1
{ START(0x00100000) } //第一片映射到0x00100000ID2 { START(0x00200000) }&nbs p; //第一片映射到0x00200000}下是对共享的外部存储区的声明,比如外挂的SRAM等器件的存储空间{OUTPUT(shared.sm)SECTIONS{dxe_dmex{ INPUT_SECTIONS( shared.doj(sram_da) )} >mem_dmex}}PROCESSOR ID1//处理器 ID1 的段定义. { LINK_AGAINST(ID2.dxe) OUTPUT(ID1.dxe) SECTIONS { dxe_rth{ INPUT_SECTIONS( ID1.doj(seg_rth) $LIBRARIES(seg_rth))[!--empirenews.page--]}
>mem_rthdxe_pmco{ INPUT_SECTIONS( ID1.doj(seg_pmco) $LIBRARIES(seg_pmco))} >mem_pmcodxe_pmda{ INPUT_SECTIONS( ID1.doj(seg_pmda) $LIBRARIES(seg_pmda))} >mem_pmdadxe_dmda{ INPUT_SECTIONS( ID1.doj(seg_dmda) $LIBRARIES(seg_dmda))} >mem_dmda}}PROCESSOR ID2//处理器 ID2 的段定义{LINK_AGAINST(ID1.dxe) OUTPUT(ID2.dxe) SECTIONS {dxe_rth{INPUT_SECTIONS( ID2.doj(seg_rth) $LIBRARIES(seg_rth))} >mem_rthdxe_pmco{ INPUT_SECTIONS( ID2.doj(seg_pmco) $LIBRARIES(seg_pmco))} >mem_pmcodxe_pmda{INPUT_SECTIONS( ID2.doj(seg_pmda) $LIBRARIES(seg_pmda))} >mem_pmdadxe_dmda{INPUT_SECTIONS( ID2.doj(seg_dmda) $LIBRARIES(seg_dmda))} >mem_dmda}} 通过以上的定义,就实现了在一个LDF文件中声明了两片AD21160的存储空间,以及[1][2]下一页 多片存储区映射(MMS),和共享片外存储区。3.烧写双片SHARC的流程实例 新建一个工程,采用以上的LDF文件声明。 然后编写两个.asm文件:ID1.asm,ID2.asm。 这两个.asm文件都有独立的中断向量表,可以独立执行各自的程序。 例如,可以在ID1.asm中让FLAG0和FLAG1输出反相的方波,在ID2.asm中让FLAG2和FLAG3输出另一个频率的反相的方波。 编译通过后,可以找到新生成的可执行文件ID1.DXE,ID2.DXE。 在VISUAL DSP++集成环境中,选择工程属性(Project Option),改变如下:1.如上图,把Type由DSP executable file改为Loader file; 2.如上图,选定Multiprocessor,就可以在被激活的选择框中选择要使用的.DXE文件。在1处,选择ID1.DXE;在2处,选择ID2DXE。这意味着将对第一片加载ID1.DXE,对第二片加载ID2.DXE。Kernel file选择默认的160_prom.dxe,该文件是由AD提供的加载核文件。在Output file中设定输出文件名(在这里是Two_SHARC.ldr);选定ASCII格式,将产生16bit的数据文件;boot type选定eprom,这将产生适合从eprom中加载的数据文件。 3.一切完成后,进行一次编译。就可以在DEBUG文件夹里找到生成的Two_SHARC.ldr。 4.接好仿真器后,打开FLASH烧写程序,把要烧结的文件名添加到程序中。运行FLASH烧结程序,就把两片加载程序烧到FLASH里了。 5.关闭VisualDSP,拔掉仿真器,重新启动目标板,按下RESET,通过示波器观测第一片DSP的FLAG0和FLAG1,和第二片DSP的FLAG2和FLAG3,检查是否有对应的反相方波输出。如果有,说明双片AD21160加载成功。4.结 束 语 美国AD公司的SHARC系列DSP的多片级连能力是其特点之一,从本文介绍的两片系统加载方案可以推知多片SHARC系列DSP芯片系统的加载也是类似的。多片系统同样也要注意系统的硬件架构,包含多片DSP芯片之间的连接方式,总线仲裁机制,以及与FLASH MEMORY之间的连接。软件上对.LDF的设置是关键,它决定了多片DSP之间的相互访问的存储分区。多片SHARC系
统会大大发挥该系列芯片强大的浮点处理能力,在通信,雷达等方面有重大应用。
因篇幅问题不能全部显示,请点此查看更多更全内容