縮短周期且可在線更新程序的DSP自舉模塊設計
發布時間:2015-02-17 來源:西安工程大學 責任編輯:sherryyu
【導讀】本文提出了一種可在線更新程序的自舉模塊。用該模塊,用戶更新DSP程序代碼可完全在計算機上操作,無需了解自舉的具體細節,實現一鍵更新代碼;同時該自舉模塊可在短短數秒內完成代碼更新,從而大大減輕了開發難度和縮短開發周期。
針對現有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代碼更新。

圖1 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對單片機程序進行燒寫和調試。

圖2 自舉模塊主要硬件連接關係圖
[page]
3 軟件設計
本係統主要通過GUI軟件完成DSP用戶應用代碼的格式轉換和調用USB主機API控製USB傳輸數據;通過C8051F340程序調用USB器件API接收數據存入片內FLASH中並通過標準串行通信控製DSP的自舉。下麵分別介紹各軟件設計的功能和具體流程。
3.1 基於LabVIEW的GUI程序設計
LabVIEW開發的程序一般由一個或多個VI組成,所有VI都可分為前麵板和框圖兩部分。前麵板是VI的交互界麵,用戶輸入數據通過前麵板傳遞給框圖,計算和分析結果在前麵板上以不同方式顯示出來。圖3為本模塊的GUI前麵板。如圖所示前麵板分為“輸入配置區”和“狀態顯示區”。通過在前麵板的“輸入配置區”設置文件路徑進行DSP代碼文件的二次更新。“狀態顯示區”可實時顯示USB連接狀況、文件轉換信息、自舉代碼文件內容等詳細信息。

圖3 基於LabVIEW的GUI前麵板
框圖是圖形化的程序代碼,主要完成兩個任務:調用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 //行裝載

圖4 LabVIEW調用USB主機API框圖
之後通過“Exec.vi”函數調用hex-to-dat.exe軟件將.hex格式轉換為.dat格式。最終在文件格式轉換完畢之後提取代碼並轉換為數組,在循環中調用SI_Open()函數以每次512字節的速度將數據寫入USB器件,直到所有文件傳輸完畢,關閉USB。

圖5 LabVIEW轉換DSP程序代碼格式的框圖
[page]
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所給自舉信號。

圖6 C8051F340程序流程圖
[page]
3.2.2 自舉函數
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位無符號整形變量。

圖7 單片機標準串行自舉時序圖
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++;
}
[page]
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自舉代碼更新完成。

圖8 前麵板詳細信息實驗數據
圖9為GUI軟件控製DSP代碼文件格式轉換部分的框圖在高亮運行模式下截取的數據。探針[1]為轉換完成後所獲得.dat文件的路徑,探針[2]為所得到.dat文件的大小。表明上位機已成功完成代碼文件格式的轉換得到.dat格式文件

圖9 代碼文件格式轉換實驗結果
第二步需驗證C8051F340利用FLASH存儲DSP代碼並通過標準串行自舉控製DSP自舉的可行性。實驗第一步成功之後,將C8051F340與DSP通過標準串行總線,C8051F340自動控製DSP開始自舉。圖10為C8051F340在獲取GUI軟件傳送的更新代碼並成功通過標準串行自舉控製完成DSP自舉的實物照片。LCD顯示數據與通過JTAG仿真情況下完全一致,證明了該DSP自舉模塊的有效性,且該自舉模塊可實現一鍵更新DSP代碼文件,方便快速。

圖10 自舉完成實驗實物圖
5 結語
本文提出了一種可在線更新程序的自舉模塊。該模塊在GUI軟件中將DSP程序代碼進行格式轉換並通過利用USB將代碼數據導入C8051F340單片機的片內FLASH中存儲。C8051F340通過標準串行總線控製DSP進行自舉。利用該模塊,用戶更新DSP程序代碼可完全在計算機上操作,無需了解自舉的具體細節,實現一鍵更新代碼;同時該自舉模塊可在短短數秒內完成代碼更新,從而大大減輕了開發難度和縮短開發周期。另外,由於單片機FLASH存儲量為64kb,除去單片機的程序占用空間,從0x2200地址開始,共可存儲55.5kb左右的DSP程序代碼,滿足大多數中小DSP應用程序的自舉需求,因此該係統可廣泛用於程序代碼不超過55.5k字節的DSP係統中。
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 算力爆發遇上電源革新,大聯大世平集團攜手晶豐明源線上研討會解鎖應用落地
- 築基AI4S:摩爾線程全功能GPU加速中國生命科學自主生態
- 一秒檢測,成本降至萬分之一,光引科技把幾十萬的台式光譜儀“搬”到了手腕上
- AI服務器電源機櫃Power Rack HVDC MW級測試方案
- 突破工藝邊界,奎芯科技LPDDR5X IP矽驗證通過,速率達9600Mbps
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
微波功率管
微波開關
微波連接器
微波器件
微波三極管
微波振蕩器
微電機
微調電容
微動開關
微蜂窩
位置傳感器
溫度保險絲
溫度傳感器
溫控開關
溫控可控矽
聞泰
穩壓電源
穩壓二極管
穩壓管
無焊端子
無線充電
無線監控
無源濾波器
五金工具
物聯網
顯示模塊
顯微鏡結構
線圈
線繞電位器
線繞電阻



