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

TMS320C6416程序以太網遠程更新技術研究

2014-06-30 18:38:22陳紹煒魏剛王子
現代電子技術 2014年12期

陳紹煒 魏剛 王子

摘 要: 針對脫離調試器下,DSP遠程軟件維護和升級問題,從TI C6000系列DSP程序自加載原理出發,提出了一種基于簡單文件傳輸協議(TFTP)和可用于無操作系統平臺的程序遠程更新方案,給出了系統軟件設計結構,重點設計了程序加載更新的過程,并通過移植輕型TCP/IP協議棧(LwIP),實現了網絡協議在DSP平臺下的高效穩定嵌入。工程實踐表明,該方案優化了網絡協議對系統資源的開銷,提高了DSP下以太網功能開發的靈活性,有益于系統性能的提升和改進。

關鍵詞: 數字信號處理器; 遠程加載; 輕型TCP/IP協議棧; 簡單文件傳輸協議; TMS320C6416

中圖分類號: TN711?34; TP368.1 文獻標識碼: A 文章編號: 1004?373X(2014)12?0125?04

Abstract:In view of remote software maintenance and update of DSP without debugger, a scheme of remote update for DSP program which is based on trivial file transfer protocol (TFTP) and can be applied to a platform without operation system is proposed according to bootloading principle of TI C6000 series DSP. A hierarchical structure of system software design laying emphasis on the procedure of program loading and updating is presented. High efficiency and stability embedding of the network protocol is realized in DSP platform by transplanting the lightweight TCP/IP stack (LwIP). Project practice indicates that the scheme optimizes the expense of system resource from network protocol, improves the flexibility of Ethernet development on DSP, and is beneficial to promote the system performance.

Keywords: DSP; remote loading; LwIP; TFTP; TMS320C6416

隨著DSP在航空航天、通信、汽車電子、工業儀器儀表、圖形圖像處理等領域應用的不斷深入,DSP軟件的遠程維護和升級也逐漸成為工程應用的研究熱點。

文獻[1]提出了一種基于以太網和TCP/IP協議的遠程更新方案,給出了系統軟硬件設計流程。但該文并未給出DSP下TCP/IP協議的嵌入細節,缺少具體的工程實現方法,其所設計的自加載引導過程也不能直接應用于需二次加載的C6000系列DSP。文獻[2]也提出了一種基于網絡的遠程加載方案,文中給出了C6000系列DSP二次加載過程,但該方案的以太網功能開發基于TI提供的網絡開發套件NDK(Network Developer′s Kit),僅適用于內部集成以太網控制器的DSP型號。文獻[3]提出了一種基于HPI引導方式的以太網遠程加載方案,但該方案要求系統必須具有主從式雙DSP處理器。

本文在深入分析C6000系列DSP自加載原理的基礎上,針對大部分DSP內部未集成以太網控制器,并采用ROM引導方式和不運行操作系統的應用前提,以最大限度減小以太網協議對系統的開銷為原則,充分發揮LwIP協議棧可以在無操作系統平臺上獨立運行的優勢,設計了基于LwIP協議棧內核和TFTP協議的以太網遠程程序更新方案,詳細地給出了系統軟件設計層次和以太網協議的嵌入細節,并分析了該方案在提升系統性能上的優勢。

1 系統硬件設計

本文系統硬件組成框圖如圖1所示。該系統以TMS320C6416為核心,通過串口完成上位機與DSP之間控制信息的交互,利用以太網口實現用戶程序的遠程傳輸。上位機采用TFTP協議將用戶程序傳輸給遠端DSP,DSP接收更新程序并將其寫入FLASH指定區域,再次上電后更新程序自動被加載至片內RAM或片外SDRAM運行。TMS320C6416是由TI公司推出的高性能定點數字信號處理器,具有2個EMIF接口,64位數據寬度的EMIFA和16位數據寬度的EMIFB,共1 280 MB可分配地址的外部存儲器擴展空間,可支持異步存儲器(SRAM,EPRAM)和同步存儲器(SDRAM,SBSRAM, ZBT SRAM,FIFO)的無縫連接。其中,EMIFA又分為4個256 MB空間,EMIFB分為4個64 MB空間[4?5]。本系統中,UART 控制器芯片[6]、FLASH芯片[7]、以太網控制器芯片[8]均使用EMIFB接口與DSP連接,并分別映射于EMIFB的CE0,CE1,CE2空間。

以太網控制器芯片選用DM9000A,其數據總線工作于16位操作模式,TMS320C6416 EMIFB接口的CE2作為DM9000A的片選信號,地址線BEA01接DM9000A的CMD引腳,故DSP訪問DM9000A地址端口和數據端口的內存映射分別為0x68000000,0x68000002。

系統涉及兩級外部中斷:UART接收中斷和DM9000A接收中斷,兩級中斷源分別與TMS320C6416的EXT_INT4,EXT_INT7引腳相連[9]。

TMS320C6416具有可配置的設備端格式,即大端格式(Big Endian)和小端格式(Little Endian),可通過BEA20引腳上電時的電平決定。硬件設計選用小端格式作為主機字節序。

2 系統軟件設計

為了方便系統軟件的維護和擴展,軟件設計采用模塊化、層次化體系結構和設計方法,其層次結構如圖2所示。硬件驅動層主要涉及各硬件模塊初始化操作,使DSP能夠通過EMIFB總線正確訪問外設,實現DM9000A,TL16C752B的基本收發功能,從而為上層應用屏蔽底層硬件的相關細節。控制層主要負責上位機與DSP之間控制信息的交互,上位機發送程序遠程更新命令并響應DSP發送的文件接收完成和FLASH燒寫完成的回告信息。數據處理層主要負責將以太網口接收的更新程序寫入FLASH的指定位置。引導層和以太網協議層為系統軟件設計的核心,文中對其功能實現做出深入探討。

2.1 引導層設計

TMS320C6416提供三種上電引導模式:No Boot引導、HPI引導以及EMIFB 8位ROM引導[10]。引導模式的選擇由引腳BEA[19:18]上電時的電平決定。對于大部分應用,ROM引導是較為普遍的選擇模式。在該引導方式下,DSP上電后位于CE1起始1 KB空間的ROM程序首先通過EDMA被復制到RAM地址0處,CPU退出復位狀態后,執行地址0處的指令。當用戶程序的長度超過1 KB,則需要采用二次加載方式,即首先復制并運行二次加載程序,二次加載程序將后續用戶程序復制到RAM運行。

本文設計的遠程加載方式如圖3所示,該方式也基于ROM引導方式,但對其做出了改進。二次加載程序和用戶程序之間增加了串口監控、以太網協議和FLASH編程程序,因而整個引導過程需完成三次加載:一次加載過程如前所述,二次加載將上述增加的程序復制到RAM指定區域,而用戶程序的加載和運行取決于串口命令,即第三次加載。由于在引導階段,C語言環境還未初始化, 二次加載程序只能使用匯編語言進行編程[11?13],且需編程實現以下過程:

(1) 配置EMIF總線接口以訪問外部FLASH,RAM存儲器,如果片內RAM空間滿足程序運行要求,則可以不配置外部RAM接口。

(2) 將已經初始化的數據段從片外FLASH復制到段運行地址所描述的RAM存儲區。

(3) 程序跳轉至_c_int00( )函數。

要實現上述第二個過程需創建段復制表,段復制表用于描述段加載地址、運行地址以及段長度。對于non?BIOS應用,通常可通過三種方法創建段復制表:查詢.map文件,使用hex轉換工具的_boot參數[14],使用關聯操作符LOAD_START,RUN_START,SIZE。

如以下代碼所示,本設計使用關聯操作符創建段復制表,首先在cmd文件中的.text段包含以上操作指令,編譯鏈接后,變量_text_load_start為.text段的加載地址,_text_run_start為.text段的運行地址,_text_size為.text段的段長度:

LOAD_START(_text_load_start),

RUN_START(_text_run_start),

SIZE(_text_size)

更新cmd文件后,需要在二次加載代碼中將上述鏈接參數定義為全局變量,并將這些參數添加到段復制表中,具體代碼如下所示:

.global _text_size

.global _text_run_start

.global _text_load_start

COPY_TABLE:

.word _text_size

.word _text_run_start

.word _text_load_start

三次加載程序可使用C語言編寫,其通過以下兩個過程完成用戶程序的加載和運行:

(1) 將用戶程序從片外FLASH復制到片內RAM,RAM的起始地址可由用戶指定,但與引導程序的運行地址不能重疊。

(2) 跳轉至用戶程序的_c_int00( )函數。用戶程序運行的入口地址并非是步驟(1)中所指定的RAM起始地址,而是_c_int00( )函數的入口地址,程序需跳轉至該地址處運行,具體實現如下所示:

run=(void(*)())NewprogramRun;

(*run)();

其中,NewprogramRun為用戶程序_c_int00( )函數入口地址的宏定義。

2.2 以太網協議層設計

本系統以太網功能的開發受限于兩個前提條件:DSP可能不運行操作系統;作為DSP上電啟用的引導程序其對系統內存資源的開銷不能過大。因此,本系統以太網協議軟件設計基于LwIP協議棧。LwIP是TCP/IP協議一種獨立、簡單的實現,它在保證嵌入式系統擁有完整TCP/IP功能的同時,又能減少協議棧對系統資源的消耗,并能在無操作系統平臺下獨立運行。

結合本系統的實際應用需求,DSP與上位機之間為點對點傳輸,傳輸數據量較小,因此DSP采用靜態IP地址,不啟用DHCP功能,傳輸層使用UDP協議,應用層采用TFTP協議以進一步減小DSP的內存開銷。

LwIP提供三種用戶編程接口方式:raw/callback API,sequential API和BSD?style socket API[15]。由于sequential API和BSD?style socket API的實現要求應用程序必須支持多線程,而本系統的DSP平臺不運行操作系統,故選用raw/callback API編程方式。在該編程方式下,應用程序與協議棧內核函數直接交互,用戶通過向協議棧內核注冊回調函數并直接調用內核操作函數來實現編程。本文中LwIP在TMS320C6416上的移植過程如圖4所示。

(1) 確立內核參數。協議棧所有內核參數在opt.h文件中設定,本文結合系統實際功能需求在lwipopts.h文件中對其進行了重新配置,實現了協議棧的功能裁剪,包括內存字節對齊方式,內存堆大小,協議控制塊的類型、數目、大小以及啟用或屏蔽某些宏定義等。設計中通過以下幾條宏定義分別禁用了操作系統、DHCP功能以及TCP協議內核:

#define NO_SYS 1

#define LWIP_DHCP 0

#define LWIP_TCP 0

(2) 移植頭文件。cc.h頭文件定義了協議棧內部所使用的數據類型,以及不同編譯器特性下結構體封裝宏。針對TMS320C6416所支持的數據類型和本設計所使用的CCS編譯器,在該文件中進行了數據類型的修改匹配,同時對結構體封裝宏進行了重新定義:

#define PACK_STRUCT_BEGIN

#define PACK_STRUCT_STRUCT

#define PACK_STRUCT_END

#define PACK_STRUCT_FIELD(x) x

cpu.h頭文件定義了字節序,字節序可配置為大端格式或小端格式。由于TMS320C6416的端格式與硬件配置有關,因此軟件設置與硬件配置需嚴格一致。本系統DSP硬件選擇小端格式,而網絡字節序采用大端格式,通過此處的宏定義,協議內部的字節轉換函數將自動進行字節序轉換。

(3) 移植網卡驅動。網卡驅動的移植是整個移植工作的核心,通過對ethernetif.c文件中的以下三個函數進行修改,使協議棧與DM9000A驅動程序相切合,從而準確調用網卡初始化函數、發送函數和接收函數。

low_level_init(struct netif *netif)

low_level_input(struct netif *netif)

low_level_output(struct netif *netif, struct pbuf *p)

其中low_level_init函數完成網卡的初始化;low_level_input函數從網卡的SRAM中讀取數據,并將數據封裝成pbuf結構以供內核使用;low_level_output函數則將由pbuf結構組成的鏈表中的上層數據包通過網卡發送至物理鏈路。

(4) 注冊用戶回調函數。本設計中的用戶回調函數即為以太網應用層TFTP協議程序的入口函數,該函數在協議棧初始化階段的udp_recv(UDPpcb, recv_callback_tftp, NULL)函數中注冊,并在udp_input(struct pbuf *p, struct netif *inp)函數中回調,其中recv_callback_tftp即為回調函數。在回調函數的功能設計中,DSP工作于TFTP服務器模式,上位機工作于TFTP客戶端模式,上位機以向DSP寫文件的方式實現文件的上傳。為了減小系統開銷,在TFTP協議程序的編寫中,只保留了客戶端向服務器寫功能(上傳),而裁剪了客戶端向服務器讀功能(下載)。

3 系統可靠性、穩定性分析

系統可靠性重點體現在文件傳輸、燒寫的完整性和準確性。由于本系統采用點對點的有線傳輸,而且傳輸數據量較小,TFTP協議自身的傳輸回告和確認功能足以保障數據傳輸的完整性,準確性則可由DM9000A的CRC校驗功能及IP協議首部校驗機制予以保證。在FLASH編程過程中,通過查詢操作狀態位來判斷相應動作是否成功,及時對失敗操作做出處理,確保文件燒寫的準確性。當出現傳輸、燒寫異常,串口將返回錯誤診斷信息,請求PC再次進行傳輸。

在系統軟件調試階段,程序有可能出現因內存分配失敗或溢出而陷入死循環或返回錯誤信息,此時需要對協議棧內核參數再次進行調整,通過試驗各種方案,找到系統性能和開銷的平衡點。

在以太網傳輸實驗中,PC IP地址設定為192.168.0.7,DSP IP地址設定為192.168.0.8,端口號為69。文件上傳過程中捕獲的網絡數據包如圖5所示。該圖完整的反映了一次文件傳輸過程中PC與DSP之間數據包的交互過程,圖中編號為2的數據包顯示了DSP網卡DM9000A的廠商、地址信息;編號為3的數據包顯示了用戶程序文件的名稱,即TEST_LED.bin,使用.bin格式傳輸的原因見文獻[1]。

實驗表明,基于LwIP協議棧的TFTP協議能夠實現用戶程序的完整、準確傳輸,無連接失敗和丟包問題出現。經過功能裁剪和調整后的以太網協議程序占用DSP的內存較小,而且性能較為穩定。串口控制靈活可靠,FLASH 編程準確無誤,再次上電后,更新后的用戶程序能夠正確運行。

4 結 語

本文提出基于以太網的DSP遠程程序更新方案,能實現DSP軟件遠程升級和維護,有效解決極端條件下DSP程序更新問題,進一步拓展DSP工程應用領域。該方案所設計的DSP三次加載技術及以太網傳輸技術在工程實踐中得到了良好驗證,具有較好的工程應用價值。

參考文獻

[1] 王敏,黃戰華,孫秋實,等.DSP系統程序遠程更新的研究與實現[J].計算機工程與應用,2012,48(8):109?111.

[2] 左顥睿,劉永清,張傲華,等.基于以太網的DSP遠程加載技術研究[J].單片機與嵌入式系統應用,2012(5):24?26.

[3] 李文祿,蔣宇中.一種基于以太網的TMS320C6713B 程序加載技術[J].海軍工程大學學報,2008,20(6):35?39.

[4] Texas Instruments. TMS320C6414, TMS320C6415, TMS320

C6416 fixed?point digital signal processors SP?RS146N [R]. USA: Texas Instruments, 2005.

[5] Texas Instruments. TMS320C6000 DSP external memory interface (EMIF) reference guide SPRU266E [R]. USA: Texas Instruments, 2008.

[6] Texas Instruments. TL16C752B 3.3?V dual UART with 64?BYTE FIFO data sheet [R]. USA: Texas Instruments, 2000.

[7] Silicon Storage Technology, Inc. 2Mbit/4Mbit/8Mbit (x16) multi?purpose flash data sheet [R]. USA: Silicon Storage Technology, Inc, 2002.

[8] Davicom Semiconductor, Inc. DM9000A Ethernet controller with general processor interface data sheet[R]. Taiwan, China: Davicom Semiconductor, Inc, 2006.

[9] Texas Instruments. TMS320C6000 DSP general?pur?pose input/output (GPIO) reference guide SPRU584A [R]. USA: Texas Instruments, 2004.

[10] Texas Instruments. TMS320C6000 boot mode and emulation reset SPRA978 [R]. USA: Texas Instruments, 2003.

[11] Texas Instruments. Creating a second?level bootloader for flash bootloading on TMS320C6000 platform with code composer studio SPRA999A1 [R]. USA: Texas Instruments, 2006.

[12] Texas Instruments. TMS320C6000 programmers guide SPRU198K [R]. USA: Texas Instruments, 2011.

[13] 鄭紅,劉政強,李振.嵌入式DSP應用系統設計及實例剖析[M].北京:北京航天航空大學出版社,2012.

[14] Texas Instruments. TMS320C6000 assembly languagetools user′s guide SPRU186W [R]. USA: Texas Instruments, 2012.

[15] 朱升林,粟思科.嵌入式網絡那些事:LwIP協議深度剖析與實戰演練[M].北京:中國水利水電出版社,2012.

C6416 fixed?point digital signal processors SP?RS146N [R]. USA: Texas Instruments, 2005.

[5] Texas Instruments. TMS320C6000 DSP external memory interface (EMIF) reference guide SPRU266E [R]. USA: Texas Instruments, 2008.

[6] Texas Instruments. TL16C752B 3.3?V dual UART with 64?BYTE FIFO data sheet [R]. USA: Texas Instruments, 2000.

[7] Silicon Storage Technology, Inc. 2Mbit/4Mbit/8Mbit (x16) multi?purpose flash data sheet [R]. USA: Silicon Storage Technology, Inc, 2002.

[8] Davicom Semiconductor, Inc. DM9000A Ethernet controller with general processor interface data sheet[R]. Taiwan, China: Davicom Semiconductor, Inc, 2006.

[9] Texas Instruments. TMS320C6000 DSP general?pur?pose input/output (GPIO) reference guide SPRU584A [R]. USA: Texas Instruments, 2004.

[10] Texas Instruments. TMS320C6000 boot mode and emulation reset SPRA978 [R]. USA: Texas Instruments, 2003.

[11] Texas Instruments. Creating a second?level bootloader for flash bootloading on TMS320C6000 platform with code composer studio SPRA999A1 [R]. USA: Texas Instruments, 2006.

[12] Texas Instruments. TMS320C6000 programmers guide SPRU198K [R]. USA: Texas Instruments, 2011.

[13] 鄭紅,劉政強,李振.嵌入式DSP應用系統設計及實例剖析[M].北京:北京航天航空大學出版社,2012.

[14] Texas Instruments. TMS320C6000 assembly languagetools user′s guide SPRU186W [R]. USA: Texas Instruments, 2012.

[15] 朱升林,粟思科.嵌入式網絡那些事:LwIP協議深度剖析與實戰演練[M].北京:中國水利水電出版社,2012.

C6416 fixed?point digital signal processors SP?RS146N [R]. USA: Texas Instruments, 2005.

[5] Texas Instruments. TMS320C6000 DSP external memory interface (EMIF) reference guide SPRU266E [R]. USA: Texas Instruments, 2008.

[6] Texas Instruments. TL16C752B 3.3?V dual UART with 64?BYTE FIFO data sheet [R]. USA: Texas Instruments, 2000.

[7] Silicon Storage Technology, Inc. 2Mbit/4Mbit/8Mbit (x16) multi?purpose flash data sheet [R]. USA: Silicon Storage Technology, Inc, 2002.

[8] Davicom Semiconductor, Inc. DM9000A Ethernet controller with general processor interface data sheet[R]. Taiwan, China: Davicom Semiconductor, Inc, 2006.

[9] Texas Instruments. TMS320C6000 DSP general?pur?pose input/output (GPIO) reference guide SPRU584A [R]. USA: Texas Instruments, 2004.

[10] Texas Instruments. TMS320C6000 boot mode and emulation reset SPRA978 [R]. USA: Texas Instruments, 2003.

[11] Texas Instruments. Creating a second?level bootloader for flash bootloading on TMS320C6000 platform with code composer studio SPRA999A1 [R]. USA: Texas Instruments, 2006.

[12] Texas Instruments. TMS320C6000 programmers guide SPRU198K [R]. USA: Texas Instruments, 2011.

[13] 鄭紅,劉政強,李振.嵌入式DSP應用系統設計及實例剖析[M].北京:北京航天航空大學出版社,2012.

[14] Texas Instruments. TMS320C6000 assembly languagetools user′s guide SPRU186W [R]. USA: Texas Instruments, 2012.

[15] 朱升林,粟思科.嵌入式網絡那些事:LwIP協議深度剖析與實戰演練[M].北京:中國水利水電出版社,2012.

主站蜘蛛池模板: 一区二区三区精品视频在线观看| 久久伊人久久亚洲综合| 国产精品视频999| 免费jjzz在在线播放国产| 亚洲精品色AV无码看| 美女一级毛片无遮挡内谢| 国产免费怡红院视频| 青青热久麻豆精品视频在线观看| 亚洲福利视频一区二区| 国产精品吹潮在线观看中文| 久草网视频在线| 亚洲大尺码专区影院| 狠狠色成人综合首页| 亚洲二三区| 久热re国产手机在线观看| 欧美一区国产| 成人小视频在线观看免费| 国产女人在线视频| 极品私人尤物在线精品首页| 九色91在线视频| 国产91久久久久久| 国产毛片基地| 亚洲欧洲美色一区二区三区| 久久免费看片| 欧美国产日韩另类| 91麻豆久久久| 欧美性猛交一区二区三区| 一区二区理伦视频| 国产另类视频| 亚洲中文字幕日产无码2021| 亚洲三级电影在线播放| 色有码无码视频| 色婷婷视频在线| A级毛片高清免费视频就| 黄色网站在线观看无码| 国产肉感大码AV无码| 美女被躁出白浆视频播放| 日本黄色不卡视频| 亚洲va精品中文字幕| 国产香蕉97碰碰视频VA碰碰看 | 亚洲香蕉在线| 国内精品自在自线视频香蕉 | 亚洲中文字幕精品| 国产免费羞羞视频| 国产精品一区二区不卡的视频| 久久精品亚洲热综合一区二区| 欧美国产日韩另类| 色综合热无码热国产| 操操操综合网| 国产在线观看精品| 欧美日韩一区二区三区在线视频| 最新国产成人剧情在线播放| 视频二区中文无码| 91在线激情在线观看| 国产精品毛片在线直播完整版| 97精品伊人久久大香线蕉| 大香网伊人久久综合网2020| 国产97视频在线| 亚洲日本中文字幕乱码中文 | 波多野结衣在线一区二区| 久久99精品久久久久纯品| 亚洲天堂视频在线播放| 成人日韩精品| 久久超级碰| 中文纯内无码H| 亚洲乱强伦| 99国产精品一区二区| 久青草免费在线视频| 嫩草在线视频| 亚洲综合欧美在线一区在线播放| 国产日韩AV高潮在线| 亚洲啪啪网| 香蕉视频在线精品| 国产精品欧美亚洲韩国日本不卡| 免费国产黄线在线观看| 成人午夜在线播放| 啪啪永久免费av| 99在线国产| 亚洲一级毛片免费观看| 国产情精品嫩草影院88av| 久久天天躁狠狠躁夜夜2020一| 无码视频国产精品一区二区|