1628DSP04軟件開發(fā)過程_第1頁
1628DSP04軟件開發(fā)過程_第2頁
1628DSP04軟件開發(fā)過程_第3頁
1628DSP04軟件開發(fā)過程_第4頁
1628DSP04軟件開發(fā)過程_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第4講

281x軟件開發(fā)過程編程語言選擇軟件開發(fā)流程281x源程序的編寫C語言對DSP寄存器的操作CCS開發(fā)環(huán)境簡介1直接與硬件打交道,執(zhí)行效率最高,但可移植性差。C編譯器與C++編譯器相比具有更高的編譯效率,隨著C編譯器的發(fā)展,利用C編譯器和C語言源文件所生成的目標(biāo)代碼,效率已經(jīng)十分接近匯編語言程序。4.1編程語言C語言匯編語言在大多數(shù)應(yīng)用場合,推薦使用C語言開發(fā)DSP程序。24.2軟件開發(fā)流程DSP系統(tǒng)軟件開發(fā)流程圖

3允許用戶將一組文件集中起來歸入一個歸檔文件,該文件稱作庫。匯編程序支持宏語言,這個功能能讓你編造自己的“指令”。接收C語言源代碼并編譯成相應(yīng)的匯編語言的源代碼。4.2軟件開發(fā)流程存檔器宏語言C編譯器4將目標(biāo)文件連接起來組成一個可執(zhí)行的目標(biāo)程序模塊:將段分配到目標(biāo)系統(tǒng)中已配置的存儲器;重新定位符號和段,并給它們分配最后的地址;解析在輸入文件之間未定義的外部引用。匯編器(assembler)把匯編語言源文件翻譯成機(jī)器語言目標(biāo)文件。該機(jī)器語言是基于公用目標(biāo)文件格式(COFF)。COFF的最小單位叫做段(section)。4.2軟件開發(fā)流程鏈接器匯編器5交叉引用列表器(cross-referencelister)是調(diào)試工具之一。它的輸入是連接后的目標(biāo)文件,產(chǎn)生一個交叉引用列表作為輸出。該列表文件顯示符號、它們的定義以及它們在連接的源文件中的引用。

絕對列表器(absolutelister)是一個調(diào)試工具,它將連接后的目標(biāo)文件作為輸入并創(chuàng)建.abs類型的輸出文件。.abs文件產(chǎn)生目標(biāo)代碼絕對地址的列表。4.2軟件開發(fā)流程交叉引用列表器絕對列表器6大多數(shù)的EPROM編程器不能接收COFF目標(biāo)文件作為輸入,利用十六進(jìn)制轉(zhuǎn)換應(yīng)用程序?qū)OFF目標(biāo)文件轉(zhuǎn)換為標(biāo)準(zhǔn)的ASCII碼十六進(jìn)制格式。C程序的一些任務(wù)(如字符串操作,以及三角函數(shù))并不是C語言本身的一部分,通過運(yùn)行時(shí)間支持函數(shù)用來執(zhí)行這些任務(wù)。TMS320C28xx包含下列庫:

如rts2800.lib為C/C++運(yùn)行支持庫;而rts2800_ml.libC/C++則為大內(nèi)存模式運(yùn)行支持庫。4.2軟件開發(fā)流程16進(jìn)制轉(zhuǎn)換應(yīng)用程序運(yùn)行時(shí)間支持函數(shù)74.3程序的編寫1)源文件C語言文件或者匯編語言文件,后綴為.c或者.asm,實(shí)現(xiàn)DSP要完成的功能2)頭文件,后綴為.h

定義寄存器映射地址、用戶用到的常量和自定義的寄存器3)命令文件,后綴為.cmd

對程序和數(shù)據(jù)存儲器空間進(jìn)行分配

3種基本文件8序號頭文件名(.h)主要內(nèi)容1DSP28_Adc.h模數(shù)轉(zhuǎn)換(ADC)寄存器的相關(guān)定義2DSP28_CpuTimers.h32位CPU定時(shí)器寄存器的相關(guān)定義3DSP28_DefaultISR.hF2812默認(rèn)中斷服務(wù)程序的定義4DSP28_DevEmu.hF2812硬件仿真寄存器的相關(guān)定義5DSP28_Device.h包含所有的頭文件、目標(biāo)CPU類型的選擇6DSP28_Ecan.h增強(qiáng)型CAN寄存器的相關(guān)定義7DSP28_Ev.h事件管理器(EV)寄存器的定義8DSP28_GlobalPrototypes.h全局函數(shù)的聲明9DSP28_Gpio.h通用輸入輸出(Gpio)寄存器相關(guān)定義10DSP28_McBsp.h多通道緩沖串行口(McBsp)寄存器相關(guān)定義11DSP28_PieCtrl.hPIE控制寄存器的相關(guān)定義12DSP28_PieVect.hPIE中斷向量表的定義13DSP28_Sci.h串行通信接口(SCI)寄存器的相關(guān)定義14DSP28_Spi.h串行外圍設(shè)備接口(SPI)寄存器的相關(guān)定義15DSP28_SysCtrl.h系統(tǒng)控制寄存器的相關(guān)定義16DSP28_Xintf.h外部接口寄存器的相關(guān)定義17DSP28_XIntrupt.h外部中斷寄存器的相關(guān)定義9序號源文件名(.c)主要內(nèi)容1DSP28_Adc.cAD初始化函數(shù)2DSP28_CpuTimers.cCPU定時(shí)器初始化函數(shù)3DSP28_ECan.c增強(qiáng)型Can初始化函數(shù)4DSP28_Ev.c事件管理器Ev初始化函數(shù)5DSP28_Gpio.c通用I/O模塊初始化函數(shù)6DSP28_Mcbsp.c多通道緩沖串行口初始化函數(shù)7DSP28_Sci.c串行通信接口初始化函數(shù)8DSP28_Spi.c串行外圍接口初始化函數(shù)9DSP28_SysCtrl.c系統(tǒng)控制模塊初始化函數(shù)10DSP28_Xintf.c外部接口初始化函數(shù)11DSP28_XIntrupt外部中斷初始化函數(shù)12DSP28_InitPeripherals.c包含了其他的外設(shè)初始化函數(shù)13DSP28_PieCtrl.cPIE控制模塊初始化函數(shù)14DSP28_PieVect.c對PIE中斷向量進(jìn)行初始化15DSP28_DefaultIsr.c包含了F2812所有外設(shè)中斷函數(shù)16DSP28_GlobalVariableDefs.c定義了F2812的全局變量和數(shù)據(jù)段程序10連接命令文件實(shí)現(xiàn)對程序存儲器空間和數(shù)據(jù)存儲器空間的分配,常用偽指令為Memory和Sections偽指令。Memory:用來標(biāo)示實(shí)際存在目標(biāo)系統(tǒng)中且可被使用的存儲器范圍,每個存儲器范圍具有名字,起始地址和長度。Sections:描述輸入段怎樣被組合到輸出段內(nèi);在可執(zhí)行程序內(nèi)定義輸出段;規(guī)定在存儲器內(nèi)何處放置輸出段;允許重命名輸出段。連接命令文件.cmd4.3程序的編寫11PlacingSectionsinMemory.ebss.cinit.textMemoryM0SARAM(0x400)0x0000000x3D80000x000400M1SARAM(0x400)FLASH(0x20000)Sections.stack4.3程序的編寫12Memory偽指令的一般語法MEMORY{PAGE0:namel[(attr)]:origin=constant,length=constant;PAGEn:namen[(attr)]:origin=constant,length=constant;}attr

規(guī)定與已命名范圍有關(guān)的1~4個屬性。

R 表示存儲器可以讀出;

W 表示存儲器可以寫入;

X 表示存儲器含有可執(zhí)行代碼;

I 表示存儲器可以初始化。origin

表示存儲器范圍的起始地址。length

表示存儲器范圍的長度。4.3程序的編寫13SECTIONS{ name:[property,property,property,…] name:[property,property,property,…] name:[property,property,property,…]}以name(名字)開始的段的規(guī)格說明定義了一個輸出段。段可能具有的特性:(1)裝載位置:規(guī)定段將被裝載在存儲器內(nèi)何處;(2)運(yùn)行位置:定義段將在存儲器內(nèi)何處運(yùn)行;(3)輸入段:定義組成輸出段的輸入段;(4)段類型:定義特定段類型的標(biāo)志;(5)填充值:定義用于填充未初始化空位的數(shù)值。SECTIONS偽指令的一般語法4.3程序的編寫14MEMORY{PAGE0:/*ProgramSpace*/ FLASH:org=0x3D8000,len=0x20000PAGE1:/*DataSpace*/ M0SARAM:org=0x000000,len=0x400

}SECTIONS{ .text: > FLASH PAGE0 .stack: > M1SARAM PAGE1}4.3程序的編寫連接命令文件(.cmd)154.4C語言對DSP寄存器的操作寄存器變量的定義方式struct位域結(jié)構(gòu)名{類型說明符位域名1:位域長度類型說明符位域名2:位域長度…類型說明符位域名n:位域長度};例:structbs

//定義位域bs{inta:8;intb:2;intc:6;};“位域”數(shù)據(jù)結(jié)構(gòu)16structSCICCR_BITS{Uint16SCICHAR:3;

//2:0字符長度控制位

Uint16ADDRIDLE_MODE:1;

//3多處理器模式控制位

Uint16LOOPBKENA:1;//4回送測試模式使能位

Uint16PARITYENA:1;//5極性使能位

Uint16PARITY:1;//6奇/偶極性選擇位

Uint16STOPBITS:1;//7停止位個數(shù)

Uint16rsvd1:8;//15:8保留};structSCICCR_BITSbit;bit.SCICHAR=7;//SCI字符長度控制位為8位4.4C語言對DSP寄存器的操作17聲明共同體unionSCICCR_REG{Uint16all;//可實(shí)現(xiàn)對寄存器整體操作

structSCICCR_BITSbit;

//可實(shí)現(xiàn)位操作};

unionSCICCR_REGSCICCR;//定義并使用SCICCR.all=0x007F; //整體操作SCICCR.bit.SCICHAR=5;//位操作4.4C語言對DSP寄存器的操作18創(chuàng)建結(jié)構(gòu)體文件structSCI_REGS{unionSCICCR_REGSCICCR;

//通信控制寄存器

unionSCICTL1_REGSCICTL1;

//控制寄存器1Uint16SCIHBAUD;

//波特率寄存器(高字節(jié))Uint16SCILBAUD;

//波特率寄存器(低字節(jié))unionSCICTL2_REGSCICTL2;

//控制寄存器2unionSCIRXST_REGSCIRXST;

//接收狀態(tài)寄存器

Uint16SCIRXEMU;

//接收仿真緩沖寄存器

unionSCIRXBUF_REGSCIRXBUF;

//接收數(shù)據(jù)寄存器

Uint16rsvd1;

//保留

Uint16SCITXBUF;

//發(fā)送數(shù)據(jù)緩沖寄存器

unionSCIFFTX_REGSCIFFTX;

//FIFO發(fā)送寄存器

unionSCIFFRX_REGSCIFFRX;

//FIFO接收寄存器

unionSCIFFCT_REGSCIFFCT;

//FIFO控制寄存器

Uint16rsvd2;

//保留

Uint16rsvd3;

//保留

unionSCIPRI_REGSCIPRI;

//FIFO優(yōu)先級控制寄存器};externvolatilestructSCI_REGSSciaRegs;externvolatilestructSCI_REGSScibRegs;19例

對SCICCR按位進(jìn)行操作SciaRegs.SCICCR.bit.STOPBITS=0;//1位停止位

SciaRegs.SCICCR.bit.PARITYENA=0;

//禁止極性功能

SciaRegs.SCICCR.bit.LOOPBKENA=0;//禁止回送測試模式功能

SciaRegs.SCICCR.bit.ADDRIDLE_MODE=0;//空閑線模式

SciaRegs.SCICCR.bit.SCICHAR=7;

//8位數(shù)據(jù)位SciaRegs.SCICCR.all=0x0007;例

對SCICCR整體進(jìn)行操作SciaRegs.SCIHBAUD=0;//Unit16類型,直接給寄存器整體賦值SciaRegs.SCILBAUD=0xF3;4.4C語言對DSP寄存器的操作20使用DATA_SECTION方法將寄存器文件分配到數(shù)據(jù)空間將數(shù)據(jù)段映射到寄存器對應(yīng)的存儲空間#pragmaDATA_SECTION(SciaRegs,"SciaRegsFile");volatilestructSCI_REGSSciaRegs;#pragmaDATA_SECTION(ScibRegs,"ScibRegsFile");volatilestructSCI_REGSScibRegs;4.4C語言對DSP寄存器的操作寄存器文件的空間分配21將數(shù)據(jù)段映射到寄存器對應(yīng)的存儲空間MEMORY{

……PAGE1:SCI_A:origin=0x007050,length=0x000010SCI_B:origin=0x007750,length=0x000010

……}SECTIONS{

……SciaRegsFile:>SCI_A,PAGE=1ScibRegsFile:>SCI_B,PAGE=1

……}4.4C語言對DSP寄存器的操作224.5CCS的技術(shù)概述CodeComposerStudioTM硬件配置工程管理IDE編輯環(huán)境實(shí)時(shí)組件編譯的高效率高效的

VLIW組件IDE調(diào)試

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論