【vc++精品源码栏目提醒】:网学会员vc++精品源码为您提供DSP的BootLoader程序的实现 - 其它资料参考,解决您在DSP的BootLoader程序的实现 - 其它资料学习中工作中的难题,参考学习。
多核 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 程序工作方式来实现用户程序的上电自举:1. 处理器通信口主端口HPI 方式--通过 DSP 芯片与PC机或 DSP 芯片与其它 DSP 芯片之间的主机
通信端口实现上电自举;2. 8位或16位并行 EPROM 方式--通过 DSP 内核的DMA通道实现上电自举;3. 8位或16位并行 I/O 方式--通过 DSP 芯片的片外并行 I/O 接口实现上电自 举;4. 8位或16位串行口方式--通过 DSP 芯片的串行端口实现上电自举。
在以上四种工作方式中,最
常用的是16位并行 EPROM 方式。
即在 DSP 芯片上电或复位时,通过DMA通道将存储在核外 EPROM 中的程序以16位形式存储到核内的程序空间中。
16 位并行 EPROM 方式的 Boot 表 各种方式的 BootLoader 程序都有其固定格式的 Boot 表,用来实现用户程序的上电自举。
16位并行 EPROM 方式的 Boot 表如表1所示:表项 1:存放 BootLoader 程序工作方式控制字,用于 DSP 芯片上电或复位时确认该 Boot 表是否为16位并行EPROM工作方式的 Boot 表。
该表项内容为10AAH,表示 DSP 内核认为该 Boot 表是16位并行EPROM工作方式的BootLoader 程序的 Boot 表;否则 DSP 内核认为该 Boot 表不是16位并行EPROM的方式的 Boot 表;表项 2:存放 DSP 特殊寄存器 SWWSR 在上电或复位时被赋予的初始化数值;表项 3:存放 DSP 特殊寄存器BSCR在上电或复位时被赋予的初始化数值;表项 4:存放用户程序将要被存放在 DSP 核内程序空间的页地址;表项 5:存放用户程序将要被存放到 DSP 核内程序空间的页内偏移地址;表项 6:开始依次存放用户程序第m段代码的长度N。
用户程序第m段代码将要被存放到 DSP 核内程序空间的页地址,用户程序第m段代码将要被存放到 DSP核内程序空间的页内偏移地址,用户程序第m段代码的第1个字,第2个字,……,第N个字;Boot 表的最后表项存放 Boot 表结束字0000H,表示Boot 表到此结束。
因此 DSP 内核要实现 BootLoader 程序,在上电复位后首先要申请到片外数据、地址总线的控制权,然后再根据 Boot 表完成用户程序上电自举过程。
16 位并行 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 形式输出HEX文件/ -Boot / 装载用户的程序ti.out/ -Bootorg PARALLEL /生成并行EPROM方式的 Boot 表/ -memwidth 16 /生成16位的 Boot 表/ -o ti.hex /生成的HEX文件名为ti.hex/ 执行完该 HEX500.EXE 命令后,系统会创建一个文件名为ti.hex的ASCII文件, 然后用户根据