针对现有DSP自举模块普遍存在程序代码更新不便利的缺点,提出了一种可快捷高效地在线更新用户运用程序代码的DSP自举模块。该模块由根据LabVIEW的图形用户界面(GUI)软件与C8051F340单片机构成。GUI软件完结DSP运用程序代码的格局转化,并经过驱动USB将转化完结的程序代码传送给C8051F340。C8051F340经过其片上USB外设接纳DSP程序代码并存储于片上FLASH中,一起凭借规范串行总线操控DSP完结运用程序代码的自举操作。该模块选用在线方法,可一键完结DSP运用程序代码的更新晋级与自举操作。
TMS320VC54x系列DSP作为一种低功耗高速处理器在消费电子、通讯等范畴运用广泛[1-2]。一般为完结DSP程序代码的高速运转,一般需求将DSP的运用程序代码存储于DSP片内RAM中运转,但TMS320VC54x处理器是RAM型器材,掉电后DSP不能保存任何用户运用程序代码。因而,根据该型DSP的电子体系一般需求规划自举模块。所谓“自举”是指:DSP芯片内的程序引导装载器(Bootloader)自动地将DSP运用程序代码从DSP外部非掉电易失存储器加载到片内RAM中,脱离仿真器形式独立运转的进程。
TMS320VC54x系列DSP有两类自举方法:根据静态存储器(如:EEPROM、FLASH)的自举方法和根据处理器的自举方法。根据静态存储器的DSP自举方法[3-4]运用外扩的静态存储器存储DSP程序代码,因为该方法无需外加操控器干涉,因而具有电路简略等长处。根据处理器的DSP自举方法[5-6],运用单片机存储DSP程序代码并操控DSP完结自举,具有可有用操控DSP自举机遇,可灵敏挑选自举通讯接口等优势。但是,不管哪类自举方法,要更新DSP运用程序代码都需求先将DSP开发软件CCS编译发生的.out程序代码文件经过一系列的格局转化,生成DSP自举所需的程序代码格局,并将得到的代码移植到DSP运用体系片外扩展的静态存储器或单片机中存储。明显,传统DSP自举模块的上述程序代码更新操作十分费事。为此本文提出一种快捷高效的DSP自举模块。凭借该模块,用户无需了解DSP自举规划进程,便可一键完结DSP程序代码的更新晋级与自举操作。
1 方案规划
DSP开发软件CCS编译生成的.out文件不能直接用来自举,需求将其进行一系列繁琐的格局转化得到适宜的格局并移植到DSP的外部存储器进行自举[7]。为处理该问题,本模块经过根据LabVIEW的GUI软件完结上述转化并操控代码移植到外部存储器。如图1所示。GUI软件首要将.out文件转化为.hex格局,并将得到的.hex文件转化为便利DSP自举的.dat格局。之后GUI经过USB将数据传送给C8051F340单片机完结DSP程序更新。C8051F340是一款可供给USB功用并具有较大FLASH存储空间的混合信号微操控器。本模块运用其片上FLASH作为DSP的外部存储器,可省去外扩存储设备,节省本钱,简化电路。自举开端时,单片机将FLASH中的代码数据经过规范串行自举方法传送给DSP,操控DSP的自举。规范串行自举与其他自举形式比较,占用DSP硬件资源少、电路简略。经过本模块,开发者可在PC机上完结一键完结DSP代码更新。
2 硬件规划
本模块运用C8051F340的片上FLASH作为DSP的外部存储器。C8051F340经过规范串行接口与DSP通讯,经过USB与处理代码格局转化的GUI软件通讯。如图2所示,虚线框1为3线制的规范串行总线,担任数据的传输。虚线框2为复位与握手信号。DSP的bootloader经过拉低XF引脚告诉单片机DSP已准备好接纳数据;而单片机经过P1.3引脚拉低ˉRS来复位DSP。C8051F340与PC机经过USB衔接。如图2所示,VBUS为USB电缆VBUS引线的感应输入端,当该引脚呈现5V高电平信号时,标明该设备现已和主机衔接好。D+、D-为USB的差分信号线,D+信号线接1.5k的上拉电阻R1使USB设备作业于高速。电容C1、C3为15pF的滤波电容。为了消除差模搅扰,两信号线衔接巨细为33pF的%&&&&&%C2。REGIN为C8051F340片内电压调理器的输入端。VDD为C8051F340片内电压调理的3.3V输出端。经过将REGIN和VDD短接,C8051F340被装备为USB固件自供电,片内稳压器制止的作业形式。别的C8051F340电路模块中,经过C2调试接口(包含C2CK时钟信号和C2D双向数据信号)衔接JTAG对单片机程序进行烧写和调试。
3 软件规划
本体系首要经过GUI软件完结DSP用户运用代码的格局转化和调用USB主机API操控USB传输数据;经过C8051F340程序调用USB器材API接纳数据存入片内FLASH中并经过规范串行通讯操控DSP的自举。下面别离介绍各软件规划的功用和详细流程。
3.1 根据LabVIEW的GUI程序规划
LabVIEW开发的程序一般由一个或多个VI组成,一切VI都可分为前面板和框图两部分。前面板是VI的交互界面,用户输入数据经过前面板传递给框图,核算和剖析成果在前面板上以不同方法显现出来。图3为本模块的GUI前面板。如图所示前面板分为“输入装备区”和“情况显现区”。经过在前面板的“输入装备区”设置文件途径进行DSP代码文件的二次更新。“情况显现区”可实时显现USB衔接情况、文件转化信息、自举代码文件内容等详细信息。
框图是图形化的程序代码,首要完结两个使命:调用USB主机的API函数操控USB数据传输和操控代码文件格局转化。
凭借Silicon Laboratories公司为USB驱动程序开发供给的USBXpress,能够简洁的完结在PC机上经过GUI软件与作为USB器材的C8051F340单片机的USB通讯。USBXpress供给了10个USB主机API函数,经过LabVIEW中的CLF(调用库函数节点)调用USBXpress供给的USB主机API函数,便可拜访USB底层硬件。图4为本规划LabVIEW上位机程序调用API的框图。图中VI效果别离是获取USB器材编号、获取USB器材序列码、设置USB读写延时、翻开USB器材、向USB器材写数据块、封闭USB器材。
在成功调用SI_Open()函数翻开USB器材,并经过“file path control.vi”控件获取待转化文件的详细途径后,GUI软件对定位的代码文件开端进行转化。如图5框图程序所示:首要经过“Exec.vi”(“履行体系指令”VI)调用CCS软件环境供给的DOS批处理文件Hex500.exe软件(与自举文件坐落同一个目录)将.out文件转化为.hex文件。Hex500.exe在DOS环境下运转需求输入很多转化装备文件,因而GUI需一起调用用来会集描绘文件转化所需参数信息的.cmd文件。.cmd文件内容及注释如下:
bootloader.out //待转化的程序文件
-o bootloader.hex //输出文件名
-map bootloader.map //生成存储器映像文件
-boot //生成加载表
-I //输出文件为Intel Hex文件格局
-e _c_int00 //程序进口地址
-memwidth 16 //标体系的存储器为16位
-romwidth 16 //存储器芯片的位宽为16位
-bootorg SERIAL //行装载
之后经过“Exec.vi”函数调用hex-to-dat.exe软件将.hex格局转化为.dat格局。终究在文件格局转化结束之后提取代码并转化为数组,在循环中调用SI_Open()函数以每次512字节的速度将数据写入USB器材,直到一切文件传输结束,封闭USB。
3.2 C8051F340程序规划
C8051F340经过USB从GUI软件接纳DSP程序代码并存储到片内FLASH中,之后经过规范串行接口将代码传送给DSP进行自举。C8051F340程序首要包含初始化函数、自举函数、USB驱动函数、擦写FLASH函数几个部分。图6为C8051F340程序的流程图。
3.2.1 初始化程序
程序初始化部分首要包含USB设备初始化和C8051F340单片机初始化。USB初始化经过调用USBXpress供给的10个USB器材API函数完结,包含调用USB_Clock_Start()函数初始化USB总线时钟、调用USB_Init()函数使能USB总线、调用USB_Init_Enable()函数使能API中止;C8051F340单片机初始化中将单片机时钟设为48MHZ以满意USB全速作业方法的需求、装备单片机输出端口为推挽输出、敞开外部中止0并经过装备寄存器“IT01CF=0x07”将P0.7装备为INT0的中止触发端口引脚,监督DSP所给自举信号。
DSP发动速度比C8051F340快,因而自举之前需先复位DSP并初始化SPI接口,等候DSP的XF引脚触发INT0中止后发动自举操作。本程序运用16位规范串行方法对DSP自举。通讯时序如图7所示,BFSR0脉冲之后可传输一个16位的数据,传输的每个16位数据之间需至少确保40个DSP时钟周期的延时时刻。且单片机时钟频率(BCLKR0)不行超越DSP时钟频率的1/2。规范串行自举代码如下所示,程序中将BFSR0拉高后,传输一个字节的数据,并经过调用延时函数Delaynum(20)延时20微秒来满意传输两数据间最小CPU时钟距离的要求,程序中w为当时传输的由四个ASCⅡ字符转化而来的16位无符号整形变量。
BCLKR0=1;
Delaynum(20);
BCLKR0=0;
BFSR0=1;
Delaynum(20);
BCLKR0=1;
Delaynum(20);
BCLKR0=0;
Delaynum(20);
for(i=0;i<16;i++)
{
BDR0= (w & (0x8000 >> i)) > 0;
BCLKR0=1;
BFSR0=0;
Delaynum(20);
BCLKR0=0;
Delaynum(20);
}
3.2.3 USB驱动函数、FLASH读写函数
USB中止函数经过调用Block_Read()函数接纳来自GUI软件的代码数据,并存入TempStorage[]数组。ReadStageLength为每次所读取的文件巨细,最大为64字节(一个数据块巨细)。因GUI软件每次发送512字节,FLASH中每512字节为一页,故下位机中每读取512字节后写入FLASH。如下代码所示BytesRead为已读取数据的巨细,当C8051F340经过USB接纳了一页FLASH可包容最大数据512字节(Block_PR_Page为每页FLASH可包容最多数据块= 512/64)或许GUI软件发送的最终一组数据,写入FLASH。PageIndices[0]为下位机自举的基指针,指向FLASH中0x2000开端的地址,其间0x2000~0x2200用来寄存接纳数据信息(巨细、所含数据块量);PageIndex为当时操作的Flash相对于基页0x2000的偏移量,PageIndices[0]+PageIndex*0x200指向Flash当时操作地址,自举程序代码从0x2200地址处开端。
BytesRead+= Block_Read((BYTE*)(&TempStorage[BlockIndex]),
ReadStageLength);
BlockIndex++;
if((BlockIndex==(Block_PR_Page))||(BytesRead==BytesToRead))
{
Page_Erase((BYTE*)(PageIndices[0]+PageIndex*0x200));
Page_Write((BYTE*)(PageIndices[0]+PageIndex*0x200));
PageIndex++;
}
4 试验验证
为测验该模块的可行性,以TMS320VC54x方针板为根底,规划了如下试验进行验证。
试验第一步首要需求验证GUI软件操控代码格局转化,和移植的可行性。运用DSP开发软件CCS编写一段LCD显现程序并编译生成.out文件。经过JTAG仿真后,LCD上显现“DSP自举模块液晶显现自举测验”等信息。之后去除JTAG进行自举试验。经过USB将PC机与C8051F340相连。待GUI软件成功获取USB器材编号并翻开USB器材后,设置自举文件途径,点击 “下载更新DSP自举代码”按键开端更新代码。图8、图9为试验成果。
图8为GUI前面板的试验数据。图中两个USB检测灯在USB衔接成功并被功翻开时被点亮标明。情况显现区中的“文件转化履行信息”由GUI调用Hex500.exe软件之后发生、“DSP自举代码文件途径”为所转化生成的.dat文件途径,经过途径转化为字符串发生、“DSP自举代码文件内容”,由“读取文本文件VI”读取生成的.dat文件发生。试验数据与想象的共同,标明该模块已成功完结了程序代码的格局转化。最下方的灯被点亮并显现“DSP自举代码下载更新完结”标明GUI软件成功的经过USB将代码数据更新给C8051F340,DSP自举代码更新完结。
图9为GUI软件操控DSP代码文件格局转化部分的框图在高亮运转形式下截取的数据。探针[1]为转化完结后所取得.dat文件的途径,探针[2]为所得到.dat文件的巨细。标明上位机已成功完结代码文件格局的转化得到.dat格局文件
第二步需验证C8051F340运用FLASH存储DSP代码并经过规范串行自举操控DSP自举的可行性。试验第一步成功之后,将C8051F340与DSP经过规范串行总线,C8051F340自动操控DSP开端自举。图10为C8051F340在获取GUI软件传送的更新代码并成功经过规范串行自举操控完结DSP自举的什物相片。LCD显现数据与经过JTAG仿真情况下彻底共同,证明了该DSP自举模块的有用性,且该自举模块可完结一键更新DSP代码文件,便利快速。
5 结语
本文提出了一种可在线更新程序的自举模块。该模块在GUI软件中将DSP程序代码进行格局转化并经过运用USB将代码数据导入C8051F340单片机的片内FLASH中存储。C8051F340经过规范串行总线操控DSP进行自举。运用该模块,用户更新DSP程序代码可彻底在核算机上操作,无需了解自举的详细细节,完结一键更新代码;一起该自举模块可在短短数秒内完结代码更新,然后大大减轻了开发难度和缩短开发周期。别的,因为单片机FLASH存储量为64kb,除掉单片机的程序占用空间,从0x2200地址开端,共可存储55.5kb左右的DSP程序代码,满意大多数中小DSP运用程序的自举需求,因而该体系可广泛用于程序代码不超越55.5k字节的DSP体系中。