版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
楊詞慧yangcihui@2012.10DSP原理及應用——DSP應用系統(tǒng)的開發(fā)環(huán)境第
5章
DSP應用系統(tǒng)的開發(fā)環(huán)境5.1DSP編程基礎5.2DSP軟件集成開發(fā)平臺(CCS)5.1DSP編程基礎主要的軟件開發(fā)工具及其聯(lián)系C編譯器:產(chǎn)生匯編語言源代碼匯編器:將匯編語言源文件翻譯成機器語言目標文件,機器語言格式為公共目標文件格式(COFF)連接器:將多個目標文件組合成單個可執(zhí)行目標模塊。軟件模擬器5.1DSP編程基礎公共目標文件格式(COFF)COFF:CommonObjectFileFormat,公共目標文件格式不僅用于目標文件,庫文件和可執(zhí)行文件也經(jīng)常是這種格式文件頭可選頭段落頭1……段落頭n段落數(shù)據(jù)重定位表行號表符號表字符串表COFF的文件結構文件頭用C的結構描述如下:typedef
struct{ unsignedshortusMagic; //平臺標識
unsignedshortusNumSec; //段落數(shù)
unsignedlongulTime; //時間戳
unsignedlongulSymbolOffset; //符號表偏移
unsignedlongulNumSymbol; //符號數(shù)
unsignedshortusOptHdrSZ; //可選頭長度
unsignedshortusFlags; //文件標記}FILEHDR;5.1DSP編程基礎公共目標文件格式(COFF)文件頭usMagic:魔法數(shù)字,在I386平臺上的值為0x014c。若不為此值,就不是一個I386平臺的COFF文件。usNumSec:描述段落數(shù)量ulTime:描述COFF文件的建立時間5.1DSP編程基礎公共目標文件格式(COFF)文件頭ulSymbolOffset:符號表在文件中的偏移量,從文件頭開始計數(shù)ulNumSymbol:符號表中符號記錄的數(shù)量usFlag:COFF文件的屬性標記可選頭用C的結構描述如下:typedef
struct{ unsignedshortusMagic; //魔法數(shù)字
unsignedshortusVersion; //版本標識
unsignedlongulTextSize; //正文段大小
unsignedlongulInitDataSZ; //已初始化數(shù)據(jù)段大小
unsignedlongulUninitDataSZ; //未初始化數(shù)據(jù)段大小
unsignedlongulEntry; //入口點
unsignedlongulTextBase; //正文段基址
unsignedlongulDataBase; //數(shù)據(jù)段基址}OPTHDR;段落頭用C的結構描述如下:typedef
struct{ charcName[8]; //段名
unsignedlongulVSize; //虛擬大小
unsignedlongulVAddr; //虛擬地址
unsignedlongulSize; //段長度
unsignedlongulSecOffset; //段數(shù)據(jù)偏移
unsignedlongulRelOffset; //段重定位表偏移
unsignedlongulLNOffset; //行號表偏移
unsignedshortulNumRel; //重定位表長度
unsignedshortulNumLN; //行號表長度
unsignedlongulFlags; //段標識}SECHDR;5.1DSP編程基礎公共目標文件格式(COFF)段落頭cName:用來保存段名,常用的段名有.text,.data,.comment,.bss等。ulVSize:段數(shù)據(jù)載入內(nèi)存時的大小。只在可執(zhí)行文件中有效,在目標文件中總為0。5.1DSP編程基礎公共目標文件格式(COFF)段落頭ulVAddr:段數(shù)據(jù)載入或連接時的虛擬地址。ulSize:段中數(shù)據(jù)的實際長度。ulSecOffset:段數(shù)據(jù)在COFF文件中的偏移量。5.1DSP編程基礎公共目標文件格式(COFF)段落頭ulRelOffset:段重定位信息的偏移量ulLNOffset:該段的行號表的偏移量ulNumRel:重定位信息的記錄數(shù)ulNumLN:行號信息的記錄數(shù)ulFlags:該段的屬性標識。5.1DSP編程基礎公共目標文件格式(COFF)段落數(shù)據(jù)是COFF文件中最大的段,每個段落真正的數(shù)據(jù)就保存在這個位置。每個段落都用一個段落頭來描述。5.1DSP編程基礎公共目標文件格式(COFF)重定位表重定位:將邏輯地址空間變成內(nèi)存中的實際物理地址空間的過程。重定位表:保存的是各個段的重定位信息,所有段的重定位信息都在這個表里。5.1DSP編程基礎公共目標文件格式(COFF)重定位表中記錄的結構typedef
struct{
unsignedlongulAddr; //定位偏移
unsignedlongulSymbol; //符號索引
unsignedshortusType; //定位類型}RELOC;5.1DSP編程基礎值名稱說明6RELOC_ADDR3232位絕對定位20RELOC_REL3232位相對定位定位方式代碼及說明5.1DSP編程基礎公共目標文件格式(COFF)絕對定位符號絕對地址=段偏移+符號偏移
相對定位當前地址=定位偏移+當前段偏移+機器字長÷8相對地址=符號絕對地址-當前地址i386平臺上最常用的兩個種定位方式的標識5.1DSP編程基礎公共目標文件格式(COFF)行號表建立可執(zhí)行的二進制代碼與源代碼的行號的對映關系。typedef
struct{
unsignedlongulAddrORSymbol;
unsignedshortusLineNo;}LINENO;5.1DSP編程基礎公共目標文件格式(COFF)符號表用來保存符號信息的一張表,也是COFF文件中最為復雜的一張表所有段落使用到的符號都在這個表里它也是由很多條記錄組成符號表每條記錄的結構:typedef
struct{
union{
charcName[8]; //符號名稱
struct{
unsignedlongulZero; //字符串表標識
unsignedlongulOffset; //字符串偏移
};
};
unsignedlongulValue; //符號值
shortiSection; //符號所在段
unsignedshortusType; //符號類型
unsignedcharusClass; //符號存儲類型
unsignedcharusNumAux; //符號附加記錄數(shù)}SYMENT;5.1DSP編程基礎公共目標文件格式(COFF)字符串表用來保存字符串前4個字節(jié)是字符串的長度,其后就是以0為結尾的字符串5.1DSP編程基礎COFF文件中的段的分類所有的COFF目標文件都包含.text段:代碼段,通常包含可執(zhí)行代碼.data段:數(shù)據(jù)段,通常包含初始化數(shù)據(jù).bss段:通常為未初始化變量保留存儲空間5.1DSP編程基礎COFF文件中的段的分類(續(xù))已初始化的段:包含程序代碼和數(shù)據(jù),.text、.data、.sect、.asect匯編命令所創(chuàng)建的段都屬這一類未初始化的段:為未初始化數(shù)據(jù)在存儲器映像圖中保留空間,.bss,.usect5.1DSP編程基礎匯編器對段的處理確定匯編語言程序的各個部分屬于哪個特定的段6個命令:.bss、.usect、.text、.data、.sect、.asect5.1DSP編程基礎匯編器對段的處理(續(xù))未初始化的段:通常被分配到RAM中,程序運行時可使用這些空間來建立和存儲變量。.bss:在.bss段中保留空間.usect:在自定義段中保留空間5.1DSP編程基礎匯編器對段的處理(續(xù))已初始化的段:.text.data.sect“段名”.asect“段名”,地址5.1DSP編程基礎匯編器對段的處理(續(xù)).bss和.usect指令不停止當前段的匯編,它只是臨時的離開當前的段當匯編器遇到.text、.data、.sect、.asec時,立即停止把數(shù)據(jù)或代碼匯編到當前段中,且開始將隨后的代碼或數(shù)據(jù)匯編到相應的段中5.1DSP編程基礎匯編器對段的處理(續(xù))自定義的段.usect“段名”,字數(shù).sect“段名”.asect“段名”,地址5.1DSP編程基礎匯編器對段的處理(續(xù))子段。大段中的小段,命名的句法基段:子段名段程序計數(shù)器(SPC):一個程序代碼或數(shù)據(jù)段內(nèi)的當前地址5.1DSP編程基礎鏈接器對段的處理一個或多個COFF目標文件中的各種段作為鏈接的輸入段,經(jīng)鏈接后在一個可執(zhí)行的COFF輸出模塊中建立各個輸出段為各個輸出段選定存儲器地址MEMORY命令和SECTION命令5.1DSP編程基礎假設存儲器的起始地址為0假定有2的32次方字的存儲器可用將.text分配到起始地址為0的程序存儲器將.data分配到緊接.text的程序存儲器將.bss分配到緊接著.data的程序存儲器將自定義的段分配到緊接著.bss的存儲器鏈接器的默認分配算法5.1DSP編程基礎鏈接器對段的處理MEMORY:用來定義目標系統(tǒng)的存儲器配置圖為存儲器各部分命名規(guī)定存儲器各部分的起始地址和長度SECTION:指定存儲器資源的分配在存儲器映像圖中分配塊MEMORY{PAGE0:PROG:origin=1a00h,length=2580hPAGE1:DATA:origin=0200h,length=1800h}SECTIONS{.text>PROGPAGE0.cinit>PROGPAGE0.switch>PROGPAGE0.vect>0000hPAGE0
.data>DATAPAGE1.bss>DATAPAGE1.const>DATAPAGE1.sysmem>DATAPAGE1.stack>DATAPAGE1}5.1DSP編程基礎程序重定位將各個段定位到存儲器圖中將符號的數(shù)值調(diào)整到相對于新的段地址的數(shù)值調(diào)整對重新定位后符號的引用5.1DSP編程基礎外部符號在一個模塊中定義,又可在另一個模塊中引用的符號可通過.def、.ref或.global命令指出.def:當前模塊定義可在其它模塊使用.ref:當前模塊使用但在其它模塊定義.global:上述任何一種情況5.1DSP編程基礎DSP應用系統(tǒng)的開發(fā)工具TI公司的CCSIDE(CodeComposerStudioIntegratedDevelopmentEnvironment)ADI公司的CROSSCOREXilinx公司的AccelDSP和SystemGeneratorforDSPMotorola公司的SDK5.2DSP軟件集成開發(fā)平臺(CCS)CCS的基本特征和安裝設置設計概念性規(guī)劃、環(huán)境配置編程和生成可執(zhí)行文件創(chuàng)建工程文件、編寫源程序和配置文件、編譯或匯編、連接調(diào)試程序裝載和執(zhí)行、探測點設置、軟/硬件仿真等分析實時調(diào)試、統(tǒng)計和跟蹤5.2DSP軟件集成開發(fā)平臺(CCS)CCS的安裝底層硬件驅(qū)動程序安裝CCS集成開發(fā)環(huán)境安裝TI驅(qū)動程序安裝驅(qū)動程序的配置5.2DSP軟件集成開發(fā)平臺(CCS)CCS的安裝驅(qū)動程序的配置Simulator:軟件仿真Emulator:硬件仿真5.2DSP軟件集成開發(fā)平臺(CCS)5.2DSP軟件集成開發(fā)平臺(CCS)CCS軟件常用文件類型project.mak:CCS使用的工程文件program.c:C程序源文件program.asm:匯編程序源文件filename.h:C程序的頭文件filename.lib:庫文件project.cmd:鏈接命令文件5.2DSP軟件集成開發(fā)平臺(CCS)CCS軟件常用文件類型program.obj:由源文件編譯、匯編而得的目標文件program.out:(經(jīng)完整的編譯、匯編及鏈接的)可執(zhí)行文件5.2DSP軟件集成開發(fā)平臺(CCS)CCS的窗口、菜單及工具欄File:LoadProgram等Edit:Memory、Variable等View:Dis-Assembly、Memory、Register、WatchWindow、Graph等Project:Build、Rebuild等Debug:Run、Halt、Breakpoints、Gomain、RuntoCursor等5.2DSP軟件集成開發(fā)平臺(CCS)CSS程序的運行和調(diào)試新建一個工程StepInto、StepOver、StepOutRuntoCursor、Run、Halt使用斷點和觀察窗口圖形顯示5.2DSP軟件集成開發(fā)平臺(CCS)GEL語言的使用GEL(GeneralExtensionLanguage)語言:是C語言的一個子集,可用來擴展CCS的功能GEL函數(shù)定義函數(shù)名([參數(shù),…,])
{語句}5.2DSP軟件集成開發(fā)平臺(CCS)GEL語言的使用(續(xù))GEL函數(shù)參數(shù)參數(shù)無需定義類型參數(shù)可是以下類型DSP程序符號值數(shù)字常量字符串常量5.2DSP軟件集成開發(fā)平臺(CCS)GEL語言的使用(續(xù))GEL語句支持以下語句return[表達式]if-[else]while注釋:/*…*/預處理語句:#define5.2DSP軟件集成開發(fā)平臺(CCS)GEL語言的使用(續(xù))調(diào)用GEL函數(shù)GEL函數(shù)可在任何輸入C表達式的地方調(diào)用5.2DSP軟件集成開發(fā)平臺(CCS)定義和調(diào)用舉例Initialize(a,filename,b){
targVar=b; a=10;
GEL_Load(filename); returnb*b;}Initialize(targetSymbol,”C:\\myfile.out”,23*5+2.6)5.2DSP軟件集成開發(fā)平臺(CCS)GEL語言的使用(續(xù))GEL函數(shù)加載和卸載加載:通過File
LoadGel或工程視圖窗中單擊右鍵卸載:右擊文件,選擇“Remove…”重新加載:Reload5.2DSP軟件集成開發(fā)平臺(CCS)GEL語言的使用(續(xù))將GEL函數(shù)添加到GEL菜單hotmenu
uncname()
{statements}menuitem"MyFunction"
hotmenu
LoadMyProg()
{GEL_Load("d:\\test.out");}5.2DSP軟件集成開發(fā)平臺(CCS)GEL語言的使用(續(xù))將GEL函數(shù)添加到GEL菜單(續(xù))dialog關鍵詞dialoguncname(參數(shù)1“參數(shù)1說明”,參數(shù)2“參數(shù)2說明”,……)
{statements}彈出對話框,提示輸入?yún)?shù),最多6個5.2DSP軟件集成開發(fā)平臺(CCS)GEL語言的使用(續(xù))將GEL函數(shù)添加到GEL菜單(續(xù))slider關鍵詞sliderparam_definition(minVal,maxVal,increment,pageIncrement,paramName)
{statements}出現(xiàn)滑動條對象,控制參數(shù)值5.2DSP軟件集成開發(fā)平臺(CCS)GEL語言的使用(續(xù))在CCS啟動時自動加載GEL函數(shù)將GEL函數(shù)加到sim2812.gel中的startup()函數(shù)中,例如
GEL_OpenWindow("Hellowindow");
GEL_TextOut("hello","Hellowindow");5.2DSP軟件集成開發(fā)平臺(CCS)GEL語言的使用(續(xù))例如dialogInitarget2(x"x:",y"y:")
{statements}sliderVolumecontrol(0,10,1,1,volume) {targVarVolume=volume;}5.2DSP軟件集成開發(fā)平臺(CCS)GEL語言的使用(續(xù))嵌入式GEL函數(shù)可直接在程序中調(diào)用控制仿真/實際目標板的狀態(tài),訪問仿真/實際目標板存儲器,并在輸出窗口中顯示結果10類函數(shù):調(diào)試類、斷點類、……5.2DSP軟件集成開發(fā)平臺(CCS)嵌
入
式GEL
函
數(shù)調(diào)試類斷點類窗口類程序加載類存儲器類插入?yún)R編代碼類工程類系統(tǒng)類觀察窗口類擴展存儲器類5.2DSP軟件集成開發(fā)平臺(CCS)GEL語言的使用(續(xù))調(diào)試類GEL函數(shù)GEL_Animate()
開始AnimateDSP程序GEL_Go(address)
執(zhí)行DSP程序到一個由參數(shù)指定的地址。如不指定參數(shù)則同GEL_Run函數(shù)5.2DSP軟件集成開發(fā)平臺(CCS)GEL語言的使用(續(xù))調(diào)試類GEL函數(shù)(續(xù))GEL_Run(“Condition”)
開始運行DSP程序。如果帶條件參數(shù),則當條件滿足時運行GEL_Halt()
停止正在運行的程序5.2DSP軟件集成開發(fā)平臺(CCS)GEL語言的使用(續(xù))調(diào)試類GEL函數(shù)(續(xù))GEL_RunF()
是Debug菜單下的Runfree命令。運行DSP程序前先禁止所有的斷點,同時斷開與目標系統(tǒng)的連接。GEL_Restart():復位DSP程序至入口5.2DSP軟件集成開發(fā)平臺(CCS)GEL語言的使用(續(xù))斷點GEL函數(shù)GEL_BreakPtAdd(address,“Condition”):設置斷點GEL_BreakPtDel(address):刪除斷點GEL_BreakPtReset(address)5.2DSP軟件集成開發(fā)平臺(CCS)GEL語言的使用(續(xù))窗口類GEL函數(shù)GEL_OpenWindow(“WindowName”,windowType,maxLines)GEL_CloseWindow(“windowName”)5.2DSP軟件集成開發(fā)平臺(CCS)GEL語言的使用(續(xù))例如GEL_OpenWindow("Testwindow",1,20)GEL_CloseWindow("Testwindow")5.2DSP軟件集成開發(fā)平臺(CCS)GEL語言的使用(續(xù))窗口類GEL函數(shù)(續(xù))GEL_TextOut(“text”,“windowName”,textColor,lineNumber,appendToEnd,param1,param2,…,param4)
將一個固定的字符串顯示到指定的輸出窗口5.2DSP軟件集成開發(fā)平臺(CCS)GEL語言的使用(續(xù))窗口類GEL函數(shù)(續(xù))GEL_TargetTextOut(startAddress,page,maxLength,format,”windowName”,textColor,lineNumber,appendToEnd,changeHighlight)
將一個格式字符串顯示到輸出窗口5.2DSP軟件集成開發(fā)平臺(CCS)GEL語言的使用(續(xù))GEL_TargetTextOutstartAddress:包含格式字符的塊的起始地址page:可選參數(shù),指示存儲器類型。0—程序存儲器,1—數(shù)據(jù)存儲器,2—I/OmaxLength:當塊長度大于400字節(jié)時用來指示塊的最大長度。format:顯示的文本是打包還是未經(jīng)打包的lineNumber:指定顯示從哪行開始5.2DSP軟件集成開發(fā)平臺(CCS)GEL語言的使用(續(xù))例如:GEL_TextOut("x:%d,y:%f",,,,,10,21.2);GEL_TargetTextOut(0x100,0,400,1,“New",1);5.2DSP軟件集成開發(fā)平臺(CCS)GEL語言的使用(續(xù))窗口類GEL函數(shù)(續(xù))GEL_Exit()
關閉當前活動的控制窗口。對只有一個處理器的系統(tǒng)而言,將直接關閉CCS。5.2DSP軟件集成開發(fā)平臺(CCS)GEL語言的使用(續(xù))程序加載類GEL函數(shù)GEL_Load(“fileName”,“cpuName”)
將目標文件(COFF文件)及相關符號加載入存儲器中。GEL_SymbolLoad(“fileName”,“cpuName”)5.2DSP軟件集成開發(fā)平臺(CCS)GEL語言的使用(續(xù))存儲器類GEL函數(shù)GEL_MapAdd(address,page,length,readable,writable)
設置存儲器映射中某塊目標存儲器的讀/寫屬性GEL_MapDelete(address,page)5.2DSP軟件集成開發(fā)平臺(CCS)GEL語言的使用(續(xù))存儲器類GEL函數(shù)(續(xù))GEL_MapOn():使能存儲器映射。GEL_MapOff():禁止存儲器映射。GEL_MemoryReset():復位存儲器映射。5.2DSP軟件集成開發(fā)平臺(CCS)GEL語言的使用(續(xù))存儲器類GEL函數(shù)(續(xù))Gel_MemoryFill(startAddress
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 超聲波和次聲波課件
- 《PDA發(fā)展與介紹》課件
- 單位管理制度展示大全【人事管理】十篇
- 單位管理制度展示大合集【人力資源管理篇】十篇
- 策略深度研究:當前還有哪些高股息值得關注
- 全程編制棉絲絨項目可行性研究報告方案可用于立項及銀行貸款+201
- 2024-2026年中國微信公眾號市場調(diào)查研究及行業(yè)投資潛力預測報告
- 可行性項目研究報告電子類
- 2024河南金屬及金屬礦批發(fā)市場前景及投資研究報告
- 2025年鹽酸酯項目可行性研究報告
- 2024年人教版八年級語文上冊期末考試卷(附答案)
- 遼寧省大連市2023-2024學年高三上學期雙基測試(期末考試) 物理 含解析
- 勞務分包的工程施工組織設計方案
- 18項醫(yī)療質(zhì)量安全核心制度
- 智能終端安全檢測
- 新能源發(fā)電技術 電子課件 1.4 新能源發(fā)電技術
- DB34-T 4859-2024 農(nóng)村河道清淤規(guī)范
- 中學物業(yè)管理服務采購投標方案(技術方案)
- 康復科年度工作亮點與展望計劃
- 冀教版二年級(上)數(shù)學加減乘除口算題卡
- 【期中考后反思】《反躬自省,砥礪奮進》-2022-2023學年初中主題班會課件
評論
0/150
提交評論