




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4讲281x软件开发过程
及CCS简介281x软件开发过程相对于庞大、复杂的汇编语言系统来说,C语言具有不可比拟的优势.在大多数应用场合下,推荐使用C语言来开发DSP的软件程序
一般来说C编译器与C++编译器相比具有更高的编译效率,同时随着C编译器的发展,利用C编译器和C语言源文件所生成的目标代码,其执行的效率已经十分接近汇编语言程序4.1编程语言
281x软件开发过程4.2软件开发流程
DSP系统软件开发流程图
281x软件开发过程存档器允许用户将一组文件集中起来归入一个归档文件,该文件称作库。宏语言汇编程序支持宏语言,这个功能能让你编造自己的“指令”。当在一个程序中需要多次执行某个特定的任务时,宏语言就显得特别有用。C编译器●
接收C语言源代码并编译成相应的汇编语言的源代码。包含:shell程序,优化器和交互列表公用程序。281x软件开发过程链接器将所有的目标文件连接起来组成一个可执行的目标程序模块。完成以下任务:将段分配到目标系统中已配置的存储器;重新定位符号和段,并给它们分配最后的地址;解析在输入文件之间未定义的外部引用。汇编器汇编器(assembler)把汇编语言源文件翻译成机器语言目标文件。该机器语言是基于公用目标文件格式(COFF)的。公用目标文件格式(COFF)的最小单位叫做段(section)。段就是一组代码或数据,并将最终占据存储器映像中连续的空间。281x软件开发过程交叉引用列表器交叉引用列表器(cross-referencelister)是软件开发的调试工具之一。它的输入是连接后的目标文件,产生一个交叉引用列表作为输出。该列表文件显示符号、它们的定义以及它们在连接的源文件中的引用。绝对列表器绝对列表器(absolutelister)是一个调试工具,它将连接后的目标文件作为输入并创建.abs类型的输出文件。这些.abs文件经汇编后产生一个显示目标代码绝对地址的列表。281x软件开发过程16进制转换应用程序大多数的EPROM编程器不能接收COFF目标文件作为输入,因此,利用十六进制转换应用程序将COFF目标文件转换为标准的ASCII码十六进制格式,使之能被EPROM编程器装载。运行时间支持函数
C程序所执行的一些任务(如输入/输出,动态存储器配置,字符串操作,以及三角函数)并不是C语言本身的一部分。(ANSI)C标准定义运行时间支持函数用来执行这些任务。
TMS320C28xx包含下列库:
如rts2800.lib为C/C++运行支持库;而rts2800_ml.libC/C++则为大内存模式运行支持库。281x软件开发过程4.3程序的编写
3种基本文件1)源文件C语言文件或者汇编语言文件,后缀为.c或者.asm,实现DSP要完成的功能2)头文件,后缀为.h
定义寄存器映射地址、用户用到的常量和自定义的寄存器3)命令文件,后缀为.cmd
对程序和数据存储器空间进行分配序号文件名主要内容1DSP28_Adc.h模数转换(ADC)寄存器的相关定义2DSP28_CpuTimers.h32位CPU定时器寄存器的相关定义3DSP28_DefaultISR.hF2812默认中断服务程序的定义4DSP28_DevEmu.hF2812硬件仿真寄存器的相关定义5DSP28_Device.h包含所有的头文件、目标CPU类型的选择(F2812或F2810)、常用标量的定义等内容6DSP28_Ecan.h增强型CAN寄存器的相关定义7DSP28_Ev.h事件管理器(EV)寄存器的定义8DSP28_GlobalPrototypes.h全局函数的声明9DSP28_Gpio.h通用输入输出(Gpio)寄存器相关定义10DSP28_McBsp.h多通道缓冲串行口(McBsp)寄存器相关定义11DSP28_PieCtrl.hPIE控制寄存器的相关定义12DSP28_PieVect.hPIE中断向量表的定义13DSP28_Sci.h串行通信接口(SCI)寄存器的相关定义14DSP28_Spi.h串行外围设备接口(SPI)寄存器的相关定义15DSP28_SysCtrl.h系统控制寄存器的相关定义16DSP28_Xintf.h外部接口寄存器的相关定义17DSP28_XIntrupt.h外部中断寄存器的相关定义序号文件名主要内容1DSP28_Adc.cAD初始化函数2DSP28_CpuTimers.cCPU定时器初始化函数3DSP28_ECan.c增强型Can初始化函数4DSP28_Ev.c事件管理器Ev初始化函数5DSP28_Gpio.c通用I/O模块初始化函数6DSP28_Mcbsp.c多通道缓冲串行口初始化函数7DSP28_Sci.c串行通信接口初始化函数8DSP28_Spi.c串行外围接口初始化函数9DSP28_SysCtrl.c系统控制模块初始化函数10DSP28_Xintf.c外部接口初始化函数11DSP28_XIntrupt外部中断初始化函数12DSP28_InitPeripherals.c包含了其他的外设初始化函数13DSP28_PieCtrl.cPIE控制模块初始化函数14DSP28_PieVect.c对PIE中断向量进行初始化15DSP28_DefaultIsr.c包含了F2812所有外设中断函数16DSP28_GlobalVariableDefs.c定义了F2812的全局变量和数据段程序281x软件开发过程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软件开发过程PlacingSectionsinMemory.ebss.cinit.textMemoryM0SARAM(0x400)0x0000000x3D80000x000400M1SARAM(0x400)FLASH(0x20000)Sections.stack281x软件开发过程命令文件名的后缀为.cmd,命令文件实现对程序存储器空间和数据存储器空间的分配。文件常用的伪指令有Memory和Sections伪指令。Memory:用来标示实际存在目标系统中且可被使用的存储器范围,每个存储器范围具有名字,起始地址和长度。Sections:描述输入段怎样被组合到输出段内;在可执行程序内定义输出段;规定在存储器内何处放置输出段;允许重命名输出段。命令文件.cmd281x软件开发过程Memory伪指令的一般语法PAGE
标示存储器空间。用户可以规定多达255数据页。PAGE0规定程序存储器,PAGE1规定数据存储器。name
命名存储器范围。存储器可以是1至8个字符。在不同页上的存储器范围可以具有相同的名字,但是在一页之内所有的存储器范围必须具有唯一的名字且必须不重叠。MEMORY{PAGE0:namel[(attr)]:origin=constant,length=constant;PAGEn:namen[(attr)]:origin=constant,length=constant;}attr
规定与已命名范围有关的1~4个属性。未规定属性的存储器具有所有4个属性。有效的4个属性包括:
R 表示存储器可以读出;
W 表示存储器可以写入;
X 表示存储器含有可执行代码;
I 表示存储器可以初始化。origin
表示存储器范围的起始地址。length
表示存储器范围的长度。281x软件开发过程SECTIONS{ name:[property,property,property,…] name:[property,property,property,…] name:[property,property,property,…]}以name(名字)开始的段的规格说明定义了一个输出段。在段名之后是特性列表,定义段的内容以及它们是怎样被分配的,特性可以用逗号来分开.SECTIONS伪指令的一般语法281x软件开发过程段可能具有的特性:(1)装载位置:规定段将被装载在存储器内何处;(2)运行位置:定义段将在存储器内何处运行;(3)输入段:定义组成输出段的输入段;(4)段类型:定义特定段类型的标志;(5)填充值:定义用于填充未初始化空位的数值。.cinit 该段标示部分存放已明确初始化的全局变量和静态变量;.const 该段标示存放已明确初始化的字符串常量、全局常量和静态常量;.switch该段标示部分存放对于大型的switch语句的跳转表;.text 该段标示部分存放可执行代码和浮点数常量;.ebss 标示部分用于存放没有初始化的全局变量和静态变量;.stack 定义软件堆栈。4.4C语言对DSP寄存器的操作寄存器变量的定义方式281x软件开发过程“位域”数据结构struct位域结构名{类型说明符位域名1:位域长度…类型说明符位域名1:位域长度};例:structbs//定义位域bs{inta:8;intb:2;intc:6;};281x软件开发过程structSCICCR_BITS{Uint16SCICHAR:3;//2:0字符长度控制位
Uint16ADDRIDLE_MODE:1;//3多处理器模式控制位
Uint16LOOPBKENA:1;//4回送测试模式使能位
Uint16PARITYENA:1;//5极性使能位
Uint16PARITY:1;//6奇/偶极性选择位
Uint16STOPBITS:1;//7停止位个数
Uint16rsvd1:8;//15:8保留};structSCICCR_BITSbit;bit.SCICHAR=7;//SCI字符长度控制位为8位声明共同体281x软件开发过程unionSCICCR_REG{Uint16all;//可实现对寄存器整体操作
structSCICCR_BITSbit;//可实现位操作};
unionSCICCR_REGSCICCR;SCICCR.all=0x007F;SCICCR.bit.SCICHAR=5;创建结构体文件structSCI_REGS{unionSCICCR_REGSCICCR;//通信控制寄存器
unionSCICTL1_REGSCICTL1;//控制寄存器1Uint16SCIHBAUD;//波特率寄存器(高字节)Uint16SCILBAUD;//波特率寄存器(低字节)unionSCICTL2_REGSCICTL2;//控制寄存器2unionSCIRXST_REGSCIRXST;//接收状态寄存器
Uint16SCIRXEMU;//接收仿真缓冲寄存器
unionSCIRXBUF_REGSCIRXBUF;//接收数据寄存器
Uint16rsvd1;//保留
Uint16SCITXBUF;//发送数据缓冲寄存器
unionSCIFFTX_REGSCIFFTX;//FIFO发送寄存器
unionSCIFFRX_REGSCIFFRX;//FIFO接收寄存器
unionSCIFFCT_REGSCIFFCT;//FIFO控制寄存器
Uint16rsvd2;//保留
Uint16rsvd3;//保留
unionSCIPRI_REGSCIPRI;//FIFO优先级控制寄存器};externvolatilestructSCI_REGSSciaRegs;externvolatilestructSCI_REGSScibRegs;例
对SCICCR按位进行操作281x软件开发过程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位数据位SciaRegs.SCICCR.all=0x0007;例
对SCICCR整体进行操作SciaRegs.SCIHBAUD=0;//Unit16类型,直接给寄存器整体赋值SciaRegs.SCILBAUD=0xF3;寄存器文件的空间分配281x软件开发过程使用DATA_SECTION方法将寄存器文件分配到数据空间将数据段映射到寄存器对应的存储空间#pragmaDATA_SECTION(SciaRegs,"SciaRegsFile");volatilestructSCI_REGSSciaRegs;#pragmaDATA_SECTION(ScibRegs,"ScibRegsFile");volatilestructSCI_REGSScibRegs;将数据段映射到寄存器对应的存储空间281x软件开发过程MEMORY{
……PAGE1:SCI_A:origin=0x007050,length=0x000010SCI_B:origin=0x007750,length=0x000010
……}SECTIONS{
……SciaRegsFile:>SCI_A,PAGE=1ScibRegsFile:>SCI_B,PAGE=1
……}281x软件开发过程4.5CCS的技术概述CodeComposerStudioTM硬件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年全国汽车知识技能大赛理论知识竞赛题库及答案
- 2025年行政管理经济法试题及答案解析
- 2025年二级消防工程师模拟练习及答案
- 2025年低压电工作业安全生产模拟考试题库及答案
- 2025年安徽初级保育员理论及技能知识竞赛题库及答案
- 2025年高校教师岗前培训高等教育心理学知识竞赛考试题库80题及答案
- 2025年传染病疫情信息报告管理培训考核试题及答案
- 语音合成系统的人机交互设计原则考核试卷
- 医药行业风险管理中的新兴技术影响分析考核试卷
- 专科护理人文关怀教育考核试卷
- 钢结构加工厂建设项目可研报告
- 《PLC应用技术项目化教程(西门子S7-1200)》高职全套教学课件
- 2025-2030年碳化硅密封环项目商业计划书
- 2025年专职人员考试试题及答案
- 青海盐湖海虹公司“6.16”烫伤事故调查报告
- 2025年国网配电线路专业技能竞赛理论试题库大全-下(判断题)
- 内墙抹灰班组劳务分包合同范本
- 《2025 NCCN子宫颈癌临床实践指南》解读
- 《吸入装置使用》课件
- 急危重症护理学试题库+答案
- 课件:《科学社会主义概论(第二版)》导论
评论
0/150
提交评论