收藏 分享(赏)

dsp经过CPLD加载bootloader.doc

上传人:hwpkd79526 文档编号:7230695 上传时间:2019-05-10 格式:DOC 页数:4 大小:74KB
下载 相关 举报
dsp经过CPLD加载bootloader.doc_第1页
第1页 / 共4页
dsp经过CPLD加载bootloader.doc_第2页
第2页 / 共4页
dsp经过CPLD加载bootloader.doc_第3页
第3页 / 共4页
dsp经过CPLD加载bootloader.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、本文介绍了一种基于 CPLD 快速译码的 DSP 二次引导方法,利用 CPLD 的时序严格、译码速度快、可在线编程等特点,在 DSP 的外部存储器接口 EMIF(Exteral Memory Interface)的 CE2 空间模拟了一个 Flash 换页寄存器 FPR( Flash Page Register),在上电复位后控制 Flash 的高位地址线,从而实现 Flash 的分页访问。因此,可通过二次 bootloader程序修改 FPR 的值,控制 Flash 的高位地址线,将最终的应用程序加载到 RAM 中运行。1 TMS320VC5509A 的并行引导模式1.1 5509A 的引导

2、模式5509A 的引导模式选择是通过 4 个模式选择引脚 BOOTM3:0来配置的,BOOTM30 引脚分别与 GPIO0、3、2、1 相连。5509A 提供了六种引导模式,即 EHPI 引导模式、8 位/16 位并行 EMIF 引导模式、8 位/16 位标准串行口引导模式、 SPI EEPROM 引导模式、USB 引导模式以及 I2C E2PROM 引导模式。本文采用 16 位并行 EMIF 引导模式,将 BOOTM3:0设置为 1011 即可。在 16 位并行 EMIF 引导模式下,DSP 芯片内部固化的 Bootloader 程序上电复位后,首先从 CE1 空间首地址 0x200000h

3、 处开始读取程序代码,并加载到 RAM 中运行。1.2 5509A 的引导表格式程序代码以引导表的格式存储在 Flash 存储器中。引导表是独立于所选引导模式的一种特定的格式,包含了用户程序的代码段、数据段、段在 RAM 中的目标地址以及程序入口地址等其他相关信息。5509A 引导表结构如表 1 所示。DSP 芯片内部固化的 Bootloader 的主要功能是将 Flash 中存储的引导表按一定顺序加载到 RAM 中,然后跳转到 32 位程序入口地址开始执行。引导表文件可以通过 TI 公司提供的 16 进制转换工具生成,一般是 hex 格式,然后将此 hex 文件烧写到 Flash 存储器中供

4、Bootloader 加载。2 DSP 二次 Bootloader 的原理及实现由上述分析可知,DSP 用户程序的并行加载过程是由 DSP 内固化的 Bootloader 实现的。由于 5509A 的 PGE 封装只有 14 根地址线,最多只能访问到 16K16bit 地址空间。对于超过 16KB 的用户代码,Bootloader 将不能加载全部的引导表文件。因此若要加载超过 16K的用户代码,必须进行二次 Bootloader。二次 Bootloader 的原理是由用户自行编写一个代码长度小于 16KB 的引导程序(以下简称 uboot),其功能与 DSP 内固化的 Bootloader 相

5、同,用于加载最终的用户代码。在uboot 程序中控制 Flash 存储器的高位地址线来访问 Flash 的其他存储内容。这样,DSP 上电复位后,Bootloader 首先加载 uboot 并运行,然后 uboot 又加载最终用户代码,实现了大于 16K 代码的二次引导。2.1 DSP 与 Flash 及 CPLD 的硬件接口本文采用 AMD 的 Am29LV800 作为 DSP 的外部存储器扩展。Am29LV800 按 8 位方式访问,容量为 1M 字;按 16 位方式访问,容量为 512K 字。DSP 外围电路逻辑译码及Flash 高位地址线模拟由 CPLD 实现。Xilinx 公司的 X

6、C9572XL 是一款高性能的 CPLD 芯片,最高主频可达 178MHz,包含了 72 个宏单元,1 600 个可用门电路,其 TQFP 封装有72 个可用 I/O 引脚7 。图 1 是 5509A 与 CPLD 及 Flash 之间的硬件接口设计原理图。 如图 1 所示,5509A 的地址线 A13:1与 Flash 的地址线 A12:0,A0 未用。Flash 存储器被映射到 DSP 的 CE1 空间,由片选线 CE1 经 CPLD 译码后选通。其中 DSP的地址线 A13 和 A3:1 与 CPLD 接口,用于换页寄存器 FPR 的模拟。Flash 存储器的BYTE 引脚经上拉后接高电

7、平,即按 16 位方式访问。2.2 CPLD 译码 VHDL 程序设计目前 DSP 系统主频越来越高,运算速度越来越快,利用小规模逻辑器件译码的方式已不能满足 DSP 系统性能的需求。 CPLD 器件以其严格的时序、快速的译码、良好的可编程性成为 DSP 系统必不可少的部件之一。本文利用 CPLD 的快速逻辑译码功能,模拟了一个 FPR 寄存器来控制 Flash 的高位地址线。VHDL 语言源程序如下(篇幅有限,这里省略实体端口声明及中间信号定义):beginfce =ce1;foe =aoe;fwe =awe;h_addr =a13;l_addr =a3&a2&a1;datain =d5&d

8、4&d3&d2&d1&d0;facs =1 when h_addr=1and ce2=0 and l_addr=000else 0; -CE2 0x400000FPR :process(facs,awe ,reset)beginif reset=0 thenfa=000000;else if reset=1 thenif aweevent and awe=1 thenif facs=1 thenfa=datain(5 downto 0);end if;end if;end if;end process;dataout=fa when aoe=0 and facs=1else ZZZZZZ;d5

9、 =dataout(5) ;d4 =dataout(4) ;d3 =dataout(3) ;d2 =dataout(2) ;d1 =dataout(1) ;d0 =dataout(0) ;fa18 =fa(18);fa17 =fa(17);fa16 =fa(16);fa15 =fa(15);fa14 =fa(14);fa13 =fa(13);end behaviour;由上述 VHDL 程序可知,FPR 寄存器被映射到了 CE2 空间的 0x401000 地址。其中引入 A13 及 A3:1地址线的目的是为了便于以后的功能扩展,映射出更多的寄存器,如 LCD控制寄存器、UART 控制寄存器等。

10、FPR 寄存器定义如表 2 所示。 FPR 寄存器的第 50 位分别控制 Flash 的高位地址线 A18A13 ,第 76 位无效。当DSP 上电复位时,FPR 寄存器的值被设置为全 0,此时 Flash 的所有高位地址线均处于低电平状态,DSP 开始访问 Flash 的最低 8KB 地址单元。复位结束,就可以对 FPR 寄存器写入值,改变 Flash 的高位地址,从而实现 Flash 的分页访问。这样 Am29LV800 Flash 的512K 字存储空间相当于被划分为 64 页(0 63),每页 8K 字,当程序大于一页时,修改FPR,进行软件翻页,读入下一页 Flash 数据。也可以通

11、过读 FPR 寄存器,了解当前高位地址线的状态,此时 FPR 寄存器与 Flash 的地址映射关系为:Flash 地址单元= (FPR13)+DSP 地址线 A13:12.3 二次 Bootloader 的实现基于上述的设计和分析,要实现大程序的自动引导,可以采用二次 Bootloader 的方法。首先要设计一个 uboot 程序,大小不能超过一页。将 uboot 程序烧写到 Flash 存储器的第 0页,也就是 DSP 上电复位后被固化的 Bootloader 自行引导的那一页。uboot 的主要功能是通过修改 FPR 寄存器值,并按照引导表的格式读取 Flash 存储器的其他页程序到 RA

12、M 中,最后跳转到用户程序的 32 位入口地址开始执行。uboot 程序中,可以定义一个 16 位无符号整型指针变量,指向 CE2 空间的 0x401000 地址,即:unsigned int*FPR=(unsigned int*) 0x401000;若*FPR=1 ,即可以访问 Flash 的第 1 页。在编写 uboot 程序和用户程序时,要对存储器空间重新分配,即在定义 CMD 文件时,要注意用户程序所占用的存储空间不能与 uboot 程序占用的存储空间重叠。因为 uboot 首先被加载运行,在运行时加载用户程序,也需要占用 RAM 地址空间。而且 uboot 程序代码长度不能超过一页。

13、当烧写 Flash 时,必须将 uboot 程序烧写到 Flash 的第 0 页,然后将用户程序烧写到第一页或以后的存储空间中。3 实验结果以煤矿井下煤矸分界传感器为例,测试本文介绍的基于 CPLD 译码的 DSP 二次Bootloader 方法。该传感器采集放煤时煤矸石振动信号,经 AD 转换后送入 DSP 经数字信号处理,分析得出煤矸石放落比例8。用户程序代码大小为 23K 字左右,显然不能够被固化的 Bootloader 正常加载,因此必须经过二次 Bootloader。将大小约 2K 字的 uboot 程序烧写到 Flash 第 0 页,用户烧写到第 13 页。经多次测试,该系统从上电复位到开始运行用户程序,耗时大约 0.3s,而且系统运行稳定可靠。本文介绍的基于 CPLD 快速译码的 DSP 二次 Bootloader 方法,利用 CPLD 器件的快速译码功能,模拟了一个换页寄存器,实现了大程序的上电后二次引导。与常见的利用GPIO 换页的方法相比,本方法更有效,通用性更好,不会占用宝贵的 GPIO 资源,而且系统扩展方便,接口简单。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报