汪庆武,郇钲,黎泽清,张德平
(上海航天电子技术研究所,上海201109)
摘要:针对TMS320F281xDSP内部FLASH无法满足空间应用抗辐照指标要求,进而需要直接从外部高可靠性存储空间引导加裁的问题,介绍了TMS320F281x DSP的引导加载模式、EEPROM的接口电路和引导加栽的数据流格式,最后给出基于SPI接口的DSP程序引导加载方法和实现过程,较好地解决了该DSP从外部存储引导加载的问题。
关键词:数字信号处理器;引导加载;SPI
中图分类号:TP368文章编号:1006 - 2394(2016)05 - 0006 - 03
0引言
TIC2000系列32位C28xTM DSP在单周期中处理复杂的控制理论操作,与典型的MCU相比可提供更高的每MHz性能,还有大量的外设资源,如A/D、定时器、外部中断、EV、数字10脚等,在通信、工业控制和消费类电子等领域得到了广泛应用,目前DSP+ FPGA框架已成为高性能运动控制系统的首选。某微波探测载荷驱动控制器采用TI TMS320F2812+
Xilinx Vertex系列FPGA XCV300平台。在地面应用时,TMS320F281x程序和数据一般存放在内部FLASH上,上电搬至内部的RAM或外扩的SRAM中运行;而在空间应用时,其内部FLASH无抗辐照指标,无法满足星载运用需求,为保证DSP程序存储空间的可靠性和安全性,需将用户程序存放至外部高可靠性、具有抗辐照指标的非易失性存储器中,如EPROM、FLASH等,待系统上电运行时,存于外部空间的DSP程序需要进行引导加载,即将非易失性存储器中的程序搬移到内部RAM或外接的SRAM中运行。本文针对在TMS320F281x空间应用程序引导加载问题,介绍了该系列DSP的引导加载方式,给出基于SPI接口EEPROM硬件接口电路和引导加载数据流格式,从外部EEPROM引导加载方法及其实现步骤,并通过实验验证基于SPI接口DSP程序引导加载方法的有效性。
1 TMS320F281xDSP的引导模式
TMS320F281x的Bootloader程序存储在ROM中,在MC模式(微处理器模式)下,系统上电后,首先运行Bootloader程序,BOOT ROM中的矢量首先将程序重定向到InitBoot函数,执行DSP初始化后,引导加载器会检查GPIOF脚的状态决定采用何种引导模式,如表1所示为TMS320F281x DSP的引导模式和配置关系。
DSP上电复位后,Bootloader程序依次查询DSP的四个外部GPIO管脚(GPIOF4、GPIOF12、GPIOF3和GPIOF2)来选择加载方式。当Bootloader将程序加载到DSP的内部RAM或外接的SRAM后,跳转到用户程序的人口地址处,运行用户程序。Boot-loader加载流程如图1所示。本文采用基于SPI接口,通过SPI_BOOT从外部EEPROM中实现DSP程序引导加载。
2 基于SPI的EEPROM接口电路及其引导加载的格式
2.1 EEPROM接口电路
SPI引导ROM加载程序初始化要连接至串行SPIEEPROM的SPI模块,TMS320F281x外扩SPI接口的外部EEPROM硬件接口电路图如2图所示。EEP-ROM为ATMEL公司AT25系列AT25160AN,基于SPI四线制,支持模式0和模式3,可与DSP直接相连。
2.2引导加载的格式
SPI引导ROM加载程序使用最低波特率,用以下设置初始化SPI:启用FIFO、8位字符、内部SPICLK主模式和通话模式、时钟相位=0、极性=0。此外要使DSP能够成功地通过SPI进行引导加载,就必须正确地建立引导加载表,将程序按照一定的格式烧写和存放在程序存储器中。其中包括8位数据流关键字、外设时钟控制寄存器和SPI波特率寄存器值、应用程序的起始地址、代码块和数据块及其结束标识等。TMS320F281xSPI 8位的引导加载的数据流表格式如表2所示。
3 引导加载的实现方法
3.1 基于SPI的DSP程序烧写
用所谓的“两次下载法”来实现DSP程序烧写。即首先将用户程序的可执行文件下载到DSP,但不运行该程序;接着将烧写程序也下载到DSP,然后运行该程序,将先下载的用户程序按照SPI 8位引导加载的数据表格式写入到EEPROM。这种方法是把用户程序当作DSP内存中的数据(起始地址、代码块和数据块),将其“搬移”到外部的EEPROM中实现用户程序的烧写。
需要注意的是,由于下载完用户程序后并没有运行,而是紧接着下载烧写程序,用户程序仍然在DSP中,因此,两者的程序存储空间不能重叠;由于烧写程序要将用户程序当作数据写入EEPROM中,所以它的数据存储空间要包括用户程序的存储空间和烧写程序的地址空间。
3.2引导加载过程
用户程序已存人外部存储空间后,断电或重新复位启动,TMS320F281x通过SPI引导加载,流程图如图
3所示。基于SPI引导加载过程如下:
1)使能SPICLK时钟,调用函数SPIA _SysClock-Enable();
2)设置复用引脚为SPI功能,调用函数SPIA_GPI OSelect();
3)对SPI模块进行初始化,设置波特率、字长、主从模式等,调用函数SPIA _Init();
4)使GPIOF3输出为0 ,使能EEPROM芯片,GPIOF3口作为SPI的片选信号,GPIOD ataRegs. GPF-CLEAR. bit. GPIOF3=0;
5) SPI发送命令字Ox0300,SPI输出读EEPROM的信号,调用函数SPIA_ Transmit( Ox0300);
6)从EEPROM的首地址Ox0000开始读取数据,先读取一个字,调用函数SPIA _Get Word Data();
7)判断第一个字是否为Ox08AA,如果是则继续,否则跳转到片内FLASH启动地址;
8)再次读取判断LOSPCP和波特率是否为默认值,如果不是,则改写LOSPCP和通信波特率,之后7个字节保留,SPI的boo tloader读取之后丢弃它,SPIA_Rese rvedFn();
9)获取搬移后的程序入口地址,Entry Addr=SPIA _Get Long Data();
10)执行程序搬移,将代码段搬移到目的地址,从外部存储空间复制到片内RAM,SPIA_ Copy Data();
11)将GPIOF3拉高,禁止EEPROM操作,GPIO-DataRegs. GPFSET. bit. GPIOF3=1;
12)返回SPI启动的入口地址return EntryAddr。
在某微波探测载荷驱动控制器上对DSP程序通过SPI接口完成程序加载。加载过程部分波形如图4所示,其中chl为时钟信号SPICLK,ch2为MOSI发出指令0x03,0x00,ch3为MISO,EEPROM回传关键字0xaa,0x08,表示8位数据流格式。
4结束语
本文分析了TMS320F281xDSP的引导加载的工作原理,设计了TMS320F281x通过SPI从外部EEPROMArI25160AN引导加载,详细地介绍了其实现过程,完成了DSP从外部存储空间的引导加载,并通过某微波探测载荷驱动控制器验证了其有效性。通过上述方法,较好地解决了DSP程序存储的可靠性和安全性问题,为该DSP的空间应用奠定基础。
下一篇:返回列表