劉 瑞
(中國電子科技集團(tuán)公司第五十四研究所,河北 石家莊050081)
?
DSP系統(tǒng)的CAN總線遠(yuǎn)程升級(jí)方法
劉瑞
(中國電子科技集團(tuán)公司第五十四研究所,河北 石家莊050081)
摘要:針對(duì)通過JTAG接口在外場(chǎng)升級(jí)DSP困難的問題,研究了一套基于CAN總線的遠(yuǎn)程升級(jí)方法。首先對(duì)DSP芯片TMS320F28335的硬件資源和啟動(dòng)過程進(jìn)行了簡(jiǎn)要介紹和分析,接著說明了該方法的基本原理并提出了具體實(shí)現(xiàn)過程,最后通過工程證明該方法簡(jiǎn)便可靠,并對(duì)前景進(jìn)行了展望。
關(guān)鍵詞:DSP;TMS320F28335;CAN總線;遠(yuǎn)程升級(jí)
引用格式:劉瑞. DSP系統(tǒng)的CAN總線遠(yuǎn)程升級(jí)方法[J].微型機(jī)與應(yīng)用,2016,35(13):71-72,75.
0引言
數(shù)字信號(hào)處理器(Digital Signal Processor,DSP)是一種在數(shù)字信號(hào)處理技術(shù)基礎(chǔ)上發(fā)展起來的微處理器,其主要應(yīng)用是實(shí)時(shí)快速地實(shí)現(xiàn)各種數(shù)字信號(hào)處理算法。美國德州儀器公司(Texas Instruments,TI)是目前世界上最大的DSP芯片供應(yīng)商,其產(chǎn)品被廣泛應(yīng)用于工業(yè)控制、移動(dòng)通信、軍事安全等領(lǐng)域。近年來隨著電子技術(shù)的發(fā)展和用戶需求的提升,對(duì)已投入使用的DSP設(shè)備的升級(jí)越來越頻繁,傳統(tǒng)的升級(jí)方法是取下設(shè)備通過JTAG仿真器來在線更新程序[1]。該方式簡(jiǎn)單方便,但當(dāng)DSP安裝于諸如密封、遠(yuǎn)程、高空等難以拆卸的設(shè)備中時(shí),就十分不便,因此開發(fā)高效便捷的遠(yuǎn)程升級(jí)技術(shù)迫在眉睫。鑒于伺服系統(tǒng)大多使用CAN總線通信,本文研發(fā)了一套基于CAN總線的遠(yuǎn)程升級(jí)系統(tǒng),并成功應(yīng)用于基于TMS320F28335的伺服控制系統(tǒng)中。
1TMS320F28335簡(jiǎn)介及其啟動(dòng)過程
TMS320F28335是TI公司推出的一款具有強(qiáng)大的控制和信號(hào)處理能力的32位浮點(diǎn)型信號(hào)處理器,其主頻高達(dá)150 MHz,片上集成了256 KB的Flash存儲(chǔ)器,34 KB的SARAM,8 KB的Boot ROM,1 KB的OTP ROM以及CAN接口、串口、并口等多種先進(jìn)的外設(shè)接口[2]。
在進(jìn)行系統(tǒng)設(shè)計(jì)之前,首先要了解TMS320F28335上電復(fù)位后的運(yùn)行過程。該款DSP在出廠前就由廠家固化了一段程序,當(dāng)系統(tǒng)上電復(fù)位后,固化程序會(huì)從中斷向量表中讀取復(fù)位中斷的中斷向量0x3FFFC0,并跳轉(zhuǎn)到該地址處開始執(zhí)行。此處為廠家在Boot ROM中的固化程序,其作用主要是完成對(duì)芯片的初始化,并調(diào)用模式選擇函數(shù)SelectBootMode,該函數(shù)通過讀取固定GPIO管腳的邏輯電平來確定引導(dǎo)類型,默認(rèn)選擇類型為Jump to Flash,即片上Flash引導(dǎo)模式。程序隨后轉(zhuǎn)向片上Flash中的0x33FFF6處開始執(zhí)行,用戶需要將編寫好的程序燒寫在0x33FFF6起始地址處,如圖1所示[3]。
圖1FLASH啟動(dòng)的系統(tǒng)工作流程
2遠(yuǎn)程升級(jí)基本原理
基于CAN總線的遠(yuǎn)程升級(jí)方法主要涉及三個(gè)程序,分別是底層程序、上位機(jī)程序和應(yīng)用程序。底層程序和上位機(jī)程序是固定不變的,是遠(yuǎn)程升級(jí)系統(tǒng)的組成部分,應(yīng)用程序是DSP使用者編寫的用以完成特定功能的代碼。遠(yuǎn)程升級(jí)的實(shí)質(zhì)是通過“程序”來燒寫“程序”,即使用底層程序來燒寫應(yīng)用程序。相比其他諸多遠(yuǎn)程升級(jí)系統(tǒng),該方法的好處在于升級(jí)過程中不需要改變DSP的啟動(dòng)方式,直接采用默認(rèn)的片上Flash啟動(dòng)方式即可。
底層程序是指運(yùn)行于DSP指定空間、對(duì)編程用戶保護(hù)的、不允許被修改或擦除的一段代碼。其主要作用有以下三個(gè)方面:(1)對(duì)DSP的工作環(huán)境和CAN接口進(jìn)行基本的初始化;(2)與上位機(jī)通信,接收上位機(jī)發(fā)來的待升級(jí)應(yīng)用程序和程序存儲(chǔ)地址等信息,并將程序?qū)懭胫付▍^(qū)域;(3)升級(jí)完成后,從底層程序跳轉(zhuǎn)到用戶程序。
上位機(jī)程序的主要作用是對(duì)編譯完成的.out文件進(jìn)行格式轉(zhuǎn)換、信息提取和打包發(fā)送。由TI自帶的開發(fā)工具CCS編譯完成的目標(biāo)代碼在DSP中并不是從起始地址開始連續(xù)分布的,而是分成若干個(gè)大小不同的代碼塊交叉分布于程序和數(shù)據(jù)空間,且CCS產(chǎn)生的.out文件的組織形式是一種對(duì)象文件格式,不能直接用于Flash燒寫,因此上位機(jī)程序首先需要對(duì)編譯完成的.out文件進(jìn)行格式轉(zhuǎn)換和信息提取。這就需要將其轉(zhuǎn)換成含有塊地址、塊容量和塊內(nèi)容等信息的.hex文件,并對(duì)每一塊的信息進(jìn)行提取,按照協(xié)議打包組幀最后通過CAN總線傳輸。
3具體實(shí)現(xiàn)方法
3.1上位機(jī)程序
為了獲得代碼在Flash中的存儲(chǔ)結(jié)構(gòu)等信息,上位機(jī)程序首先對(duì)編譯完成的.out文件進(jìn)行格式轉(zhuǎn)換和信息提取,對(duì)于C2000系列DSP,TI公司提供了文件格式轉(zhuǎn)換工具h(yuǎn)ex2000.exe可將.out文件轉(zhuǎn)換為.hex文件,具體方法為:創(chuàng)建MS-DOS型批處理文件transhex.cmd,內(nèi)容為:
appication.out// appication.out為編譯完成的.out文件
-memwidth16//16位寬存儲(chǔ)器
-datawidth32//DSP字長(zhǎng)32位
-boot
-sci8
-o appication.hex//生成名為appication的.hex文件
表1 數(shù)據(jù)流結(jié)構(gòu)
將批處理文件transhex.cmd和轉(zhuǎn)換工具h(yuǎn)ex2000.exe以及appication.out拷貝到同一目錄下,在MS-DOS命令行中將路徑指定到該目錄,輸入hex2000.exe transhex.cmd即可自動(dòng)生成相應(yīng)的appication.hex文件,該文件符合bootloader數(shù)據(jù)流格式。其中第1、2個(gè)字節(jié)為關(guān)鍵字,表示該數(shù)據(jù)流為8 bit或16 bit寬,接著的16個(gè)字節(jié)為保留位,然后接著的4個(gè)字節(jié)包含22 bit的程序入口地址,然后為每塊程序的尺寸,在Flash中存儲(chǔ)的起始地址以及相應(yīng)的數(shù)據(jù),具體結(jié)構(gòu)如表1所示[4]。按照上述固定格式,通過對(duì)表內(nèi)容的解析就可以獲得應(yīng)用程序在Flash中的存儲(chǔ)結(jié)構(gòu)。
在上位機(jī)程序中點(diǎn)擊“選擇文件”來讀入該文件,程序會(huì)自動(dòng)根據(jù)表1的格式對(duì)其內(nèi)容進(jìn)行分析并完成信息提取,做好向下位機(jī)傳輸?shù)臏?zhǔn)備,并將提取結(jié)果顯示在右側(cè)信息欄中,如圖2所示。該示例應(yīng)用程序由6塊組成,列出了每塊的起始地址和容量大小等信息,最后第7塊的全零信息僅表示結(jié)尾,沒有實(shí)際內(nèi)容。
圖2 hex文件信息提取結(jié)果
3.2底層程序
底層程序的作用是將上位機(jī)發(fā)送的應(yīng)用程序數(shù)據(jù)燒寫至Flash的指定區(qū)域,涉及到應(yīng)用程序的定位以及跳轉(zhuǎn)等諸多問題,是整個(gè)系統(tǒng)的重點(diǎn)。由于系統(tǒng)是Flash啟動(dòng),DSP復(fù)位后固定跳轉(zhuǎn)到0x33FFF6處開始執(zhí)行,故底層程序必須預(yù)先燒寫到此處。底層程序在系統(tǒng)上電復(fù)位后首先運(yùn)行,并在規(guī)定時(shí)間內(nèi)通過接收上位機(jī)發(fā)來的固定幀判斷上位機(jī)程序是否啟動(dòng),如果是則等待上位機(jī)發(fā)送的待升級(jí)應(yīng)用程序代碼,否則跳轉(zhuǎn)到已有應(yīng)用程序處執(zhí)行。該過程采用絕對(duì)地址跳轉(zhuǎn),主要代碼如下:
#define Jumpgxcx(void(*)(void))0x337FF6//定義應(yīng)用程序的起始地址
If(guc_updata ==’1’)
{main();}//如果收到升級(jí)指令則跳轉(zhuǎn)到底層程序主函數(shù)
Else {(*Jumpgxcx)();}//否則跳轉(zhuǎn)到現(xiàn)有應(yīng)用程序處執(zhí)行
底層程序收到升級(jí)指令后首先將Flash存儲(chǔ)器上的舊應(yīng)用程序刪除,并將收到的代碼緩存到片上RAM中,由于片上RAM容量有限,一次緩存的容量設(shè)定為2 048 B,因此上位機(jī)會(huì)將代碼按照2 048 B打包,每發(fā)送2 048 B的應(yīng)用程序代碼后就發(fā)送一幀燒寫指令,DSP調(diào)用Flash_API函數(shù)緩存代碼寫入指定Flash區(qū)域,完成一次燒寫后,底層程序會(huì)向上位機(jī)程序發(fā)送燒寫完成信息,隨后上位機(jī)開始發(fā)送下一包數(shù)據(jù),循環(huán)此過程直至全部發(fā)送燒寫完畢,然后跳轉(zhuǎn)到新程序入口處開始執(zhí)行。流程圖如圖3所示。
4結(jié)束語
經(jīng)過實(shí)測(cè),升級(jí)約40 KB的應(yīng)用程序用時(shí)約3 min。速度雖然較JTAG接口慢一些,但是免去了拆除設(shè)備的麻煩,大大縮短了總體工作時(shí)間,提高了工作效率。目前基于CAN總線的遠(yuǎn)程升級(jí)系統(tǒng)已在工程中成功應(yīng)用,給工
圖3 底層程序流程圖
程安裝調(diào)試人員的現(xiàn)場(chǎng)升級(jí)工作帶來了極大的方便。隨著需求的增多,可以擴(kuò)展出串口、網(wǎng)口等多種外圍接口的升級(jí)方式,也可以將待升級(jí)硬件由DSP系統(tǒng)擴(kuò)展為單片機(jī)或ARM等多種可編程器件。
參考文獻(xiàn)
[1] 李聲飛,代華山.基于串口通信的DSP程序動(dòng)態(tài)加載技術(shù)[J]. 電訊技術(shù),2011,51(6):121-124.
[2] Texas Instruments.TMS320F28335 digital signal controllers data manual[S].2007.
[3] 楊宣兵,陳明,彭義.基于TMS320F28335的程序從FLASH到RAM的移植與運(yùn)行[J].湖南理工學(xué)院學(xué)報(bào)(自然科學(xué)版),2011,24(4):33-35.
[4] 汪晶晶,蘇建徽,孫佩石.基于串口通信的DSP應(yīng)用程序在線升級(jí)方法[J].微型機(jī)與應(yīng)用,2013,32(14):15-17.
中圖分類號(hào):TP368.1
文獻(xiàn)標(biāo)識(shí)碼:A
DOI:10.19358/j.issn.1674- 7720.2016.13.023
(收稿日期:2016-03-07)
作者簡(jiǎn)介:
劉瑞(1982-),通信作者,男,碩士,工程師,主要研究方向:數(shù)字電路與系統(tǒng)、數(shù)字信號(hào)處理、自動(dòng)控制工程。E-mail:liurui110@163.com。
A method of remote update for DSP system based on CAN bus
Liu Rui
(The 54th Research Institute of China Electronics Technology Group Corpopation, Shijiazhuang 050081, China )
Abstract:Aiming at the problem of updating program of DSP in outfield through JTAG interface, a method of remote update based on CAN bus is developed. Firstly, the hardware resource and bootloader of the TMS320F28335 which is DSP chip is introduced and analyzed. Secondly, the basal theory and detailed process of realization are explained. Finally, the method is proved to be brief and dependable by actual project, and the development of this method is prospected.
Key words:DSP;TMS320F28335;CAN bus;remote update