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

TMS320C6701 DSP自動加載研究

2010-05-13 09:17:24王碩果,肖
現代電子技術 2009年19期

王碩果,肖 強

摘 要:在嵌入式系統中,經常要求上電后系統能自動把程序從DSP外部的ROM加載到片內RAM執行。給出一種基于TMS320C6701 DSP的ROM加載方案,通過配置CCS中DSP/BIOS模塊的參數實現DSP程序中代碼和數據段的先后分開加載,比傳統的由手動編寫連接命令文件(.CMD)實現自動加載更為方便。在此基礎上,設計并實現了用CCS直接對FLASH芯片進行在線燒寫。實驗證明,該DSP加載方案穩定可靠,且易于實現。

關鍵詞:DSP;TMS320C6701;ROM加載;FLASH

中圖分類號:TP391文獻標識碼:A

文章編號:1004-373X(2009)19-086-03

Research of Auto Bootload on TMS320C6701 DSP

WANG Shuoguo,XIAO Qiang

(Radar Guidance Research Institute,China Airborne Missile Academy,Luoyang,471009,China)

Abstract:The program code needs to be loaded from external ROM to internal RAM in embedded system when it is switched on.A method of ROM bootload based on TMS320C6701 DSP is presented,which implements code and data section loading dividually by configuring the DSP/BIOS module in CCS,then a method of FLASH online programming with CCS is presented.The feasibility and conveniency of this bootload method are verified.

Keywords:DSP;TMS320C6701;ROM bootload;FLASH

0 引 言

在許多DSP應用系統中,都需要DSP芯片能夠在加電后自動從外部設備加載程序,也就是引導(Bootload)。TI公司的TMS320C6000系列芯片有三種引導方式可供選擇,分別是不加載、ROM加載和主機加載[1],詳細工作流程如下:

不加載:CPU直接從地址0處開始執行代碼。如果該處內存是SDRAM,那么CPU會先掛起,等待SDRAM的初始化完成。

ROM加載:位于外部CE1空間的ROM中的代碼首先通過DMA/EDMA被搬入地址0處。加載過程在復位信號撤銷后開始,此時CPU內部保持復位狀態,由DMA/EDMA執行一個單幀的數據塊傳輸。對于C620x/C670x,DMA從CE1空間中拷貝64 KB數據到地址0處。傳輸完成后,CPU退出復位狀態,開始執行地址0處的指令。對于C62x/C67x,用戶還可以指定外部加載ROM的存儲寬度,EMIF會自動把相鄰的8 b/16 b數據合成32 b的指令。

主機加載:也就是HPI加載。CPU停留在復位狀態,芯片其余部分保持正常狀態。引導過程中,外部主機通過主機接口初始化CPU的存儲空間。主機完成所有的初始化工作后,向接口控制寄存器的DSPINT位寫1,結束引導過程。此時CPU退出復位狀態,開始執行地址0處的指令。

1 ROM加載的實現

究竟使用哪種引導方式取決于芯片引導模式設置,而引導模式由BOOTMODE[4:0]管腳確定。系統加電后,RESET信號有效,DSP芯片復位,在RESET信號上升沿處鎖存BOOTMODE[4:0]管腳上的設置值,以此決定DSP芯片內存映射方式、地址0處的內存類型以及復位后芯片的引導模式。本例中C6701的BOOTMODE值設為01101,即8 b ROM加載。

ROM加載是工程中最常見的加載方式,這種方式可以把程序代碼段和數據段保存在ROM,FLASH等非易失存儲器中,加載過程完全由DSP自動完成,在實際應用中十分方便。ROM加載的具體步驟如下。

1.1 分配存儲空間,生成目標文件(.out)

TI代碼產生工具產生的目標文件是一種模塊化的文件格式——COFF格式。程序中的代碼和數據在COFF文件中是以段的形式組織的。對于C語言文件,編譯器生成的代碼段名為.text。全局變量和靜態變量分配在.bss段中,而局部變量或寄存器變量分配到.stack段或使用寄存器。在DSP的配置文件中必須將這些代碼段正確地分配到C6701的地址空間中去。

在TI提供的DSP軟件開發平臺Code Composer Studio(CCS)中,編寫DSP系統的工作程序,并對DSP芯片的內存空間、EMIF接口等進行正確的配置后,程序編譯通過,CCS就會自動產生目標(后綴為.out)文件,這種.out文件即為COFF格式的。

在ROM加載模式下,復位后C6701將通過DMA方式將FLASH中的前64 KB數據搬運到DSP的片內程序RAM執行,因此,必須將前面編譯好的工作程序的代碼段燒寫到FLASH地址空間中的前64 KB,而數據段則應該燒寫在FLASH首地址64 KB以后。這就需要在DSP芯片的內存段管理中,將數據段的加載地址(Load Address)配置為CE1空間FLASH上的指定地址,以保證DSP在復位后能正確地從FLASH上的不同地址讀取代碼和數據(見圖1)。

圖1 DSP自動引導過程

利用CCS自帶的DSP/BIOS配置工具,可以在類似Windows Explorer的窗口界面下直觀方便地初始化DSP芯片的數據結構并設置不同的參數,而不需要再單獨編寫連接命令文件(link command file,后綴為.cmd)。保存該配置文件時,配置工具自動生成匹配當前配置的匯編源文件和頭文件以及一個鏈接命令文件。當構建(Build)應用程序時,這些文件都會自動被鏈接進應用程序。在CCS中打開DSP/BIOS中的.cdb文件,操作System下的MEM(Memory Section Manager)模塊就可以對DSP存儲器映射空間進行配置,并可以設置程序編譯后生成的代碼段、數據段是如何分配到這些存儲器空間的。這對ROM加載能否成功至關重要,要實現ROM加載必須把一些關鍵的代碼和數據段裝在系統的ROM中,但上電后仍在較快的DSP片內RAM中運行。這需要在DSP的內存映射空間上先劃分出外部FLASH的起始地址和長度(如圖2中的EDFLASH段),并將CCS編譯產生的各個段的運行地址(Run Address)和加載地址(Load Address)分配到合適的存儲空間。需要特別注意的是,數據及代碼初始化段的加載地址必需放在FLASH空間上(如圖3),只讀的段都可以放在FLASH上,非初始化段只需要分配運行地址。

圖2 配置DSP的存儲區

圖3 各段的加載地址

下面是用DSP/BIOS配置工具在DSP內存空間中劃分好的各段開始地址及長度,其中EDFLASH就是外部FLASH上用于二次加載的地址空間。代碼則存放在FLASH的首地址,也就是0x1400000。

MEMORY {

IPRAM:origin=0x0,len=0x10000

IDRAM: origin=0x80000000,len=0x4000

SRAM: origin=0x400000, len=0x40000

IDRAMB1:origin=0x80004000,len=0x7000

EDFLASH:origin=0x1410000,len=0x10000}

1.2 轉換文件格式,得到燒寫文件(.h)

程序編譯好后輸出的是COFF格式的.out文件,這種文件無法直接寫進FLASH,所以只能將其轉換為其他FLASH支持的格式。一般來說,對FLASH燒寫的傳統方法是通過CCS自帶的格式轉換器hex6x把.out文件轉換為FLASH可識別的十六進制格式(如Motorola-S、ASCII-Hex等),再用專門的編程器將其燒寫到FLASH芯片中保存。該方法的實現需要使用專門的FLASH燒寫器,實際應用中較為不便,本工程中,在CCS環境下,通過JTAG口,完全由DSP控制對FLASH進行燒寫和擦除,實現了對外部FLASH的在線編程。

由于燒寫是在CCS程序中實現,所以首先要把.out格式的目標文件轉換為工程中可包含的.h文件。根據前面提到的方法,需要把工作程序編譯后得到的代碼段和數據段分別寫進FLASH中的不同地址,這就需要將COFF文件中的代碼段和數據段分別提取出來。具體做法是:使用CCS中“File-Data-Save”分別把代碼段和數據段保存為dat文件(code.dat和data.dat),代碼段和數據段的具體起始地址及長度可以參考程序連接后自動生成的連接過程結果說明文件(后綴為.map,其中記錄了段的各種詳細信息,從中還可以知道各段的地址分配是否正確)。雖然保存下來的代碼段和數據段都是.dat格式,但其內容已經是我們所需要的DSP工作需要的底層機器碼,所以只需要將其作為一個數組的內容,再給數組加上合適的類型定義,就可以直接將其格式改為能在CCS工程中直接調用的.h文件(code.h和data.h)。這樣也就巧妙地解決了格式轉換問題。

1.3 燒寫FLASH

有了.h格式的燒寫文件,下面就只需要再編寫一個用于擦除和燒寫FLASH的DSP工作程序,由DSP控制并通過JTAG線操作FLASH芯片,燒寫和擦除時要按照FLASH芯片手冊中的要求先向指定地址寫入指定關鍵字。注意代碼和數據應分別寫入FLASH中相應的存儲地址。

以上三步完成后,DSP就可以在重新加電時實現自動引導:首先從地址0x1400000處搬移64 KB初始化程序到片內運行,然后再從地址0x1410000處加載剩余的代碼和數據。

2 結 語

實際工程中的應用證明了上述方法可以使TMS320C6701在脫離上位機的情況下實現上電后自動加載運行,并且穩定可靠,操作方便,使用JTAG線和仿真器就可完成所有操作。該方法只要對一些存儲空間的配置稍作修改即可用于C6000系列其他DSP芯片的自動加載。另外,本文思路也可推廣到其他DSP芯片的自動加載設計中。

參考文獻

[1]李芳慧,王飛,何佩琨,等.TMS320C6000系列DSPs原理與應用[M].2版.北京:電子工業出版社,2003.

[2]TMS320C6000 Tools:Vector Table and Boot ROM Creation[Z].2004.

[3]TMS320C620x/670x DSP Boot Modes and Configuration Reference Guide[Z].2003.

[4]TMS320C6000 Assembly Language Tools User′s Guide[Z].2002.

[5]TMS320C6000 DSP/BIOS User′s Guide[Z].2000.

[6]奚剛,吳清華.TMS320F2812內存管理與FLASH引導模式實現[J].現代電子技術,2007,30(22):58-60.

[7]徐良波,龍小民.TMS320VC33并行自舉的實現[J].現代電子技術,2007,30(22):183-184,190.

主站蜘蛛池模板: 色AV色 综合网站| 激情网址在线观看| 亚洲无码在线午夜电影| 日本成人福利视频| 青青草一区二区免费精品| 啊嗯不日本网站| 亚洲bt欧美bt精品| 免费jizz在线播放| 亚洲bt欧美bt精品| 欧美一级在线看| 中文字幕色站| 免费一级毛片在线观看| 成人久久18免费网站| 国产精品香蕉| 国产精品99一区不卡| 国产成人精品免费av| 久久国产精品77777| 久996视频精品免费观看| 乱系列中文字幕在线视频| 69免费在线视频| 国产网友愉拍精品| 久久精品中文字幕免费| 国产精品亚洲欧美日韩久久| 欧美不卡视频在线| 国内a级毛片| 99福利视频导航| 青青草原国产精品啪啪视频| 亚洲天堂视频在线观看免费| 久久综合丝袜日本网| 青青久在线视频免费观看| 亚洲午夜片| 综合久久五月天| 亚洲天堂网2014| 亚洲人成影院午夜网站| 日韩精品一区二区三区免费| av在线无码浏览| 久久综合五月婷婷| 香蕉视频在线精品| 老司机午夜精品视频你懂的| 国产swag在线观看| 尤物午夜福利视频| 欧美日韩亚洲综合在线观看| 成人午夜视频免费看欧美| 国产高潮流白浆视频| 中文字幕人妻无码系列第三区| 亚洲人成亚洲精品| 亚洲无码视频图片| 99热这里只有精品免费| 国产小视频免费| 少妇精品在线| 亚洲三级色| 久久婷婷六月| 国产AV无码专区亚洲A∨毛片| 美女视频黄频a免费高清不卡| 亚洲国产精品日韩欧美一区| 不卡视频国产| 日韩国产高清无码| 最近最新中文字幕在线第一页| 国产女人在线视频| 高清欧美性猛交XXXX黑人猛交 | www.91在线播放| 国产视频你懂得| 国产清纯在线一区二区WWW| 亚洲有无码中文网| 啪啪啪亚洲无码| 久久精品国产91久久综合麻豆自制| 综合网天天| 色婷婷成人网| 看看一级毛片| 全部免费特黄特色大片视频| 久久国产精品国产自线拍| 日本不卡在线视频| 美女无遮挡拍拍拍免费视频| 青青操视频在线| 在线观看91香蕉国产免费| 国产成人精品在线| 久久国产亚洲欧美日韩精品| 99久久无色码中文字幕| 一本视频精品中文字幕| 国产真实二区一区在线亚洲| 久夜色精品国产噜噜| 亚洲精品无码人妻无码|