两类DSP芯片的引导过程分析
摘要:详细分析了TI公司TMS320C40和TMS320VC5402两类DSP芯片的系统引导特点。在了解机理的基础上,叙述了工程设计中创建系统引导表的具体步骤,给出了创建步骤中所需的键接文件范例,并进行了说明。
关键词:TMS320C40 TMS320VC5402 系统引导 引导表
目前,DSP芯片正逐渐应用到电子设计中,其中应用最广泛的是TI公司生产的DSP系列产品。笔者在工程项目的开发中,对TMS320C40和TMS320VC5402(以下简称C40和C5402)进行了系统的研究,并成功的实现了DSP的脱机运行。本文希望通过对C40和C5402两种芯片系统引导的描述使大家了解设计DSP系列引导的步骤,能够利用DSP设计自己的设备。
1 C40和C5402的系统引导机理
TI公司的每一种DSP产品,都为用户设计了多种系统的引导方式,如串口、并行加载、HPI加载等。C40和C5402的引导方式如表1所示。
表1 C40和C5402的引导方式
C40 | C5402 | |||||
程序执行地址 | IIOF3 | IIOF2 | IIOF1 | IIOF0 | ||
1 | 0030 0000H | 1 | 1 | 0 | 1 | HPI口引导模式(由INT2引脚识别) |
2 | 4000 0000H | 1 | 0 | 1 | 1 | 串行8位EEPROM引导模式(INT3) |
3 | 6000 0000H | 1 | 0 | 0 | 1 | 并行引导模式 |
4 | 8000 0000H | 0 | 1 | 1 | 1 | 标准8位串行口McBPSP1 |
5 | A000 0000H | 0 | 1 | 0 | 1 | 标准16位串行口McBPSP2 |
6 | C000 0000H | 0 | 0 | 1 | 1 | I/O口引导模式 |
7 | RESERVE | 0 | 0 | 0 | 1 | HPI口引导模式(由入口点进行识别) |
8 | 通讯口引导方式 | 1 | 1 | 1 | 1 |
在工程中,使用最广泛的EEPROM并行加载方式。它又分为8位数据宽度和16位数据宽度两种,笔者采用的是8位数据宽度的并行加载方式。需要注意的是C40的数据总线宽度是32位,引导表中数据存放的原则是低字节在低地址。C5402的数据宽度是16位,引导表中数据的存放原则是高字节在低地址。
1.1 C40的并行引导模式
C40加电时,芯片塞满到ROMAN引脚为高电平,进入微处理器模式。再检测IIOF3~IIOF0引脚电平,决定系统的引导方式和选择并行引导的始地址。执行程序引导程序时,程序和数据存取等时间可以设置为最长7个等待周期。若软件延时不够用,则需要辅助硬件延时等待。程序引导完毕后,会在IACK引脚产生脉冲,使引脚可以作为中断引脚使用并转入到程序的入口地址开始执行程序。
C40由中断引脚的电平决定系统引导后的程序执行地址,或决定是否由通讯口进行程序的加载。采用0030 0000H作为主程序的入口地址,即将一片28C256地址设计为0030 0000H~0030 7FFFH。在系统引导时,需维持IIOF3~IIOF0四个引脚电平为1101。
下面以IIOF2引脚和IIOF1引脚为例,叙述一下系统引导前后的中断引脚的处理过程。图1电路是IIOF2引脚的外围处理电路。在系统加电时,D31A的/PRE=0、/CLR=1,置位端有效,所以Q=1、/IIOF2=1。加电完毕后,/PRE=1、/CLR=1,此时无/IACK信号,Q=1、/IIOF2=1,C40开始程序的加载工作。当C40程序加载完毕时,IACK引脚会产生一个脉冲,Q=D=0,/IIOF2=/INT2。C40会转入程序的入口地址执行程序,此时D触发器电路的工作已经完成,C40此时可以处理中断信号。图2电路是IIOF1引脚的外围处理电路。系统引导时,要求/IIOF1引脚电平为低电平。
1.2 C5402并行引导模式
C5402加电时,如果芯片检测到MP/MC引脚电平为低电平,系统从0FF80H开始执行代码。此处有一个分支指令(厂家编程设置的),可以跳转到引导程序的开始地址(0F800H)。这个程序可以在引导之前设置CPU状态寄存器的初始值。中断被全局禁止,OVLY设置为1,程序和数据存取等待时间被设置为7个等待周期,外部内存块被设置为4K的WOROS(16BIT),然后开始程序的引导。
当C5402检测到INT2引脚为高电平、INT3引脚为高电平,即两个引脚都无效时,C5402会转到并行引导方式。并行引导方式是通过扩展的内存接口从数据地址空间读取所需的引导表,再将代码传送到程序存储区。并行引导既支持8位的数据宽度,也支持16位的数据宽度。软件可编程等待寄存器(SWWSR)和块切换控制寄存器(BSCR)都可以在这两种模式中得到设置。
C5402数据存储区、程序存储区和I/O地址空间,用/DS、/PS和/IS三个引脚信号区分。系统的引导表设在数据存储区,考虑到C5402内部只有16K×16的双存取RAM(DRAM),因此用于程序加载的EEPROM(EEPROM)中存放的是系统的引导表)可考虑使用28LV256。如果在设计中,使28LV256(+3.3V供电)占用系统的数据空间地址为8000H~0FFFFH,那么,C5402在系统引导时需从系统的数据地址0FFFEH和0FFFFH得到引导表的起始地址8000H。在设计系统引导表时要注意这两个单元的内容。如果设计EEPROM的首地址(系统引导表的首地址)为0C000H,那么数据地址0FFFEH和0FFFFH两个单元要存放C0和00H,也就是引导表的首地址。在设计中也可以使用其它EEPROM或FLASH,如29LE010(128K×8BIT),但要正确配置它在系统中的地址。引导表的首地址(即EEPROM的在系统中的首地址)是通过系统数据地址0FFFEH和0FFFFH决定的,可以是08000H~0FFFDH之间的任意地址,但要保证能够存储系统引导表。
javascript:window.open(this.src);" style="cursor:pointer;"/>
2 建立系统引导表的步骤
程序经过仿真器仿真无误以后,就要建立引导表,使系统能够脱机运行。下面介绍建立系统引导表的步骤:
(1)编译文件。编写完程序代码以后,对源程序进行编译,生成