文档详情

DSP的BootLoader程序的实现.doc

发布:2017-08-11约8.86千字共11页下载文档
文本预览下载声明
多核DSP的BootLoader程序的实现 ?DSP芯片的BootLoader程序用于实现用户程序上电自举,它有多种工作方式。上电自举就是将用户存放在片外的非易失性、慢速的存储器中的程序装载到片内易失的、高速的存储空间中,以保证用户程序在DSP核内的高速运行。 ????多核DSP是指由多个独立的DSP子核集成的DSP芯片,且所有DSP子核共享一套片外总线。由于每个DSP子核内部都有其自身独立的掩模BootLoader程序,当DSP芯片上电或复位时所有DSP子核都将自行启动自身独立的BootLoader程序,实现用户程序的上电自举。所以,多核DSP的BootLoader程序的实现方法与单核DSP的BootLoader程序的实现方法有较大的差异。为此,本文立足于实践,以双核DSP-TMS320VC5421的16位并行EPROM的BootLoader程序的工作方式为例,详细阐述了多核DSP的BootLoader程序的实现方法。 BootLoader程序简介 BootLoader程序的四种工作方式 一般的DSP都采用常见的BootLoader程序工作方式来实现用户程序的上电自举: 处理器通信口(主端口)HPI方式--通过DSP芯片与PC机或DSP芯片与其它DSP芯片之间的主机通信端口实现上电自举; 8位或16位并行EPROM方式--通过DSP内核的DMA通道实现上电自举; 8位或16位并行I/O方式--通过DSP芯片的片外并行I/O接口实现上电自举; 8位或16位串行口方式--通过DSP芯片的串行端口实现上电自举。在以上四种工作方式中,最常用的是16位并行EPROM方式。即在DSP芯片上电或复位时,通过DMA通道将存储在核外EPROM中的程序以16位形式存储到核内的程序空间中。 位并行EPROM方式的Boot表 ?????? 各种方式的BootLoader程序都有其固定格式的Boot表,用来实现用户程序的上电自举。16位并行EPROM方式的Boot表如表1所示表项存放BootLoader程序工作方式控制字,用于DSP芯片上电或复位时确认该Boot表是否为16位并行EPROM工作方式的Boot表。该表项内容为10AAH,表示DSP内核认为该Boot表是16位并行EPROM工作方式的BootLoader程序的Boot表;否则DSP内核认为该Boot表不是16位并行EPROM的方式的Boot表;表项存放DSP特殊寄存器SWWSR在上电或复位时被赋予的初始化数值;表项存放DSP特殊寄存器BSCR在上电或复位时被赋予的初始化数值;表项存放用户程序将要被存放在DSP核内程序空间的页地址;表项存放用户程序将要被存放到DSP核内程序空间的页内偏移地址;表项开始依次存放用户程序第m段代码的长度N。用户程序第m段代码将要被存放到DSP核内程序空间的页地址,用户程序第m段代码将要被存放到DSP核内程序空间的页内偏移地址,用户程序第m段代码的第1个字,第2个字,……,第N个字;Boot表的最后表项存放Boot表结束字0000H,表示Boot表到此结束。因此DSP内核要实现BootLoader程序,在上电复位后首先要申请到片外数据、地址总线的控制权,然后再根据Boot表完成用户程序上电自举过程。 位并行EPROM方式Boot表的生成 ?????? 所有BootLoader程序所需的Boot表的数据结构都是通过执行包含-v548参数的链接命令和Hex500转换命令的程序形成的。在链接过程中确定用户程序和数据的存放地址,在Hex500转换过程中定义BootLoader程序的工作方式和用户程序执行的入口地址等。 ?????? 为了生成16位并行EPROM方式的Boot表首先,在链接程序时必须设置-v548选项;然后使用TI公司DSP开发工具自带的HEX500.EXE文件,根据用户的COFF格式的代码生成Boot表中的相应内容。 ?????? HEX500.EXE可执行文件一般使用以下几种参数 ?????? (1)*.out :用户的COFF格式的程序; ?????? (2)-e :确定用户程序的入口点; ?????? (3)-a :以ASCII形式,根据用户的.out文件输出对应的HEX文件; ?????? (4) -Boot实现用户程序的装载; ?????? (5) -bootorg :确定生成哪种形式的Boot表; ?????? (6) -memwidth:确定引导方式的位数; ?????? (7) -O *.hex:输出的HEX文件的名称。 ?????? 例如: ?????? hex500 ti.out /根据ti.out文件生成Boot表/ ?????? -e 0x4000 /用户程序的入口点为0x4000/ ?????? -a /以ASCII形式输出HE
显示全部
相似文档