TMS320C6713的軟件自動更新方案設(shè)計
發(fā)布時間:2007/8/30 0:00:00 訪問次數(shù):527
電子技科大學(xué) 符鴻亮 解梅
引 言
目前市面上存在大量基于DSP的嵌入式系統(tǒng),隨著系統(tǒng)的完善和功能的增強(qiáng),幾乎所有的DSP系統(tǒng)都面臨著軟件更新的問題,這時,更新方法的簡易和高效就顯得特別重要。在基于DSP(數(shù)字信號處理器)的嵌入式系統(tǒng)中,軟件更新通常需要借助仿真器將最新的程序下載到目標(biāo)板上,然后將程序?qū)懭敕且资痛鎯ζ髦。同時,由于新程序編澤、鏈接后生成的各段的大小和運行空間會發(fā)生變化,系統(tǒng)引導(dǎo)程序也需要作相應(yīng)的改動。例如:上一個版本的程序?qū)?yīng)的.text段的運行空間位于0x80000000~0x80000l00,而新程序?qū)?yīng)的.text段的運行空間則位于0x80001000~0x80001110,.text段的運行空間和長度都發(fā)生了變化。另外,引導(dǎo)程序的任務(wù)之一是將.texl,段的數(shù)據(jù)從Flash中復(fù)制到其運行空間,因此就必須重新修改引導(dǎo)程序,將.text段復(fù)制的起始地址由0.x80000000改為0x80001000,并將復(fù)制長度改為0xll0,每一次軟件更新都會重復(fù)上面的步驟。在遠(yuǎn)程系統(tǒng)控制應(yīng)用中,這種更新方法就顯得非常不便;在需要同時對大量的DSP系統(tǒng)進(jìn)行軟件更新或經(jīng)常需要軟件更新的情況下,這種方法的效率也非常低下。
筆者通過對TMS320C6713[1]DSP系統(tǒng)引導(dǎo)過程的分析和COFF[2](公共目標(biāo)文件格式)文件格式的分析,提出了一個軟件自動更新的方案,并在基于TI公司的TMS320C6713芯片與SST公司的SST39VFl601并行Flash芯片組成的硬件平臺上實現(xiàn);最后還簡單介紹了本方案在TMS320VC5409系統(tǒng)上的實現(xiàn)。實現(xiàn)本方案的一個前提是DSP硬件系統(tǒng)上具有某種接口,可以從計算機(jī)中下載COFF文件到本地系統(tǒng)上,筆者使用的平臺是通過UART接口連接計算機(jī),使用Windows自帶的超級終端工具,通過Xmodem協(xié)議將COFF文件下載到目標(biāo)系統(tǒng)上,當(dāng)下載完成后更新就會自動完成。DSP重新上電或復(fù)位后運行的就是最新的程序。本方案主要包括兩個過程:一是通過解析COFF文件得到所需的數(shù)據(jù)并燒入Flash;二是系統(tǒng)上電后自動根據(jù)Flash中最新的數(shù)據(jù)引導(dǎo)、運行。下面詳細(xì)描述兩個過程的實現(xiàn)方法。
1 COFF文件解析
C或匯編程序在編譯后會生成很多段(如.text、.bss、.switch、.cinit、.data等),這些段又可以分為需要初始化的段和不需要初始化的段。這里,需要初始化和不需要初始化是針對系統(tǒng)引導(dǎo)來說的。例如:.text為程序代碼數(shù)據(jù),系統(tǒng)上電后需要引導(dǎo)程序從Flash中復(fù)制到其運行空間中,稱為“需要初始化的段”;.bss為初始化為0的數(shù)據(jù)空間,這個初始化為0的動作在C語言環(huán)境建立時進(jìn)行,屬于系統(tǒng)程序的一部分,與引導(dǎo)程序無關(guān),稱為“不需要初始化的段”。這樣,只需要保存初始化的段到Flash中,而并不需要通過段的名稱來識別哪些段是需要初始化的段,哪些是不需要初始化的段,兩種類型可以通過COFF文件中的段信息表部分來區(qū)分。
1.1 COFF文件簡介
COFF文件是DSP匯編器和鏈接器創(chuàng)建的目標(biāo)文件,通常為項目目錄下的Debug目錄里后綴為.0ut的文件。在COFF文件中包含文件頭、可選擇的頭信息、段信息表、每個初始化段的數(shù)據(jù)和重定位信息、符號表、字符串表。從中可以看出,COFF文件中包含了很多冗余的信息成分。為了節(jié)省空間、提高效率,在這里不直接將COFF文件燒進(jìn)Flash,而只保存所需的信息,即每個初始化段的數(shù)據(jù)和程序的人口地址。下面詳細(xì)描述如何從COFF文件中得到這些信息。
1.2 COFF文件格式
在COFF文件中,文件頭部分提供了該文件中包含的段的個數(shù),解析程序會根據(jù)段的個數(shù)掃描每個段的信息并保存初始化段的數(shù)據(jù);可選擇的頭信息包含了程序的入口地址,在系統(tǒng)引導(dǎo)結(jié)束后會直接跳轉(zhuǎn)到這個地址,系統(tǒng)就開始正常工作。段信息表的格式說明如表1所列。其中,段物理地址是該段的執(zhí)行地址,也就是程序運行時該段所在的空間;原始數(shù)據(jù)文件指針指向段數(shù)據(jù)在COFF文件中的位置,如果該段為初始化段,那么從這里就可以得到需要寫入Flash的數(shù)據(jù)的位置。計算如下:
段數(shù)據(jù)地址=COFF文件起始地址+原始數(shù)據(jù)文件指針
電子技科大學(xué) 符鴻亮 解梅 引 言 目前市面上存在大量基于DSP的嵌入式系統(tǒng),隨著系統(tǒng)的完善和功能的增強(qiáng),幾乎所有的DSP系統(tǒng)都面臨著軟件更新的問題,這時,更新方法的簡易和高效就顯得特別重要。在基于DSP(數(shù)字信號處理器)的嵌入式系統(tǒng)中,軟件更新通常需要借助仿真器將最新的程序下載到目標(biāo)板上,然后將程序?qū)懭敕且资痛鎯ζ髦。同時,由于新程序編澤、鏈接后生成的各段的大小和運行空間會發(fā)生變化,系統(tǒng)引導(dǎo)程序也需要作相應(yīng)的改動。例如:上一個版本的程序?qū)?yīng)的.text段的運行空間位于0x80000000~0x80000l00,而新程序?qū)?yīng)的.text段的運行空間則位于0x80001000~0x80001110,.text段的運行空間和長度都發(fā)生了變化。另外,引導(dǎo)程序的任務(wù)之一是將.texl,段的數(shù)據(jù)從Flash中復(fù)制到其運行空間,因此就必須重新修改引導(dǎo)程序,將.text段復(fù)制的起始地址由0.x80000000改為0x80001000,并將復(fù)制長度改為0xll0,每一次軟件更新都會重復(fù)上面的步驟。在遠(yuǎn)程系統(tǒng)控制應(yīng)用中,這種更新方法就顯得非常不便;在需要同時對大量的DSP系統(tǒng)進(jìn)行軟件更新或經(jīng)常需要軟件更新的情況下,這種方法的效率也非常低下。 筆者通過對TMS320C6713[1]DSP系統(tǒng)引導(dǎo)過程的分析和COFF[2](公共目標(biāo)文件格式)文件格式的分析,提出了一個軟件自動更新的方案,并在基于TI公司的TMS320C6713芯片與SST公司的SST39VFl601并行Flash芯片組成的硬件平臺上實現(xiàn);最后還簡單介紹了本方案在TMS320VC5409系統(tǒng)上的實現(xiàn)。實現(xiàn)本方案的一個前提是DSP硬件系統(tǒng)上具有某種接口,可以從計算機(jī)中下載COFF文件到本地系統(tǒng)上,筆者使用的平臺是通過UART接口連接計算機(jī),使用Windows自帶的超級終端工具,通過Xmodem協(xié)議將COFF文件下載到目標(biāo)系統(tǒng)上,當(dāng)下載完成后更新就會自動完成。DSP重新上電或復(fù)位后運行的就是最新的程序。本方案主要包括兩個過程:一是通過解析COFF文件得到所需的數(shù)據(jù)并燒入Flash;二是系統(tǒng)上電后自動根據(jù)Flash中最新的數(shù)據(jù)引導(dǎo)、運行。下面詳細(xì)描述兩個過程的實現(xiàn)方法。 1 COFF文件解析 C或匯編程序在編譯后會生成很多段(如.text、.bss、.switch、.cinit、.data等),這些段又可以分為需要初始化的段和不需要初始化的段。這里,需要初始化和不需要初始化是針對系統(tǒng)引導(dǎo)來說的。例如:.text為程序代碼數(shù)據(jù),系統(tǒng)上電后需要引導(dǎo)程序從Flash中復(fù)制到其運行空間中,稱為“需要初始化的段”;.bss為初始化為0的數(shù)據(jù)空間,這個初始化為0的動作在C語言環(huán)境建立時進(jìn)行,屬于系統(tǒng)程序的一部分,與引導(dǎo)程序無關(guān),稱為“不需要初始化的段”。這樣,只需要保存初始化的段到Flash中,而并不需要通過段的名稱來識別哪些段是需要初始化的段,哪些是不需要初始化的段,兩種類型可以通過COFF文件中的段信息表部分來區(qū)分。 1.1 COFF文件簡介 COFF文件是DSP匯編器和鏈接器創(chuàng)建的目標(biāo)文件,通常為項目目錄下的Debug目錄里后綴為.0ut的文件。在COFF文件中包含文件頭、可選擇的頭信息、段信息表、每個初始化段的數(shù)據(jù)和重定位信息、符號表、字符串表。從中可以看出,COFF文件中包含了很多冗余的信息成分。為了節(jié)省空間、提高效率,在這里不直接將COFF文件燒進(jìn)Flash,而只保存所需的信息,即每個初始化段的數(shù)據(jù)和程序的人口地址。下面詳細(xì)描述如何從COFF文件中得到這些信息。 1.2 COFF文件格式 在COFF文件中,文件頭部分提供了該文件中包含的段的個數(shù),解析程序會根據(jù)段的個數(shù)掃描每個段的信息并保存初始化段的數(shù)據(jù);可選擇的頭信息包含了程序的入口地址,在系統(tǒng)引導(dǎo)結(jié)束后會直接跳轉(zhuǎn)到這個地址,系統(tǒng)就開始正常工作。段信息表的格式說明如表1所列。其中,段物理地址是該段的執(zhí)行地址,也就是程序運行時該段所在的空間;原始數(shù)據(jù)文件指針指向段數(shù)據(jù)在COFF文件中的位置,如果該段為初始化段,那么從這里就可以得到需要寫入Flash的數(shù)據(jù)的位置。計算如下: 段數(shù)據(jù)地址=COFF文件起始地址+原始數(shù)據(jù)文件指針
熱門點擊
- VxWorks下UDP協(xié)議棧效率的研究與改進(jìn)
- 硬實時操作系統(tǒng)-RTLinux
- 基于Qt/Embedded的微波信號發(fā)生器軟
- 單片機(jī)IP技術(shù)在智能小區(qū)系統(tǒng)中的應(yīng)用
- 關(guān)于ISA設(shè)備的驅(qū)動程序轉(zhuǎn)換為PCI設(shè)備的W
- 在MOTOROLA A68K系列MCU上移植
- 矢量字庫在嵌入式機(jī)頂盒中的應(yīng)用
- 基于單片機(jī)的便攜式電子秤
- 具有DSP功能的16位微控制器80296SA
- PPSM嵌入式RTOS中的窗口系統(tǒng)開發(fā)
推薦技術(shù)資料
- 羅盤誤差及補(bǔ)償
- 造成羅盤誤差的主要因素有傳感器誤差、其他磁材料干擾等。... [詳細(xì)]
- MOSFET 電感單片降壓開關(guān)模式變換器優(yōu)勢
- SiC MOSFET 和 IG
- 新型 電隔離無芯線性霍爾效應(yīng)電
- 業(yè)界超小絕對位置編碼器技術(shù)參數(shù)設(shè)計
- 高帶寬、更高分辨率磁角度傳感技術(shù)應(yīng)用探究
- MagAlpha 角度位置傳感
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究
深圳服務(wù)熱線:13751165337 13692101218
粵ICP備09112631號-6(miitbeian.gov.cn)

深圳市碧威特網(wǎng)絡(luò)技術(shù)有限公司
付款方式