版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第4講281x軟件開(kāi)發(fā)過(guò)程
及CCS簡(jiǎn)介281x軟件開(kāi)發(fā)過(guò)程相對(duì)于龐大、復(fù)雜的匯編語(yǔ)言系統(tǒng)來(lái)說(shuō),C語(yǔ)言具有不可比擬的優(yōu)勢(shì).在大多數(shù)應(yīng)用場(chǎng)合下,推薦使用C語(yǔ)言來(lái)開(kāi)發(fā)DSP的軟件程序
一般來(lái)說(shuō)C編譯器與C++編譯器相比具有更高的編譯效率,同時(shí)隨著C編譯器的發(fā)展,利用C編譯器和C語(yǔ)言源文件所生成的目標(biāo)代碼,其執(zhí)行的效率已經(jīng)十分接近匯編語(yǔ)言程序4.1編程語(yǔ)言
281x軟件開(kāi)發(fā)過(guò)程4.2軟件開(kāi)發(fā)流程
DSP系統(tǒng)軟件開(kāi)發(fā)流程圖
281x軟件開(kāi)發(fā)過(guò)程存檔器允許用戶將一組文件集中起來(lái)歸入一個(gè)歸檔文件,該文件稱(chēng)作庫(kù)。宏語(yǔ)言匯編程序支持宏語(yǔ)言,這個(gè)功能能讓你編造自己的“指令”。當(dāng)在一個(gè)程序中需要多次執(zhí)行某個(gè)特定的任務(wù)時(shí),宏語(yǔ)言就顯得特別有用。C編譯器●
接收C語(yǔ)言源代碼并編譯成相應(yīng)的匯編語(yǔ)言的源代碼。包含:shell程序,優(yōu)化器和交互列表公用程序。281x軟件開(kāi)發(fā)過(guò)程鏈接器將所有的目標(biāo)文件連接起來(lái)組成一個(gè)可執(zhí)行的目標(biāo)程序模塊。完成以下任務(wù):將段分配到目標(biāo)系統(tǒng)中已配置的存儲(chǔ)器;重新定位符號(hào)和段,并給它們分配最后的地址;解析在輸入文件之間未定義的外部引用。匯編器匯編器(assembler)把匯編語(yǔ)言源文件翻譯成機(jī)器語(yǔ)言目標(biāo)文件。該機(jī)器語(yǔ)言是基于公用目標(biāo)文件格式(COFF)的。公用目標(biāo)文件格式(COFF)的最小單位叫做段(section)。段就是一組代碼或數(shù)據(jù),并將最終占據(jù)存儲(chǔ)器映像中連續(xù)的空間。281x軟件開(kāi)發(fā)過(guò)程交叉引用列表器交叉引用列表器(cross-referencelister)是軟件開(kāi)發(fā)的調(diào)試工具之一。它的輸入是連接后的目標(biāo)文件,產(chǎn)生一個(gè)交叉引用列表作為輸出。該列表文件顯示符號(hào)、它們的定義以及它們?cè)谶B接的源文件中的引用。絕對(duì)列表器絕對(duì)列表器(absolutelister)是一個(gè)調(diào)試工具,它將連接后的目標(biāo)文件作為輸入并創(chuàng)建.abs類(lèi)型的輸出文件。這些.abs文件經(jīng)匯編后產(chǎn)生一個(gè)顯示目標(biāo)代碼絕對(duì)地址的列表。281x軟件開(kāi)發(fā)過(guò)程16進(jìn)制轉(zhuǎn)換應(yīng)用程序大多數(shù)的EPROM編程器不能接收COFF目標(biāo)文件作為輸入,因此,利用十六進(jìn)制轉(zhuǎn)換應(yīng)用程序?qū)OFF目標(biāo)文件轉(zhuǎn)換為標(biāo)準(zhǔn)的ASCII碼十六進(jìn)制格式,使之能被EPROM編程器裝載。運(yùn)行時(shí)間支持函數(shù)
C程序所執(zhí)行的一些任務(wù)(如輸入/輸出,動(dòng)態(tài)存儲(chǔ)器配置,字符串操作,以及三角函數(shù))并不是C語(yǔ)言本身的一部分。(ANSI)C標(biāo)準(zhǔn)定義運(yùn)行時(shí)間支持函數(shù)用來(lái)執(zhí)行這些任務(wù)。
TMS320C28xx包含下列庫(kù):
如rts2800.lib為C/C++運(yùn)行支持庫(kù);而rts2800_ml.libC/C++則為大內(nèi)存模式運(yùn)行支持庫(kù)。281x軟件開(kāi)發(fā)過(guò)程4.3程序的編寫(xiě)
3種基本文件1)源文件C語(yǔ)言文件或者匯編語(yǔ)言文件,后綴為.c或者.asm,實(shí)現(xiàn)DSP要完成的功能2)頭文件,后綴為.h
定義寄存器映射地址、用戶用到的常量和自定義的寄存器3)命令文件,后綴為.cmd
對(duì)程序和數(shù)據(jù)存儲(chǔ)器空間進(jìn)行分配序號(hào)文件名主要內(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類(lèi)型的選擇(F2812或F2810)、常用標(biāo)量的定義等內(nèi)容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)定義序號(hào)文件名主要內(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對(duì)PIE中斷向量進(jìn)行初始化15DSP28_DefaultIsr.c包含了F2812所有外設(shè)中斷函數(shù)16DSP28_GlobalVariableDefs.c定義了F2812的全局變量和數(shù)據(jù)段程序281x軟件開(kāi)發(fā)過(guò)程LinkerCommandFileMEMORY{PAGE0:/*ProgramSpace*/ FLASH:org=0x3D8000,len=0x20000PAGE1:/*DataSpace*/ M0SARAM:org=0x000000,len=0x400 M1SARAM:org=0x000400,len=0x400}SECTIONS{ .text: > FLASH PAGE0 .ebss: >M0SARAM PAGE1 .cinit: >FLASH PAGE0 .stack: > M1SARAM PAGE1}281x軟件開(kāi)發(fā)過(guò)程PlacingSectionsinMemory.ebss.cinit.textMemoryM0SARAM(0x400)0x0000000x3D80000x000400M1SARAM(0x400)FLASH(0x20000)Sections.stack281x軟件開(kāi)發(fā)過(guò)程命令文件名的后綴為.cmd,命令文件實(shí)現(xiàn)對(duì)程序存儲(chǔ)器空間和數(shù)據(jù)存儲(chǔ)器空間的分配。文件常用的偽指令有Memory和Sections偽指令。Memory:用來(lái)標(biāo)示實(shí)際存在目標(biāo)系統(tǒng)中且可被使用的存儲(chǔ)器范圍,每個(gè)存儲(chǔ)器范圍具有名字,起始地址和長(zhǎng)度。Sections:描述輸入段怎樣被組合到輸出段內(nèi);在可執(zhí)行程序內(nèi)定義輸出段;規(guī)定在存儲(chǔ)器內(nèi)何處放置輸出段;允許重命名輸出段。命令文件.cmd281x軟件開(kāi)發(fā)過(guò)程Memory偽指令的一般語(yǔ)法PAGE
標(biāo)示存儲(chǔ)器空間。用戶可以規(guī)定多達(dá)255數(shù)據(jù)頁(yè)。PAGE0規(guī)定程序存儲(chǔ)器,PAGE1規(guī)定數(shù)據(jù)存儲(chǔ)器。name
命名存儲(chǔ)器范圍。存儲(chǔ)器可以是1至8個(gè)字符。在不同頁(yè)上的存儲(chǔ)器范圍可以具有相同的名字,但是在一頁(yè)之內(nèi)所有的存儲(chǔ)器范圍必須具有唯一的名字且必須不重疊。MEMORY{PAGE0:namel[(attr)]:origin=constant,length=constant;PAGEn:namen[(attr)]:origin=constant,length=constant;}attr
規(guī)定與已命名范圍有關(guān)的1~4個(gè)屬性。未規(guī)定屬性的存儲(chǔ)器具有所有4個(gè)屬性。有效的4個(gè)屬性包括:
R 表示存儲(chǔ)器可以讀出;
W 表示存儲(chǔ)器可以寫(xiě)入;
X 表示存儲(chǔ)器含有可執(zhí)行代碼;
I 表示存儲(chǔ)器可以初始化。origin
表示存儲(chǔ)器范圍的起始地址。length
表示存儲(chǔ)器范圍的長(zhǎng)度。281x軟件開(kāi)發(fā)過(guò)程SECTIONS{ name:[property,property,property,…] name:[property,property,property,…] name:[property,property,property,…]}以name(名字)開(kāi)始的段的規(guī)格說(shuō)明定義了一個(gè)輸出段。在段名之后是特性列表,定義段的內(nèi)容以及它們是怎樣被分配的,特性可以用逗號(hào)來(lái)分開(kāi).SECTIONS偽指令的一般語(yǔ)法281x軟件開(kāi)發(fā)過(guò)程段可能具有的特性:(1)裝載位置:規(guī)定段將被裝載在存儲(chǔ)器內(nèi)何處;(2)運(yùn)行位置:定義段將在存儲(chǔ)器內(nèi)何處運(yùn)行;(3)輸入段:定義組成輸出段的輸入段;(4)段類(lèi)型:定義特定段類(lèi)型的標(biāo)志;(5)填充值:定義用于填充未初始化空位的數(shù)值。.cinit 該段標(biāo)示部分存放已明確初始化的全局變量和靜態(tài)變量;.const 該段標(biāo)示存放已明確初始化的字符串常量、全局常量和靜態(tài)常量;.switch該段標(biāo)示部分存放對(duì)于大型的switch語(yǔ)句的跳轉(zhuǎn)表;.text 該段標(biāo)示部分存放可執(zhí)行代碼和浮點(diǎn)數(shù)常量;.ebss 標(biāo)示部分用于存放沒(méi)有初始化的全局變量和靜態(tài)變量;.stack 定義軟件堆棧。4.4C語(yǔ)言對(duì)DSP寄存器的操作寄存器變量的定義方式281x軟件開(kāi)發(fā)過(guò)程“位域”數(shù)據(jù)結(jié)構(gòu)struct位域結(jié)構(gòu)名{類(lèi)型說(shuō)明符位域名1:位域長(zhǎng)度…類(lèi)型說(shuō)明符位域名1:位域長(zhǎng)度};例:structbs//定義位域bs{inta:8;intb:2;intc:6;};281x軟件開(kāi)發(fā)過(guò)程structSCICCR_BITS{Uint16SCICHAR:3;//2:0字符長(zhǎng)度控制位
Uint16ADDRIDLE_MODE:1;//3多處理器模式控制位
Uint16LOOPBKENA:1;//4回送測(cè)試模式使能位
Uint16PARITYENA:1;//5極性使能位
Uint16PARITY:1;//6奇/偶極性選擇位
Uint16STOPBITS:1;//7停止位個(gè)數(shù)
Uint16rsvd1:8;//15:8保留};structSCICCR_BITSbit;bit.SCICHAR=7;//SCI字符長(zhǎng)度控制位為8位聲明共同體281x軟件開(kāi)發(fā)過(guò)程unionSCICCR_REG{Uint16all;//可實(shí)現(xiàn)對(duì)寄存器整體操作
structSCICCR_BITSbit;//可實(shí)現(xiàn)位操作};
unionSCICCR_REGSCICCR;SCICCR.all=0x007F;SCICCR.bit.SCICHAR=5;創(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)先級(jí)控制寄存器};externvolatilestructSCI_REGSSciaRegs;externvolatilestructSCI_REGSScibRegs;例
對(duì)SCICCR按位進(jìn)行操作281x軟件開(kāi)發(fā)過(guò)程SciaRegs.SCICCR.bit.STOPBITS=0;//1位停止位
SciaRegs.SCICCR.bit.PARITYENA=0;//禁止極性功能
SciaRegs.SCICCR.bit.LOOPBKENA=0;//禁止回送測(cè)試模式功能
SciaRegs.SCICCR.bit.ADDRIDLE_MODE=0;//空閑線模式
SciaRegs.SCICCR.bit.SCICHAR=7;//8位數(shù)據(jù)位SciaRegs.SCICCR.all=0x0007;例
對(duì)SCICCR整體進(jìn)行操作SciaRegs.SCIHBAUD=0;//Unit16類(lèi)型,直接給寄存器整體賦值SciaRegs.SCILBAUD=0xF3;寄存器文件的空間分配281x軟件開(kāi)發(fā)過(guò)程使用DATA_SECTION方法將寄存器文件分配到數(shù)據(jù)空間將數(shù)據(jù)段映射到寄存器對(duì)應(yīng)的存儲(chǔ)空間#pragmaDATA_SECTION(SciaRegs,"SciaRegsFile");volatilestructSCI_REGSSciaRegs;#pragmaDATA_SECTION(ScibRegs,"ScibRegsFile");volatilestructSCI_REGSScibRegs;將數(shù)據(jù)段映射到寄存器對(duì)應(yīng)的存儲(chǔ)空間281x軟件開(kāi)發(fā)過(guò)程MEMORY{
……PAGE1:SCI_A:origin=0x007050,length=0x000010SCI_B:origin=0x007750,length=0x000010
……}SECTIONS{
……SciaRegsFile:>SCI_A,PAGE=1ScibRegsFile:>SCI_B,PAGE=1
……}281x軟件開(kāi)發(fā)過(guò)程4.5CCS的技術(shù)概述CodeComposerStudioTM硬件
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 44957-2024人工影響天氣作業(yè)點(diǎn)防雷技術(shù)規(guī)范
- 2025年上海市徐匯區(qū)高三語(yǔ)文一模作文解析與范文:突破與接受自身局限
- 持久性隆起性紅斑的臨床護(hù)理
- 部編人教版八年級(jí)歷史上冊(cè)教案
- 《證劵技術(shù)分析》課件
- 《數(shù)學(xué)規(guī)劃》課件
- 《第一章》課件-1.2人生智能的發(fā)展
- 2021年動(dòng)力鋰電行業(yè)億緯鋰能分析報(bào)告
- 《機(jī)床電氣線路的安裝與調(diào)試》課件-第2章
- 《自動(dòng)控制原理》課件第11章
- 《報(bào)批報(bào)建工作》課件
- 2024年商業(yè)流通倉(cāng)儲(chǔ)服務(wù)項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告模板
- 統(tǒng)編版(2024版)七年級(jí)上冊(cè)歷史期末復(fù)習(xí)課件
- 國(guó)家開(kāi)放大學(xué)專(zhuān)科《機(jī)械制圖》一平臺(tái)機(jī)考真題及答案(第一套)
- 2024青海海東市水務(wù)集團(tuán)限責(zé)任公司招聘27人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 幼兒園大班音樂(lè)《獻(xiàn)上最美的哈達(dá)》課件
- 2024年世界職業(yè)院校技能大賽高職組“智慧金融組”賽項(xiàng)參考試題庫(kù)(含答案)
- 2024房地產(chǎn)中介經(jīng)紀(jì)人勞動(dòng)合同
- 光伏發(fā)電系統(tǒng)設(shè)計(jì)
- 2024-2030年中國(guó)電梯維修保養(yǎng)行業(yè)運(yùn)營(yíng)現(xiàn)狀及投資戰(zhàn)略研究報(bào)告
- 小學(xué)二年級(jí)數(shù)學(xué)上冊(cè)-加減乘除法口算題800道
評(píng)論
0/150
提交評(píng)論