TMS320F28335平臺串口升級應(yīng)用程序的方案實(shí)現(xiàn)_第1頁
TMS320F28335平臺串口升級應(yīng)用程序的方案實(shí)現(xiàn)_第2頁
TMS320F28335平臺串口升級應(yīng)用程序的方案實(shí)現(xiàn)_第3頁
TMS320F28335平臺串口升級應(yīng)用程序的方案實(shí)現(xiàn)_第4頁
TMS320F28335平臺串口升級應(yīng)用程序的方案實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、    tms320f28335平臺串口升級應(yīng)用程序的方案實(shí)現(xiàn)    張劍平 黃榮 高偉松摘要    本文介紹在tms320f28335dsp處理器平臺下,通過串口實(shí)現(xiàn)在線升級應(yīng)用軟件的一種方法。串口通訊遵循ymodem通訊協(xié)議,借助微軟window操作系統(tǒng)自帶的超級終端,即可實(shí)現(xiàn)應(yīng)用升級。避開了tms320f28335自帶bootloader升級軟件需占用gpio口的弊端;本文論述的方法可避免編寫上位機(jī)軟件,是一種便宜的方法?!娟P(guān)鍵詞】tms320f28335 串口升級 串口 ymodem協(xié)議ti公司的tms320f283

2、35 dsp具有32位tms320c28xcpu和fpu處理器,片上flash、saram以及外設(shè)相比tms320f2812有了進(jìn)一步的擴(kuò)展和增強(qiáng),它是目前控制領(lǐng)域中的先進(jìn)處理器,在電機(jī)控制、變頻器、不間斷電源以及電力線通信等系統(tǒng)中應(yīng)用越來越廣泛。一般而言,dsp系統(tǒng)設(shè)計(jì)完成后,程序需要固化在片上flash。應(yīng)用升級固化可通過jtga接口、或利用其量產(chǎn)固化的內(nèi)置bootloader程序來實(shí)現(xiàn)。但這兩種方式都存在限制:利用前者需要打開產(chǎn)品,這對于產(chǎn)品的量產(chǎn)來說,無論從效率上還是產(chǎn)品的完整性上來說,都不是好的途徑;利用后者,需要配置額外的gpio口作為啟動選項(xiàng)。然而在系統(tǒng)設(shè)計(jì)過程中,這些特定的啟動

3、管腳往往有系統(tǒng)設(shè)計(jì)的需求,被占用后可能無法滿足系統(tǒng)的功能設(shè)計(jì)。針對上述的問題,本文提出了一種新的應(yīng)用升級方式:定制啟動程序(iap),iap在系統(tǒng)上電之后運(yùn)行,設(shè)置超時后跳轉(zhuǎn)到應(yīng)用程序,在超時時間范圍內(nèi)利用串口ymodem協(xié)議,實(shí)現(xiàn)應(yīng)用程序的升級。本文從系統(tǒng)運(yùn)行流程開始分析,論述整個原理和實(shí)現(xiàn)步驟。1 系統(tǒng)運(yùn)行流程分析1.1 flash引導(dǎo)過程分析在進(jìn)行iap設(shè)計(jì)之前,首先了解tms320f28335 dsp運(yùn)行過程。當(dāng)系統(tǒng)上電復(fù)位后,程序到復(fù)位向量0x3fffc0位置開始程序執(zhí)行,在復(fù)位向量處根據(jù)向量內(nèi)容跳轉(zhuǎn)到片上rom里面的bootrom位置執(zhí)行初始化引導(dǎo)函數(shù)initboot,initbo

4、ot完成對芯片的初始化,并調(diào)用模式選擇函數(shù)selectbootmode來確定引導(dǎo)模式,選擇jumptoflash模式,程序退出boot轉(zhuǎn)向flash中0x33fff6處執(zhí)行程序,用戶需要在0x33fff6開始程序的設(shè)計(jì),系統(tǒng)從復(fù)位開始到轉(zhuǎn)向flash過程如圖1所示。1.2 iap設(shè)計(jì)思路tms320f28335從flash引導(dǎo)后,直接跳轉(zhuǎn)到0x33fff6這個地址,執(zhí)行應(yīng)用程序。為了達(dá)到我們的設(shè)計(jì)目的,在0x33fff6這個地址插入一個iap程序。這個程序也是本文所論述的實(shí)現(xiàn)串口在線升級程序的產(chǎn)品端固件。插入這個固件之后,tms320f28335從flash引導(dǎo)后不會直接跳轉(zhuǎn)到應(yīng)用程序,而是先

5、引導(dǎo)到iap固件程序。這個固件固化在flash中,被執(zhí)行之后,等待用戶的確認(rèn)。設(shè)計(jì)一個3s的超時等待,如果用戶未確認(rèn),則超時后跳轉(zhuǎn)到應(yīng)用程序。否則執(zhí)行應(yīng)用軟件2 iap固件原理和實(shí)現(xiàn)2.1 運(yùn)行過程分析如圖3所示,iap固件固化在flash中,入口地址為0x33fff6。tms320f28335從flash引導(dǎo)后,跳轉(zhuǎn)到unsecuredflash中執(zhí)行iap程序。iap程序必須包含以下幾個功能:(1)串口通訊功能。接收用戶下發(fā)的應(yīng)用程序;下文論述實(shí)現(xiàn)符合ymodel協(xié)議的串口通訊功能。(2)flash讀寫功能;該功能用于將下載的應(yīng)用程序燒錄到flash中。但是tms320f28335不支持代

6、碼在flash中運(yùn)行的同時操作flash,因此需要將flash操作的代碼拷貝到ram中執(zhí)行。(3)自我復(fù)制功能;該功能即是(2)要求的功能。該功能通過copy_sections例程來實(shí)現(xiàn)。如圖2所示。(4)跳轉(zhuǎn)到應(yīng)用程序的功能。綜合上述,iap程序在flash中開始執(zhí)行,code_start,wd_disable,copy_sections例程。copy_sections例程之后,完成將本身拷貝到unsecuredram中執(zhí)行。然后跳轉(zhuǎn)到unsecured ram繼續(xù)執(zhí)行iap程序,完成上述(1)、(2)、(4)功能。因此,code_start,wd_disable,copy_sections

7、段例程是加載和運(yùn)行都在flash中的。而c_init00開始的流程,是加載在flash中,但是運(yùn)行在ram中的。這個功能的實(shí)現(xiàn)是通過iap程序生成時,cmd鏈接文件配置來實(shí)現(xiàn)的。下節(jié)將對此說明。2.2 加載和運(yùn)行配置iap程序固化在flasha扇區(qū)中,拷貝到ram中執(zhí)行。(1)更改dsp2833x_sysctrl.c文件。#pragmacode_section(initflash,"ramfuncs");語句。使initflash編譯到.text段。(2)更改dsp2833x_usdelay.asm文件。將函數(shù)dsp28x_usdelay的段描述符由.sect"r

8、amfuncs"更改為.text。0(3)更改dsp2833x_codestartbranch.asm文件。code_start函數(shù)中,跳轉(zhuǎn)到lb_c_int00;更改為lbcopy_sections;(4)更改dsp2833x_codestartbranch.asm文件。wd_disable函數(shù)中,跳轉(zhuǎn)到lb_c_int00;更改為lbcopy_sections;(5)flash28335_api_v210加入到工程;(6)將4532.dsp28xxx_sectioncopy_nonbios.asm加入到工程;(7)修改.cmd文件。sections中加入:wddisable:&g

9、t;flasha,page=0wddisable段原來描述在.text段中。因?yàn)?text段被拷貝到ram中執(zhí)行。而wddisable需要在flash中執(zhí)行。因此區(qū)別.text段單獨(dú)描述。(8)修改.cmd文件。sections中加入:copysections:>flasha,page=0(9)修改.cmd文件。sections中加入:flash28_api:-lflash28335_api_v210.lib(.econst)-lflash28335_api_v210.lib(.text)load=flashb,run=raml0,load_start(_flash28_api_load

10、start),load_end(_flash28_api_loadend),run_start(_flash28_api_runstart),page=0(10)8修改.cmd文件。.text段連接描述更改為:.text:load=flashb,run=raml0,page=0load_start(_text_loadstart),run_start(_text_runstart),size(_text_size)修改之后,4532.dsp28xxx_sectioncopy_nonbios.asm會將.text的段拷貝到_text_runstart初執(zhí)行。該部操作在lbcopy_section

11、s中完成。(11)在main函數(shù)中,完成flash28_api段的拷貝。_flash28_api_loadstart拷貝到_flash28_api_runstart。單獨(dú)拷貝flash28_api段,是因?yàn)閒lash28_api段沒有描述成.text段,因此不會在lbcopy_sections中完成拷貝。2.3 程序的燒錄和跳轉(zhuǎn)應(yīng)用程序固化在flashc扇區(qū)中。為了實(shí)現(xiàn)跳轉(zhuǎn)。我們需要將應(yīng)用程序的code_start代碼固化在flashc地址0x13e000處。因?yàn)樾枰膽?yīng)用程序的cmd文件。memory.cint00:origin=0x13e000,length=0x000050.secti

12、on.boot:>cint00page=0-lrts2800_fpu32lib(.text).跳轉(zhuǎn)程序的實(shí)現(xiàn):typedefvoid(*pfunction)(void);pfunctionjump_to_application=(pfunction)0x13e000;jump_to_application();3 升級操作通過jtag接口將iap程序固化到tms28335芯片中。打開超級終端,配置iap程序中對應(yīng)的串口波特率,這里為38400bps,無校驗(yàn)。系統(tǒng)上電,3s之內(nèi),輸入iap程序中約定的升級密碼,這里為(“stop”),選擇傳送,發(fā)送文件,將目標(biāo)代碼bin發(fā)送升級。如圖4所示。4 總結(jié)本文首先論述了tms320f28335通過串口在線加載程序必要性和優(yōu)越性。接著從tms320f28335啟動流程開始分析,討論了固件和應(yīng)用程序的連接位置。然后討論了固件的實(shí)現(xiàn)。通過本文的論述,實(shí)現(xiàn)了tms320f28335固件設(shè)計(jì)的一種新思路。參考文獻(xiàn)1ti. tms320x2833x, 2823x boot rom reference guide(literature number: spru963a), 2007-revised 2008.2ti. copying compiler sections from flash to ram on the tms3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論