1 前言
TMS320C54x是TI公司推出的定点系列数字信号处理芯片,它具有运算速度高、CPU结构优化、功耗低和智能化外设等特点,特别适用于实时嵌入式系统的开发,因此,它已成为数字产品设计中低成本,低功耗、高性能的数字信号处理芯片的首选,在便携式仪器、消费类电子、医疗设备等领域得到广泛的应用。
TMS320C54x的加载引导(BOOTLOAD)方式可使系统在上电时将代码从片外加载到程序区,从而允许开发者事先将程序代码放在外部低速的非易失性存储器件中以便快速取址、译址和执行。
开发设计人员可以用不同的控制信号(如中断、外部标志(XF)、通用输出(BIO)等)来选择不同的加载引导方式以满足设计需求。
2 加载引导(BOOTLOAD)方式
在上电复位后,DSP只有处于微计算机状态即MP/MC为零时才能进入加载引导过程。TI公司已在DSP芯片内部ROM的OF800H-OFCOOh中固化了一段加载引导程序(BOOTLOADER),其作用是先根据相关控制信号的不同状态来确定采用何种加载引导方式,然后将代码从外部加载到程序区,最后再将程序入口地址赋给程序指针。在这段程序的开始,还应对CPU状态寄存器进行初始化设置,包括屏蔽中断(INTM=1)、内部DARAM映射到程序/数据区(OVLY=1)、程序/数据区读写加7个等待周期等设置。
为了满足不同系统的需求,TMS320C54x有多种加载引导方式。各种加载引导的功能如下:
主机接口引导
主机接口(HPI)是TI公司DSP的特色之一,即DSP作为协处理器将片内DRAM共享以便让其它智能器件(比如单片机或另外的DSP)作为主机访问,从而提供一种方便快捷的通讯联系方式。在主机接口引导方式下,首先将代码通过主机接口下载到DSP片内存储器中,然后,DSP再从数据区007FH提供的地址开始执行程序。
8位/16位并行引导
并行引导就是以并行方式从外部读取引导表数据,同时根据该表的内容加载代码并执行。并行引导表中通常包括要下载的代码段、各代码段的目的地址、下载完成后程序执行的起始地址以及其它一些设置信息。
8位/16位标准串行引导
串行引导就是通过DSP的多通道缓冲串口(McBSP)在标准模式下从外部读取引导表数据同时根据该表的内容加载代码然后执行。其中McBSP0支持16位,McBSP1支持8位。
8位串行EEPROM引导
该模式通过DSP的McBSP1在时钟停止模式(SPI)下从串行EEPROM中读取引导表数据,同时根据该表的内容下载代码然后执行。
8位/16位IO引导
在IO引导模式下,加载引导程序首先通过外部标志(XF)和通用输出来(BIO)实现并行的异步握手协议,然后再从IO端口0000h读取引导表数据,同时根据该表的内容下载代码并执行。
加载引导程序(BOOTLOADER)允许多代码段加载,且该加载不占用连续地址空间。另外,在并口和IO加载引导方式下,加载引导程序(BOOTLOADER)还会根据引导表的设置对DSP的SWWSR、BSCR寄存器进行设定。
3 加载引导(BOOTLOAD)的执行
当加载引导程序完成初始化后,便可执行一系列的检测操作以确定采用哪种加载引导方式。其检测顺序如下:
(1)主机接口加载引导方式;
(2)8位串行EEPROM加载引导方式;
(3)16位并行加载引导方式;
(4)8位并行加载引导方式;
(5)MCBSP1标准串行加载引导方式(8位);
(6)MCBSP0标准串行加载引导方式(16位);
(7)IO加载引导方式;
(8)主机接口加载引导方式。
图1给出了DSP加载引导方式的检测过程。当系统检测一遍后,若无有效加载引导方式被选中,加载引导程序将重新启动并继续检测,但此时是从标准串行加载引导方式开始而并不是检测所有的引导方式。
3.1主机接口加载引导
一般在DSP芯片复位后,首先判断是否选择主机接口引导方式。具体方式是加载引导程序先将数据区007Fh清零并发出主机中断,然后监测中断标志寄存器(IFR)中的外部中断2(INT2),此时若有INT2发生,则认为主机接口引导方式被唯一选中并进入该引导方式。否则,加载引导程序还会检查其它引导方式,包括主机方式。
为了适时地触发INT2外部中断,可以将主机中断(HINT)和外部中断2(INT2)直接连在一起,或者在DSP复位30个时钟周期内触发一个有效的外部中断(INT2)。
进入主机接口引导方式后,主机就可以向DSP加载代码,直到加载结束,同时在DSP数据区的007Fh写入DSP程序开始执行位置。而加载引导程序则一直监测007Fh的数据是否有改变,如果数据发生非零改变,则结束加载引导,同时将程序指针设为该非零值以作为程序起始地址。
3.2串行EEPROM加载引导
若未进入主机接口引导方式,加载引导程序会通过检测外部中断3(INT3)来判断是否选择串行EEPROM方式。若发现中断标志位(IFR)中的外部中断3(INT3)有效,则进入串行EEPROM加载引导方式。也就是说,在DSP复位30个时钟周期内,如有外部中断3(INT3)被触发,则选择这种加载引导方式。为了产生有效的外部中断3(INT3),可以将多通道缓冲串口(McBSP1)的传输引脚(BDX1)与外部中断3(INT3)直接联接起来。具体的连接方式如图2中的虚线所示。
有一点需要注意:那就是并非所有版本的TMS320C5402都完全支持这种加载引导方式。
3.3并行加载引导
并行加载引导方式支持8位和16位数据宽度,也就是说外部非易失性存储设备可以是8位或16位。在加载过程中,软件等待寄存器(SWWSR)和边界切换控制寄存器会依据引导表中的设置进行配置,但此设置只有在引导加载结束时才起作用。
首先,加载引导程序可从IO空间或数据空间的0FFFFh读取引导表的地址(范围为04000h~0FFFFh)。相比而言,从数据空间读取更为方便,因为可以将引导表数据和它的起始地址放在一个外部非易失性存储设备中。然后按照得到的引导表起始地址读取数据。如果读到10AAh则是16位数据宽度,并开始加载引导;而如果读到xx08h则是8位数据宽度,此时系统将继续读下一个数据,只有读到xxAAh才能进入加载引导。
3.4标准串口加载引导
实际上,TI公司的DSP也可以通过多通道缓冲串口(McBSP)的标准模式来加载引导,其中McBSP0是8位数据宽度,McBSP1是16位数据宽度。当判断是否选择标准串口引导方式时,加载引导程序先将串口配置为TMS320C54的标准串口,并将DSP的外部标志位(XF)置低以等待接收数据,然后监测中断标志寄存器,看是否有串口中断发生,同时判断是哪个串口(BRINT0或BRINT1)。若是串口1中断,则读取串口数据接收寄存器的值以进一步判断,如果第一个字节是08h,第二个字节是AAh则进入8位串口引导方式,否则判断是否是串口0中断。若是串口0中断,同样读取串口数据接收寄存器的值并进一步判断,如果是10AAh则进入16位串口引导方式,否则继续判断是否是IO方式。
3.5 IO加载引导
由于在标准串行方式中,加载引导程序已经把外部标志位(XF)置低,因此,若无串口中断发生,DSP将判断是否选择IO方式。IO方式是利用外部标志位(XF)和通用输入引脚(BIO)通过握手信号来传输数据的。当XF保持“0”状态时,表示DSP已准备好进入IO引导方式,此时若外部主机将通用输入引脚(BIO)置“0”,则表示要求IO方式引导,之后,通过DSP读取IO地址0000h的数据,并将XF置“1”以表示数据接收成功,随后主机再将BIO置“1”,则表示一次数据传输的结束;若还有数据需要传输,可使XF再次置“0”以表示准备接收数据,然后由主机将数据准备好后将BIO置“0”,以使得DSP能够再次读取IO地址0000h的数据,之后,系统再将XF置“1”,随之主机再次将BIO置“1”,则表示又完成一次数据传输;此过程周而复始,直到引导表的数据全部传输完毕。
DSP从IO读回的第一个数据如果是10AAh,则以16位数据宽度传输引导表;如果第一个是08h,第二个是AAh,则以8位数据宽度传输引导表。
4 加载引导表
加载引导表是将通用目标文件(.OUT)按照加载引导方式设置生成十六进制文件(.HEX),也就是生成固定格式的数据流。表1给出了16位模式时源程序数据流的生成结构。加载引导表的生成步骤如下:
(1)编译程序代码,生成目标文件。应当注意:
对于TMS320C5402,需加编译选项-v548,否则最后生成的将是早期TMS320C54x的引导表。
本文关键字:暂无联系方式综合-其它,单片机-工控设备 - 综合-其它