之后通過“Exec.vi”函數(shù)調(diào)用hex-to-dat.exe軟件將.hex格式轉(zhuǎn)換為.dat格式。最終在文件格式轉(zhuǎn)換完畢之后提取代碼并轉(zhuǎn)換為數(shù)組,在循環(huán)中調(diào)用SI_Open()函數(shù)以每次512字節(jié)的速度將數(shù)據(jù)寫入U(xiǎn)SB器件,直到所有文件傳輸完畢,關(guān)閉USB。
縮短周期且可在線更新程序的DSP自舉模塊設(shè)計(jì)
發(fā)布時(shí)間:2015-02-17 來源:西安工程大學(xué) 責(zé)任編輯:sherryyu
【導(dǎo)讀】本文提出了一種可在線更新程序的自舉模塊。用該模塊,用戶更新DSP程序代碼可完全在計(jì)算機(jī)上操作,無需了解自舉的具體細(xì)節(jié),實(shí)現(xiàn)一鍵更新代碼;同時(shí)該自舉模塊可在短短數(shù)秒內(nèi)完成代碼更新,從而大大減輕了開發(fā)難度和縮短開發(fā)周期。
針對(duì)現(xiàn)有DSP自舉模塊普遍存在程序代碼更新不便的缺陷,提出了一種可便捷高效地在線更新用戶應(yīng)用程序代碼的DSP自舉模塊。該模塊由基于LabVIEW的圖形用戶界面(GUI)軟件與C8051F340單片機(jī)構(gòu)成。GUI軟件完成DSP應(yīng)用程序代碼的格式轉(zhuǎn)換,并通過驅(qū)動(dòng)USB將轉(zhuǎn)換完成的程序代碼傳送給C8051F340。C8051F340通過其片上USB外設(shè)接收DSP程序代碼并存儲(chǔ)于片上FLASH中,同時(shí)借助標(biāo)準(zhǔn)串行總線控制DSP完成應(yīng)用程序代碼的自舉操作。該模塊采用在線方式,可一鍵實(shí)現(xiàn)DSP應(yīng)用程序代碼的更新升級(jí)與自舉操作。
TMS320VC54x系列DSP作為一種低功耗高速處理器在消費(fèi)電子、通信等領(lǐng)域應(yīng)用廣泛[1-2]。通常為實(shí)現(xiàn)DSP程序代碼的高速運(yùn)行,一般需要將DSP的應(yīng)用程序代碼存儲(chǔ)于DSP片內(nèi)RAM中運(yùn)行,但TMS320VC54x處理器是RAM型器件,掉電后DSP不能保存任何用戶應(yīng)用程序代碼。因此,基于該型DSP的電子系統(tǒng)通常需要設(shè)計(jì)自舉模塊。所謂“自舉”是指:DSP芯片內(nèi)的程序引導(dǎo)裝載器(Bootloader)自動(dòng)地將DSP應(yīng)用程序代碼從DSP外部非掉電易失存儲(chǔ)器加載到片內(nèi)RAM中,脫離仿真器模式獨(dú)立運(yùn)行的過程。
TMS320VC54x系列DSP有兩類自舉方式:基于靜態(tài)存儲(chǔ)器(如:EEPROM、FLASH)的自舉方式和基于處理器的自舉方式?;陟o態(tài)存儲(chǔ)器的DSP自舉方式[3-4]使用外擴(kuò)的靜態(tài)存儲(chǔ)器存儲(chǔ)DSP程序代碼,由于該方式無需外加控制器干預(yù),因此具有電路簡單等優(yōu)點(diǎn)?;谔幚砥鞯腄SP自舉方式[5-6],利用單片機(jī)存儲(chǔ)DSP程序代碼并控制DSP完成自舉,具有可有效控制DSP自舉時(shí)機(jī),可靈活選擇自舉通信接口等優(yōu)勢。然而,無論哪類自舉方式,要更新DSP應(yīng)用程序代碼都需要先將DSP開發(fā)軟件CCS編譯產(chǎn)生的.out程序代碼文件通過一系列的格式轉(zhuǎn)換,生成DSP自舉所需的程序代碼格式,并將得到的代碼移植到DSP應(yīng)用系統(tǒng)片外擴(kuò)展的靜態(tài)存儲(chǔ)器或單片機(jī)中存儲(chǔ)。顯然,傳統(tǒng)DSP自舉模塊的上述程序代碼更新操作非常麻煩。為此本文提出一種便捷高效的DSP自舉模塊。借助該模塊,用戶無需熟悉DSP自舉設(shè)計(jì)過程,便可一鍵實(shí)現(xiàn)DSP程序代碼的更新升級(jí)與自舉操作。
1 方案設(shè)計(jì)
DSP開發(fā)軟件CCS編譯生成的.out文件不能直接用來自舉,需要將其進(jìn)行一系列繁瑣的格式轉(zhuǎn)換得到合適的格式并移植到DSP的外部存儲(chǔ)器進(jìn)行自舉[7]。為解決該問題,本模塊通過基于LabVIEW的GUI軟件完成上述轉(zhuǎn)換并控制代碼移植到外部存儲(chǔ)器。如圖1所示。GUI軟件首先將.out文件轉(zhuǎn)換為.hex格式,并將得到的.hex文件轉(zhuǎn)換為方便DSP自舉的.dat格式。之后GUI通過USB將數(shù)據(jù)傳送給C8051F340單片機(jī)完成DSP程序更新。C8051F340是一款可提供USB功能并具有較大FLASH存儲(chǔ)空間的混合信號(hào)微控制器。本模塊使用其片上FLASH作為DSP的外部存儲(chǔ)器,可省去外擴(kuò)存儲(chǔ)設(shè)備,節(jié)約成本,簡化電路。自舉開始時(shí),單片機(jī)將FLASH中的代碼數(shù)據(jù)通過標(biāo)準(zhǔn)串行自舉方式傳送給DSP,控制DSP的自舉。標(biāo)準(zhǔn)串行自舉與其他自舉模式相比,占用DSP硬件資源少、電路簡單。通過本模塊,開發(fā)者可在PC機(jī)上實(shí)現(xiàn)一鍵完成DSP代碼更新。
圖1 DSP自舉模塊系統(tǒng)框圖
2 硬件設(shè)計(jì)
本模塊使用C8051F340的片上FLASH作為DSP的外部存儲(chǔ)器。C8051F340通過標(biāo)準(zhǔn)串行接口與DSP通信,通過USB與處理代碼格式轉(zhuǎn)換的GUI軟件通信。如圖2所示,虛線框1為3線制的標(biāo)準(zhǔn)串行總線,負(fù)責(zé)數(shù)據(jù)的傳輸。虛線框2為復(fù)位與握手信號(hào)。DSP的bootloader通過拉低XF引腳通知單片機(jī)DSP已準(zhǔn)備好接收數(shù)據(jù);而單片機(jī)通過P1.3引腳拉低ˉRS來復(fù)位DSP。C8051F340與PC機(jī)通過USB連接。如圖2所示,VBUS為USB電纜VBUS引線的感應(yīng)輸入端,當(dāng)該引腳出現(xiàn)5V高電平信號(hào)時(shí),表示該設(shè)備已經(jīng)和主機(jī)連接好。D+、D-為USB的差分信號(hào)線,D+信號(hào)線接1.5k的上拉電阻R1使USB設(shè)備工作于高速。電容C1、C3為15pF的濾波電容。為了消除差模干擾,兩信號(hào)線連接大小為33pF的電容C2。REGIN為C8051F340片內(nèi)電壓調(diào)節(jié)器的輸入端。VDD為C8051F340片內(nèi)電壓調(diào)節(jié)的3.3V輸出端。通過將REGIN和VDD短接,C8051F340被配置為USB固件自供電,片內(nèi)穩(wěn)壓器禁止的工作模式。另外,C8051F340電路模塊中,通過C2調(diào)試接口(包括C2CK時(shí)鐘信號(hào)和C2D雙向數(shù)據(jù)信號(hào))連接JTAG對(duì)單片機(jī)程序進(jìn)行燒寫和調(diào)試。
圖2 自舉模塊主要硬件連接關(guān)系圖
[page]
3 軟件設(shè)計(jì)
本系統(tǒng)主要通過GUI軟件完成DSP用戶應(yīng)用代碼的格式轉(zhuǎn)換和調(diào)用USB主機(jī)API控制USB傳輸數(shù)據(jù);通過C8051F340程序調(diào)用USB器件API接收數(shù)據(jù)存入片內(nèi)FLASH中并通過標(biāo)準(zhǔn)串行通信控制DSP的自舉。下面分別介紹各軟件設(shè)計(jì)的功能和具體流程。
3.1 基于LabVIEW的GUI程序設(shè)計(jì)
LabVIEW開發(fā)的程序一般由一個(gè)或多個(gè)VI組成,所有VI都可分為前面板和框圖兩部分。前面板是VI的交互界面,用戶輸入數(shù)據(jù)通過前面板傳遞給框圖,計(jì)算和分析結(jié)果在前面板上以不同方式顯示出來。圖3為本模塊的GUI前面板。如圖所示前面板分為“輸入配置區(qū)”和“狀態(tài)顯示區(qū)”。通過在前面板的“輸入配置區(qū)”設(shè)置文件路徑進(jìn)行DSP代碼文件的二次更新。“狀態(tài)顯示區(qū)”可實(shí)時(shí)顯示USB連接狀況、文件轉(zhuǎn)換信息、自舉代碼文件內(nèi)容等詳細(xì)信息。
圖3 基于LabVIEW的GUI前面板
框圖是圖形化的程序代碼,主要完成兩個(gè)任務(wù):調(diào)用USB主機(jī)的API函數(shù)控制USB數(shù)據(jù)傳輸和控制代碼文件格式轉(zhuǎn)換。
借助Silicon Laboratories公司為USB驅(qū)動(dòng)程序開發(fā)提供的USBXpress,可以簡便的實(shí)現(xiàn)在PC機(jī)上通過GUI軟件與作為USB器件的C8051F340單片機(jī)的USB通信。USBXpress提供了10個(gè)USB主機(jī)API函數(shù),通過LabVIEW中的CLF(調(diào)用庫函數(shù)節(jié)點(diǎn))調(diào)用USBXpress提供的USB主機(jī)API函數(shù),便可訪問USB底層硬件。圖4為本設(shè)計(jì)LabVIEW上位機(jī)程序調(diào)用API的框圖。圖中VI作用分別是獲取USB器件編號(hào)、獲取USB器件序列碼、設(shè)置USB讀寫延時(shí)、打開USB器件、向USB器件寫數(shù)據(jù)塊、關(guān)閉USB器件。
在成功調(diào)用SI_Open()函數(shù)打開USB器件,并通過“file path control.vi”控件獲取待轉(zhuǎn)換文件的具體路徑后,GUI軟件對(duì)定位的代碼文件開始進(jìn)行轉(zhuǎn)換。如圖5框圖程序所示:首先通過“Exec.vi”(“執(zhí)行系統(tǒng)命令”VI)調(diào)用CCS軟件環(huán)境提供的DOS批處理文件Hex500.exe軟件(與自舉文件位于同一個(gè)目錄)將.out文件轉(zhuǎn)換為.hex文件。Hex500.exe在DOS環(huán)境下運(yùn)行需要輸入大量轉(zhuǎn)換配置文件,因此GUI需同時(shí)調(diào)用用來集中描述文件轉(zhuǎn)換所需參數(shù)信息的.cmd文件。.cmd文件內(nèi)容及注釋如下:
bootloader.out //待轉(zhuǎn)化的程序文件
-o bootloader.hex //輸出文件名
-map bootloader.map //生成存儲(chǔ)器映像文件
-boot //生成加載表
-I //輸出文件為Intel Hex文件格式
-e _c_int00 //程序入口地址
-memwidth 16 //標(biāo)系統(tǒng)的存儲(chǔ)器為16位
-romwidth 16 //存儲(chǔ)器芯片的位寬為16位
-bootorg SERIAL //行裝載
圖4 LabVIEW調(diào)用USB主機(jī)API框圖
之后通過“Exec.vi”函數(shù)調(diào)用hex-to-dat.exe軟件將.hex格式轉(zhuǎn)換為.dat格式。最終在文件格式轉(zhuǎn)換完畢之后提取代碼并轉(zhuǎn)換為數(shù)組,在循環(huán)中調(diào)用SI_Open()函數(shù)以每次512字節(jié)的速度將數(shù)據(jù)寫入U(xiǎn)SB器件,直到所有文件傳輸完畢,關(guān)閉USB。
圖5 LabVIEW轉(zhuǎn)換DSP程序代碼格式的框圖
[page]
3.2 C8051F340程序設(shè)計(jì)
C8051F340通過USB從GUI軟件接收DSP程序代碼并存儲(chǔ)到片內(nèi)FLASH中,之后通過標(biāo)準(zhǔn)串行接口將代碼傳送給DSP進(jìn)行自舉。C8051F340程序主要包括初始化函數(shù)、自舉函數(shù)、USB驅(qū)動(dòng)函數(shù)、擦寫FLASH函數(shù)幾個(gè)部分。圖6為C8051F340程序的流程圖。
3.2.1 初始化程序
程序初始化部分主要包括USB設(shè)備初始化和C8051F340單片機(jī)初始化。USB初始化通過調(diào)用USBXpress提供的10個(gè)USB器件API函數(shù)實(shí)現(xiàn),包括調(diào)用USB_Clock_Start()函數(shù)初始化USB總線時(shí)鐘、調(diào)用USB_Init()函數(shù)使能USB總線、調(diào)用USB_Init_Enable()函數(shù)使能API中斷;C8051F340單片機(jī)初始化中將單片機(jī)時(shí)鐘設(shè)為48MHZ以滿足USB全速工作方式的需要、配置單片機(jī)輸出端口為推挽輸出、開啟外部中斷0并通過配置寄存器“IT01CF=0x07”將P0.7配置為INT0的中斷觸發(fā)端口引腳,監(jiān)視DSP所給自舉信號(hào)。
圖6 C8051F340程序流程圖
[page]
3.2.2 自舉函數(shù)
DSP啟動(dòng)速度比C8051F340快,因此自舉之前需先復(fù)位DSP并初始化SPI接口,等待DSP的XF引腳觸發(fā)INT0中斷后啟動(dòng)自舉操作。本程序使用16位標(biāo)準(zhǔn)串行方式對(duì)DSP自舉。通信時(shí)序如圖7所示,BFSR0脈沖之后可傳輸一個(gè)16位的數(shù)據(jù),傳輸?shù)拿總€(gè)16位數(shù)據(jù)之間需至少保證40個(gè)DSP時(shí)鐘周期的延時(shí)時(shí)間。且單片機(jī)時(shí)鐘頻率(BCLKR0)不可超過DSP時(shí)鐘頻率的1/2。標(biāo)準(zhǔn)串行自舉代碼如下所示,程序中將BFSR0拉高后,傳輸一個(gè)字節(jié)的數(shù)據(jù),并通過調(diào)用延時(shí)函數(shù)Delaynum(20)延時(shí)20微秒來滿足傳輸兩數(shù)據(jù)間最小CPU時(shí)鐘間隔的要求,程序中w為當(dāng)前傳輸?shù)挠伤膫€(gè)ASCⅡ字符轉(zhuǎn)換而來的16位無符號(hào)整形變量。
圖7 單片機(jī)標(biāo)準(zhǔn)串行自舉時(shí)序圖
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驅(qū)動(dòng)函數(shù)、FLASH讀寫函數(shù)
USB中斷函數(shù)通過調(diào)用Block_Read()函數(shù)接收來自GUI軟件的代碼數(shù)據(jù),并存入TempStorage[]數(shù)組。ReadStageLength為每次所讀取的文件大小,最大為64字節(jié)(一個(gè)數(shù)據(jù)塊大?。?。因GUI軟件每次發(fā)送512字節(jié),F(xiàn)LASH中每512字節(jié)為一頁,故下位機(jī)中每讀取512字節(jié)后寫入FLASH。如下代碼所示BytesRead為已讀取數(shù)據(jù)的大小,當(dāng)C8051F340通過USB接收了一頁FLASH可容納最大數(shù)據(jù)512字節(jié)(Block_PR_Page為每頁FLASH可容納最多數(shù)據(jù)塊= 512/64)或者GUI軟件發(fā)送的最后一組數(shù)據(jù),寫入FLASH。PageIndices[0]為下位機(jī)自舉的基指針,指向FLASH中0x2000開始的地址,其中0x2000~0x2200用來存放接收數(shù)據(jù)信息(大小、所含數(shù)據(jù)塊量);PageIndex為當(dāng)前操作的Flash相對(duì)于基頁0x2000的偏移量,PageIndices[0]+PageIndex*0x200指向Flash當(dāng)前操作地址,自舉程序代碼從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++;
}
[page]
4 實(shí)驗(yàn)驗(yàn)證
為測試該模塊的可行性,以TMS320VC54x目標(biāo)板為基礎(chǔ),設(shè)計(jì)了如下實(shí)驗(yàn)進(jìn)行驗(yàn)證。
實(shí)驗(yàn)第一步首先需要驗(yàn)證GUI軟件控制代碼格式轉(zhuǎn)換,和移植的可行性。利用DSP開發(fā)軟件CCS編寫一段LCD顯示程序并編譯生成.out文件。通過JTAG仿真后,LCD上顯示“DSP自舉模塊液晶顯示自舉測試”等信息。之后去除JTAG進(jìn)行自舉試驗(yàn)。通過USB將PC機(jī)與C8051F340相連。待GUI軟件成功獲取USB器件編號(hào)并打開USB器件后,設(shè)置自舉文件路徑,點(diǎn)擊 “下載更新DSP自舉代碼”按鍵開始更新代碼。圖8、圖9為試驗(yàn)結(jié)果。
圖8為GUI前面板的實(shí)驗(yàn)數(shù)據(jù)。圖中兩個(gè)USB檢測燈在USB連接成功并被功打開時(shí)被點(diǎn)亮表明。狀態(tài)顯示區(qū)中的“文件轉(zhuǎn)換執(zhí)行信息”由GUI調(diào)用Hex500.exe軟件之后產(chǎn)生、“DSP自舉代碼文件路徑”為所轉(zhuǎn)換生成的.dat文件路徑,通過路徑轉(zhuǎn)換為字符串產(chǎn)生、“DSP自舉代碼文件內(nèi)容”,由“讀取文本文件VI”讀取生成的.dat文件產(chǎn)生。實(shí)驗(yàn)數(shù)據(jù)與設(shè)想的一致,表明該模塊已成功完成了程序代碼的格式轉(zhuǎn)換。最下方的燈被點(diǎn)亮并顯示“DSP自舉代碼下載更新完成”表示GUI軟件成功的通過USB將代碼數(shù)據(jù)更新給C8051F340,DSP自舉代碼更新完成。
圖8 前面板詳細(xì)信息實(shí)驗(yàn)數(shù)據(jù)
圖9為GUI軟件控制DSP代碼文件格式轉(zhuǎn)換部分的框圖在高亮運(yùn)行模式下截取的數(shù)據(jù)。探針[1]為轉(zhuǎn)換完成后所獲得.dat文件的路徑,探針[2]為所得到.dat文件的大小。表明上位機(jī)已成功完成代碼文件格式的轉(zhuǎn)換得到.dat格式文件
圖9 代碼文件格式轉(zhuǎn)換實(shí)驗(yàn)結(jié)果
第二步需驗(yàn)證C8051F340利用FLASH存儲(chǔ)DSP代碼并通過標(biāo)準(zhǔn)串行自舉控制DSP自舉的可行性。實(shí)驗(yàn)第一步成功之后,將C8051F340與DSP通過標(biāo)準(zhǔn)串行總線,C8051F340自動(dòng)控制DSP開始自舉。圖10為C8051F340在獲取GUI軟件傳送的更新代碼并成功通過標(biāo)準(zhǔn)串行自舉控制完成DSP自舉的實(shí)物照片。LCD顯示數(shù)據(jù)與通過JTAG仿真情況下完全一致,證明了該DSP自舉模塊的有效性,且該自舉模塊可實(shí)現(xiàn)一鍵更新DSP代碼文件,方便快速。
圖10 自舉完成實(shí)驗(yàn)實(shí)物圖
5 結(jié)語
本文提出了一種可在線更新程序的自舉模塊。該模塊在GUI軟件中將DSP程序代碼進(jìn)行格式轉(zhuǎn)換并通過利用USB將代碼數(shù)據(jù)導(dǎo)入C8051F340單片機(jī)的片內(nèi)FLASH中存儲(chǔ)。C8051F340通過標(biāo)準(zhǔn)串行總線控制DSP進(jìn)行自舉。利用該模塊,用戶更新DSP程序代碼可完全在計(jì)算機(jī)上操作,無需了解自舉的具體細(xì)節(jié),實(shí)現(xiàn)一鍵更新代碼;同時(shí)該自舉模塊可在短短數(shù)秒內(nèi)完成代碼更新,從而大大減輕了開發(fā)難度和縮短開發(fā)周期。另外,由于單片機(jī)FLASH存儲(chǔ)量為64kb,除去單片機(jī)的程序占用空間,從0x2200地址開始,共可存儲(chǔ)55.5kb左右的DSP程序代碼,滿足大多數(shù)中小DSP應(yīng)用程序的自舉需求,因此該系統(tǒng)可廣泛用于程序代碼不超過55.5k字節(jié)的DSP系統(tǒng)中。
特別推薦
- 復(fù)雜的RF PCB焊接該如何確保恰到好處?
- 電源效率測試
- 科技的洪荒之力:可穿戴設(shè)備中的MEMS傳感器 助運(yùn)動(dòng)員爭金奪銀
- 輕松滿足檢測距離,勞易測新型電感式傳感器IS 200系列
- Aigtek推出ATA-400系列高壓功率放大器
- TDK推出使用壽命更長和熱點(diǎn)溫度更高的全新氮?dú)馓畛淙嘟涣鳛V波電容器
- 博瑞集信推出低噪聲、高增益平坦度、低功耗 | 低噪聲放大器系列
技術(shù)文章更多>>
- 如何選擇和應(yīng)用機(jī)電繼電器實(shí)現(xiàn)多功能且可靠的信號(hào)切換
- 基于APM32F411的移動(dòng)電源控制板應(yīng)用方案
- 數(shù)字儀表與模擬儀表:它們有何區(qū)別?
- 聚焦制造業(yè)企業(yè)貨量旺季“急難愁盼”,跨越速運(yùn)打出紓困“連招”
- 選擇LDO時(shí)的主要考慮因素和挑戰(zhàn)
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動(dòng)避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
光收發(fā)器
光通訊器件
光纖連接器
軌道交通
國防航空
過流保護(hù)器
過熱保護(hù)
過壓保護(hù)
焊接設(shè)備
焊錫焊膏
恒溫振蕩器
恒壓變壓器
恒壓穩(wěn)壓器
紅外收發(fā)器
紅外線加熱
厚膜電阻
互連技術(shù)
滑動(dòng)分壓器
滑動(dòng)開關(guān)
輝曄
混合保護(hù)器
混合動(dòng)力汽車
混頻器
霍爾傳感器
機(jī)電元件
基創(chuàng)卓越
激光二極管
激光器
計(jì)步器
繼電器