999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于串口通信的DSP應用程序在線升級方法

2013-02-21 07:53:54汪晶晶蘇建徽孫佩石
關鍵詞:程序

汪晶晶,蘇建徽,孫佩石

(教育部光伏系統(tǒng)工程研究中心 合肥工業(yè)大學能源研究所,安徽 合肥230009)

TMS320C2000系列DSP是美國德州儀器公司 (簡稱TI)推出的集微控制器和高性能DSP特點于一身的DSP系列。該系列的DSP具有強大的控制信號處理能力[1],能夠實現(xiàn)復雜的控制算法。隨著電子技術的不斷發(fā)展以及用戶需求的不斷提升,可能需要經(jīng)常對已經(jīng)投入使用的嵌入式設備程序進行更新,而目前一般的程序升級方法是實地取下設備,露出JTAG端口后通過仿真器來更新程序[2-4]。這種方法雖然簡單有效,但對于某些特殊場合,會給程序升級帶來了極大的不便[2]。本文以TMS320F28035為例,描述了一種可以脫離JTAG仿真器,不改變DSP上電啟動方式,實現(xiàn)TMS320C2000系列DSP應用程序在線更新的方法。

1 在線升級的基本思想

一般的基于DSP的軟件程序更新是在CCS環(huán)境下通過JTAG接口操作來實現(xiàn)的。基于JTAG接口的方法雖然易于操作,而且調試方便,但經(jīng)常受空間以及傳輸距離的限制。例如一臺DSP系統(tǒng)安裝在復雜、封閉的環(huán)境下,當程序需要更新或升級時,利用JTAG接口難以實現(xiàn)程序的在線升級[3]。而基于串口通信的在線升級技術是通過用底層程序燒寫應用程序的方法來達到程序升級的目的,該方法則不受復雜系統(tǒng)和復雜環(huán)境的限制。另外,在線升級方法不需要改變DSP的啟動方式,直接采用DSP默認的內(nèi)部Flash方式啟動[5],從而省去了要對DSP的一些引腳進行硬件設置的麻煩。底層程序指已經(jīng)固化在DSP指定Flash空間中的程序,不允許用戶修改和擦除,主要用于實現(xiàn)在線升級的時機判斷、數(shù)據(jù)接收及代碼燒寫等功能,該程序中使用了Flash2803x_API庫存函數(shù)(詳見2.2節(jié));應用程序即為用戶的升級程序[3]。

F28035 DSP每次上電復位,先運行底層程序,與PC機建立聯(lián)系,然后根據(jù)PC機的指令來判斷是否需要升級應用程序。若需要,則將通過串口發(fā)送來的應用程序代碼燒寫至F28035片內(nèi)Flash指定扇區(qū);否則將繼續(xù)執(zhí)行原有的應用程序。當應用程序很大或DSP的RAM空間比較小時,可采用將應用程序代碼分批發(fā)給DSP,DSP接收并燒寫完一批代碼后,再進行下一批代碼的接收和燒寫工作,直到所有的應用程序代碼都燒寫完畢。

2 在線升級的具體實現(xiàn)

2.1 應用程序

用戶的應用程序經(jīng)過CCS編譯連接生成具有模塊化格式的目標文件 (.out),該文件中的代碼和數(shù)據(jù)分別存放在不同的段中,因而不能直接用來燒寫Flash,需將其轉換為Flash能識別的數(shù)據(jù)格式——二進制文件(.bin)。本文采用hex2000.exe和FileOshell.exe工具來實現(xiàn)文件轉換。首先,應用程序經(jīng)過編譯連接生成.out文件,然后通過hex2000.exe把.out文件轉換成.hex文件,再通過FileOshell.exe將文件轉換成.bin文件。先做一個批處理文件,內(nèi)容如下:

其中,Example_2803xAdcSoc.out是應用程序經(jīng)過CCS生成的文件;-map是生成 map文件;-o是生成 hex文件;-m是Motorola-S格式;-memwidth 16指存儲器位數(shù)為 16 bit;-image指選擇映像文件;ROMS是所需要轉換的起始地址、長度、位數(shù)及填充。本文選擇從0x3e8000開始,長度是4 KB,即 FlashH,F(xiàn)lashH中未用的部分用0xFFFF填充,本文把這個批處理文件命名為:Example_2803xAdcSoc.cmd。接下來要生成.bin文件,先做一個 MS-DOS型批處理文件,其內(nèi)容如下:

IFileIOShell.exe-i Example_2803xAdcSoc.hex-o Example_2803xAdcSoc.bin

注意要把 Example_2803xAdcSoc.out、hex2000.exe、FileIO Shell.exe、Example_2803xAdcSoc.cmd和 MS-DOS型批處理文件放在同一目錄下,然后雙擊MS-DOS型批處理文件,即生成所需要的Example_2803xAdcSoc.bin文件。

2.2 底層程序

底層程序用于實現(xiàn)將串口發(fā)送的數(shù)據(jù)燒寫至Flash的指定部分,涉及到應用程序的正確定位和復位后的啟動過程,是實現(xiàn)整個在線升級的重點。底層程序流程圖如圖1所示。底層程序主要實現(xiàn)以下功能[3]:

(1)上電復位查詢功能。上電復位后通過接收上位機發(fā)送的命令判斷是否升級。若上位機發(fā)送的是升級命令,則跳轉到底層程序中升級部分執(zhí)行;否則,跳轉到原有的應用程序處執(zhí)行。

(2)搬移燒寫程序的功能。由于F28035片上Flash不支持在其中一個扇區(qū)運行程序去擦除或燒寫其他扇區(qū),故完成接收數(shù)據(jù)和燒寫Flash工作的這部分程序(即底層程序中的升級部分程序)需搬移至片內(nèi)RAM或片外RAM上運行。實現(xiàn)程序搬移的函數(shù)為:

圖1 底層程序流程圖

其中,SourceAddr為Flash中升級程序的起始地址,SourceEndAddr為Flash中升級程序的結束地址;DestAddr為搬移至內(nèi)存的首地址。

(3)接收上位機發(fā)送的應用程序代碼并保存到DSP指定的內(nèi)存中(一般為RAM區(qū))。這是通過串口RS232來實現(xiàn)的。并確定用于數(shù)據(jù)保存的這部分內(nèi)存未被占用。例如,若需要將應用程序代碼暫存到F28035的L0 SARAM區(qū)域(地址空間 0x3F8000-0x3F8800)。定義數(shù)組Uint16 BlockBuffer[2048]用于存儲應用程序代碼,在底層程序中采用存儲器定位語句,將上面的緩沖數(shù)組定位到相應的存儲空間:

#pragma DATA_SECTION(BlockBuffer,“BlockTransferbuffer”);

在底層程序CMD文件中,采用定位語句,將Block-Transferbuffer定位到DSP的L0 SRAM空間:

通過以上底層程序的設置,可將應用程序緩存到指定的RAM區(qū)域中。

(4)代碼接收結束后,將內(nèi)存中的代碼燒寫至指定Flash扇區(qū),該步驟通過調用Flash2803x_API庫函數(shù)完成。底層程序中所用到的Flash2803x_API庫函數(shù)如下[6]:

①擦除扇區(qū)的函數(shù)為Uint16Flash28035_Erase(Uint16 SectorMask,&Fstatus), 其中,SectorMask為即將被擦除的扇區(qū);&Fstatus為執(zhí)行擦除操作后返回的狀態(tài)值,用來判斷擦除操作是否成功。②將程序燒寫到Flash扇區(qū) 的 函 數(shù) 為 Uintl6 Flash28035_Program(&FlashAddr,&BuffAddr,Length,&Fstatus), 其中,&FlashAddr為即將 被燒寫的Flash扇區(qū)的起始地址;&BuffAddr為即將準備燒寫的程序當前存放在內(nèi)存空間的首地址;Length為程序長度;&Fstatus為執(zhí)行燒寫操作后返回的狀態(tài)值,用來判斷燒寫操作是否成功。③校驗燒寫到Flash中的程序為Uint16 Flash28035_Verify(&FlashAddr,&BuffAddr,Length,&Fstatus),其中,&FlashAddr指定從Flash內(nèi)開始比較的首地址;&BuffAddr為被比較文件的存儲首地址;Length是需要比較的16 bit字的個數(shù),程序長度;&Fstatus是執(zhí)行校驗操作后返回的狀態(tài)值,用來判斷校驗操作是否成功。

2.3 底層程序和應用程序的定位

DSP F28035上電復位后,CPU將從內(nèi)部Boot Rom獲得復位向量。復位向量指向Boot Rom并執(zhí)行其內(nèi)部的Bootloader程序,執(zhí)行完畢后確定從內(nèi)部Flash啟動。程序指針跳轉到Flash的0x3F7FF6處。由于這個地址是固定的,因此底層程序必須燒寫在以這個地址為起始地址的空間內(nèi)。DSP進入底層軟件程序中運行,首先通過接收上位機的命令來判斷是否進行在線升級,如果進行在線升級,則跳轉到相應升級程序中執(zhí)行;否則,跳轉到原有的應用程序處執(zhí)行。由底層程序跳轉到原有的應用程序處執(zhí)行時,采用絕對地址跳轉。部分程序如下所示:

底層程序的cmd配置與應用程序的cmd配置要保持一致,不能產(chǎn)生地址沖突。同時,要注意底層程序和應用程序的跳轉地址配置。

底層程序cmd文件的部分配置如下:

3 燒寫步驟

首先把底層程序通過JTAG接口燒寫到F28035中,然后再進行應用程序的燒寫。應用程序的燒寫步驟為:先把串口調試工具的參數(shù)配置為波特率9 600 bit/s、8 bit數(shù)據(jù)位、1 bit停止位、沒有奇偶校驗位;選擇發(fā)送文本文件方式,發(fā)送應用程序的.bin文件到DSP。由于F28035的RAM區(qū)比較小,可以采取把應用程序代碼分為多次發(fā)送的方式。燒寫過程如圖2所示。

圖2 燒寫過程

本文介紹了一種基于串口通信的DSP應用程序在線升級技術,可以在不打開機箱的條件下實現(xiàn)模塊軟件的更新升級。經(jīng)過實驗發(fā)現(xiàn),采用在線升級技術來更新程序所耗費的時間比采用JTAG口燒寫程序所耗費的時間要長一些,但解決了復雜情況下程序升級困難的問題。總之,該方法簡單可靠,可應用于嵌入式設備的軟件程序更新升級中。

[1]蘇奎峰,呂強,耿慶鋒,等.TMS320F2812原理與開發(fā)[M].北京:電子工業(yè)出版社,2005.

[2]李聲飛,代華山.基于串口通信的DSP程序動態(tài)加載技術[J]. 電 訊 技 術 ,2011,51(6):121-124.

[3]李靜,張樹團.TMS320F2812片內(nèi) Flash在線燒寫技術研究[J].國外電子元器件,2008(10):37-40.

[4]孫軼,許少尉.TMS320F2812芯片的 Flash燒寫技術[J].航 空 計 算 技 術 ,2006,36(5):46-49.

[5]TI公司.TMS320F281x boot ROM serial Flash programming[Z].2007.

[6]TI公司.TMS320F2803x piccolo Flash API[Z].2010.

猜你喜歡
程序
給Windows添加程序快速切換欄
電腦愛好者(2020年6期)2020-05-26 09:27:33
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
基于VMM的程序行為異常檢測
偵查實驗批準程序初探
我國刑事速裁程序的構建
創(chuàng)衛(wèi)暗訪程序有待改進
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 久草视频精品| 免费无码网站| 青青草综合网| 精品中文字幕一区在线| 国产主播福利在线观看| 71pao成人国产永久免费视频| 欧美成人在线免费| 亚洲日本中文字幕天堂网| 性欧美在线| 欧美精品成人| 99热这里只有精品免费| 91小视频在线观看免费版高清| 欧美国产成人在线| 欧美成人亚洲综合精品欧美激情| 黄色网页在线播放| 女人18毛片一级毛片在线 | 日韩黄色精品| 中文字幕在线看| 91国内外精品自在线播放| 久久夜色精品国产嚕嚕亚洲av| 中文字幕首页系列人妻| 福利国产微拍广场一区视频在线 | 亚洲视频一区| 老司机午夜精品视频你懂的| 91欧美在线| 色成人亚洲| 国产美女精品人人做人人爽| 亚洲天堂网在线播放| 欧美在线一二区| 色精品视频| 免费a级毛片18以上观看精品| 国产簧片免费在线播放| 亚洲天堂精品视频| 亚洲成人高清无码| 亚洲无码视频图片| 99精品视频九九精品| 青青草a国产免费观看| 日韩在线影院| 自偷自拍三级全三级视频 | 欧美成人一区午夜福利在线| 亚洲高清免费在线观看| a级毛片毛片免费观看久潮| 最新亚洲人成无码网站欣赏网 | 三级欧美在线| 九色视频一区| 久久久久国产一区二区| 99久久精品国产精品亚洲| a天堂视频| 伊人色天堂| 精品小视频在线观看| 区国产精品搜索视频| 中文字幕亚洲另类天堂| www亚洲天堂| 国产精品短篇二区| 国产精品无码AⅤ在线观看播放| 国产成人福利在线视老湿机| 欧美特黄一级大黄录像| 黄色网在线| 91精品国产无线乱码在线| 丁香亚洲综合五月天婷婷| 最新国产精品第1页| 亚洲一区二区日韩欧美gif| 88av在线播放| 九九线精品视频在线观看| 日本91视频| 久久亚洲日本不卡一区二区| 精品少妇人妻av无码久久| 国产在线高清一级毛片| 日韩乱码免费一区二区三区| 亚洲人成影院在线观看| 国产在线拍偷自揄观看视频网站| 在线精品亚洲国产| www.精品国产| 91免费国产高清观看| 亚洲爱婷婷色69堂| 欧美日韩高清在线| 国产成人高清亚洲一区久久| 久久国产毛片| 国产日韩丝袜一二三区| 欧美 亚洲 日韩 国产| 为你提供最新久久精品久久综合| 国产亚洲成AⅤ人片在线观看|