版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
杨词慧yangcihui@2012.10DSP原理及应用——DSP应用系统的开发环境第
5章
DSP应用系统的开发环境5.1DSP编程基础5.2DSP软件集成开发平台(CCS)5.1DSP编程基础主要的软件开发工具及其联系C编译器:产生汇编语言源代码汇编器:将汇编语言源文件翻译成机器语言目标文件,机器语言格式为公共目标文件格式(COFF)连接器:将多个目标文件组合成单个可执行目标模块。软件模拟器5.1DSP编程基础公共目标文件格式(COFF)COFF:CommonObjectFileFormat,公共目标文件格式不仅用于目标文件,库文件和可执行文件也经常是这种格式文件头可选头段落头1……段落头n段落数据重定位表行号表符号表字符串表COFF的文件结构文件头用C的结构描述如下:typedef
struct{ unsignedshortusMagic; //平台标识
unsignedshortusNumSec; //段落数
unsignedlongulTime; //时间戳
unsignedlongulSymbolOffset; //符号表偏移
unsignedlongulNumSymbol; //符号数
unsignedshortusOptHdrSZ; //可选头长度
unsignedshortusFlags; //文件标记}FILEHDR;5.1DSP编程基础公共目标文件格式(COFF)文件头usMagic:魔法数字,在I386平台上的值为0x014c。若不为此值,就不是一个I386平台的COFF文件。usNumSec:描述段落数量ulTime:描述COFF文件的建立时间5.1DSP编程基础公共目标文件格式(COFF)文件头ulSymbolOffset:符号表在文件中的偏移量,从文件头开始计数ulNumSymbol:符号表中符号记录的数量usFlag:COFF文件的属性标记可选头用C的结构描述如下:typedef
struct{ unsignedshortusMagic; //魔法数字
unsignedshortusVersion; //版本标识
unsignedlongulTextSize; //正文段大小
unsignedlongulInitDataSZ; //已初始化数据段大小
unsignedlongulUninitDataSZ; //未初始化数据段大小
unsignedlongulEntry; //入口点
unsignedlongulTextBase; //正文段基址
unsignedlongulDataBase; //数据段基址}OPTHDR;段落头用C的结构描述如下:typedef
struct{ charcName[8]; //段名
unsignedlongulVSize; //虚拟大小
unsignedlongulVAddr; //虚拟地址
unsignedlongulSize; //段长度
unsignedlongulSecOffset; //段数据偏移
unsignedlongulRelOffset; //段重定位表偏移
unsignedlongulLNOffset; //行号表偏移
unsignedshortulNumRel; //重定位表长度
unsignedshortulNumLN; //行号表长度
unsignedlongulFlags; //段标识}SECHDR;5.1DSP编程基础公共目标文件格式(COFF)段落头cName:用来保存段名,常用的段名有.text,.data,.comment,.bss等。ulVSize:段数据载入内存时的大小。只在可执行文件中有效,在目标文件中总为0。5.1DSP编程基础公共目标文件格式(COFF)段落头ulVAddr:段数据载入或连接时的虚拟地址。ulSize:段中数据的实际长度。ulSecOffset:段数据在COFF文件中的偏移量。5.1DSP编程基础公共目标文件格式(COFF)段落头ulRelOffset:段重定位信息的偏移量ulLNOffset:该段的行号表的偏移量ulNumRel:重定位信息的记录数ulNumLN:行号信息的记录数ulFlags:该段的属性标识。5.1DSP编程基础公共目标文件格式(COFF)段落数据是COFF文件中最大的段,每个段落真正的数据就保存在这个位置。每个段落都用一个段落头来描述。5.1DSP编程基础公共目标文件格式(COFF)重定位表重定位:将逻辑地址空间变成内存中的实际物理地址空间的过程。重定位表:保存的是各个段的重定位信息,所有段的重定位信息都在这个表里。5.1DSP编程基础公共目标文件格式(COFF)重定位表中记录的结构typedef
struct{
unsignedlongulAddr; //定位偏移
unsignedlongulSymbol; //符号索引
unsignedshortusType; //定位类型}RELOC;5.1DSP编程基础值名称说明6RELOC_ADDR3232位绝对定位20RELOC_REL3232位相对定位定位方式代码及说明5.1DSP编程基础公共目标文件格式(COFF)绝对定位符号绝对地址=段偏移+符号偏移
相对定位当前地址=定位偏移+当前段偏移+机器字长÷8相对地址=符号绝对地址-当前地址i386平台上最常用的两个种定位方式的标识5.1DSP编程基础公共目标文件格式(COFF)行号表建立可执行的二进制代码与源代码的行号的对映关系。typedef
struct{
unsignedlongulAddrORSymbol;
unsignedshortusLineNo;}LINENO;5.1DSP编程基础公共目标文件格式(COFF)符号表用来保存符号信息的一张表,也是COFF文件中最为复杂的一张表所有段落使用到的符号都在这个表里它也是由很多条记录组成符号表每条记录的结构:typedef
struct{
union{
charcName[8]; //符号名称
struct{
unsignedlongulZero; //字符串表标识
unsignedlongulOffset; //字符串偏移
};
};
unsignedlongulValue; //符号值
shortiSection; //符号所在段
unsignedshortusType; //符号类型
unsignedcharusClass; //符号存储类型
unsignedcharusNumAux; //符号附加记录数}SYMENT;5.1DSP编程基础公共目标文件格式(COFF)字符串表用来保存字符串前4个字节是字符串的长度,其后就是以0为结尾的字符串5.1DSP编程基础COFF文件中的段的分类所有的COFF目标文件都包含.text段:代码段,通常包含可执行代码.data段:数据段,通常包含初始化数据.bss段:通常为未初始化变量保留存储空间5.1DSP编程基础COFF文件中的段的分类(续)已初始化的段:包含程序代码和数据,.text、.data、.sect、.asect汇编命令所创建的段都属这一类未初始化的段:为未初始化数据在存储器映像图中保留空间,.bss,.usect5.1DSP编程基础汇编器对段的处理确定汇编语言程序的各个部分属于哪个特定的段6个命令:.bss、.usect、.text、.data、.sect、.asect5.1DSP编程基础汇编器对段的处理(续)未初始化的段:通常被分配到RAM中,程序运行时可使用这些空间来建立和存储变量。.bss:在.bss段中保留空间.usect:在自定义段中保留空间5.1DSP编程基础汇编器对段的处理(续)已初始化的段:.text.data.sect“段名”.asect“段名”,地址5.1DSP编程基础汇编器对段的处理(续).bss和.usect指令不停止当前段的汇编,它只是临时的离开当前的段当汇编器遇到.text、.data、.sect、.asec时,立即停止把数据或代码汇编到当前段中,且开始将随后的代码或数据汇编到相应的段中5.1DSP编程基础汇编器对段的处理(续)自定义的段.usect“段名”,字数.sect“段名”.asect“段名”,地址5.1DSP编程基础汇编器对段的处理(续)子段。大段中的小段,命名的句法基段:子段名段程序计数器(SPC):一个程序代码或数据段内的当前地址5.1DSP编程基础链接器对段的处理一个或多个COFF目标文件中的各种段作为链接的输入段,经链接后在一个可执行的COFF输出模块中建立各个输出段为各个输出段选定存储器地址MEMORY命令和SECTION命令5.1DSP编程基础假设存储器的起始地址为0假定有2的32次方字的存储器可用将.text分配到起始地址为0的程序存储器将.data分配到紧接.text的程序存储器将.bss分配到紧接着.data的程序存储器将自定义的段分配到紧接着.bss的存储器链接器的默认分配算法5.1DSP编程基础链接器对段的处理MEMORY:用来定义目标系统的存储器配置图为存储器各部分命名规定存储器各部分的起始地址和长度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编程基础程序重定位将各个段定位到存储器图中将符号的数值调整到相对于新的段地址的数值调整对重新定位后符号的引用5.1DSP编程基础外部符号在一个模块中定义,又可在另一个模块中引用的符号可通过.def、.ref或.global命令指出.def:当前模块定义可在其它模块使用.ref:当前模块使用但在其它模块定义.global:上述任何一种情况5.1DSP编程基础DSP应用系统的开发工具TI公司的CCSIDE(CodeComposerStudioIntegratedDevelopmentEnvironment)ADI公司的CROSSCOREXilinx公司的AccelDSP和SystemGeneratorforDSPMotorola公司的SDK5.2DSP软件集成开发平台(CCS)CCS的基本特征和安装设置设计概念性规划、环境配置编程和生成可执行文件创建工程文件、编写源程序和配置文件、编译或汇编、连接调试程序装载和执行、探测点设置、软/硬件仿真等分析实时调试、统计和跟踪5.2DSP软件集成开发平台(CCS)CCS的安装底层硬件驱动程序安装CCS集成开发环境安装TI驱动程序安装驱动程序的配置5.2DSP软件集成开发平台(CCS)CCS的安装驱动程序的配置Simulator:软件仿真Emulator:硬件仿真5.2DSP软件集成开发平台(CCS)5.2DSP软件集成开发平台(CCS)CCS软件常用文件类型project.mak:CCS使用的工程文件program.c:C程序源文件program.asm:汇编程序源文件filename.h:C程序的头文件filename.lib:库文件project.cmd:链接命令文件5.2DSP软件集成开发平台(CCS)CCS软件常用文件类型program.obj:由源文件编译、汇编而得的目标文件program.out:(经完整的编译、汇编及链接的)可执行文件5.2DSP软件集成开发平台(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软件集成开发平台(CCS)CSS程序的运行和调试新建一个工程StepInto、StepOver、StepOutRuntoCursor、Run、Halt使用断点和观察窗口图形显示5.2DSP软件集成开发平台(CCS)GEL语言的使用GEL(GeneralExtensionLanguage)语言:是C语言的一个子集,可用来扩展CCS的功能GEL函数定义函数名([参数,…,])
{语句}5.2DSP软件集成开发平台(CCS)GEL语言的使用(续)GEL函数参数参数无需定义类型参数可是以下类型DSP程序符号值数字常量字符串常量5.2DSP软件集成开发平台(CCS)GEL语言的使用(续)GEL语句支持以下语句return[表达式]if-[else]while注释:/*…*/预处理语句:#define5.2DSP软件集成开发平台(CCS)GEL语言的使用(续)调用GEL函数GEL函数可在任何输入C表达式的地方调用5.2DSP软件集成开发平台(CCS)定义和调用举例Initialize(a,filename,b){
targVar=b; a=10;
GEL_Load(filename); returnb*b;}Initialize(targetSymbol,”C:\\myfile.out”,23*5+2.6)5.2DSP软件集成开发平台(CCS)GEL语言的使用(续)GEL函数加载和卸载加载:通过File
LoadGel或工程视图窗中单击右键卸载:右击文件,选择“Remove…”重新加载:Reload5.2DSP软件集成开发平台(CCS)GEL语言的使用(续)将GEL函数添加到GEL菜单hotmenu
uncname()
{statements}menuitem"MyFunction"
hotmenu
LoadMyProg()
{GEL_Load("d:\\test.out");}5.2DSP软件集成开发平台(CCS)GEL语言的使用(续)将GEL函数添加到GEL菜单(续)dialog关键词dialoguncname(参数1“参数1说明”,参数2“参数2说明”,……)
{statements}弹出对话框,提示输入参数,最多6个5.2DSP软件集成开发平台(CCS)GEL语言的使用(续)将GEL函数添加到GEL菜单(续)slider关键词sliderparam_definition(minVal,maxVal,increment,pageIncrement,paramName)
{statements}出现滑动条对象,控制参数值5.2DSP软件集成开发平台(CCS)GEL语言的使用(续)在CCS启动时自动加载GEL函数将GEL函数加到sim2812.gel中的startup()函数中,例如
GEL_OpenWindow("Hellowindow");
GEL_TextOut("hello","Hellowindow");5.2DSP软件集成开发平台(CCS)GEL语言的使用(续)例如dialogInitarget2(x"x:",y"y:")
{statements}sliderVolumecontrol(0,10,1,1,volume) {targVarVolume=volume;}5.2DSP软件集成开发平台(CCS)GEL语言的使用(续)嵌入式GEL函数可直接在程序中调用控制仿真/实际目标板的状态,访问仿真/实际目标板存储器,并在输出窗口中显示结果10类函数:调试类、断点类、……5.2DSP软件集成开发平台(CCS)嵌
入
式GEL
函
数调试类断点类窗口类程序加载类存储器类插入汇编代码类工程类系统类观察窗口类扩展存储器类5.2DSP软件集成开发平台(CCS)GEL语言的使用(续)调试类GEL函数GEL_Animate()
开始AnimateDSP程序GEL_Go(address)
执行DSP程序到一个由参数指定的地址。如不指定参数则同GEL_Run函数5.2DSP软件集成开发平台(CCS)GEL语言的使用(续)调试类GEL函数(续)GEL_Run(“Condition”)
开始运行DSP程序。如果带条件参数,则当条件满足时运行GEL_Halt()
停止正在运行的程序5.2DSP软件集成开发平台(CCS)GEL语言的使用(续)调试类GEL函数(续)GEL_RunF()
是Debug菜单下的Runfree命令。运行DSP程序前先禁止所有的断点,同时断开与目标系统的连接。GEL_Restart():复位DSP程序至入口5.2DSP软件集成开发平台(CCS)GEL语言的使用(续)断点GEL函数GEL_BreakPtAdd(address,“Condition”):设置断点GEL_BreakPtDel(address):删除断点GEL_BreakPtReset(address)5.2DSP软件集成开发平台(CCS)GEL语言的使用(续)窗口类GEL函数GEL_OpenWindow(“WindowName”,windowType,maxLines)GEL_CloseWindow(“windowName”)5.2DSP软件集成开发平台(CCS)GEL语言的使用(续)例如GEL_OpenWindow("Testwindow",1,20)GEL_CloseWindow("Testwindow")5.2DSP软件集成开发平台(CCS)GEL语言的使用(续)窗口类GEL函数(续)GEL_TextOut(“text”,“windowName”,textColor,lineNumber,appendToEnd,param1,param2,…,param4)
将一个固定的字符串显示到指定的输出窗口5.2DSP软件集成开发平台(CCS)GEL语言的使用(续)窗口类GEL函数(续)GEL_TargetTextOut(startAddress,page,maxLength,format,”windowName”,textColor,lineNumber,appendToEnd,changeHighlight)
将一个格式字符串显示到输出窗口5.2DSP软件集成开发平台(CCS)GEL语言的使用(续)GEL_TargetTextOutstartAddress:包含格式字符的块的起始地址page:可选参数,指示存储器类型。0—程序存储器,1—数据存储器,2—I/OmaxLength:当块长度大于400字节时用来指示块的最大长度。format:显示的文本是打包还是未经打包的lineNumber:指定显示从哪行开始5.2DSP软件集成开发平台(CCS)GEL语言的使用(续)例如:GEL_TextOut("x:%d,y:%f",,,,,10,21.2);GEL_TargetTextOut(0x100,0,400,1,“New",1);5.2DSP软件集成开发平台(CCS)GEL语言的使用(续)窗口类GEL函数(续)GEL_Exit()
关闭当前活动的控制窗口。对只有一个处理器的系统而言,将直接关闭CCS。5.2DSP软件集成开发平台(CCS)GEL语言的使用(续)程序加载类GEL函数GEL_Load(“fileName”,“cpuName”)
将目标文件(COFF文件)及相关符号加载入存储器中。GEL_SymbolLoad(“fileName”,“cpuName”)5.2DSP软件集成开发平台(CCS)GEL语言的使用(续)存储器类GEL函数GEL_MapAdd(address,page,length,readable,writable)
设置存储器映射中某块目标存储器的读/写属性GEL_MapDelete(address,page)5.2DSP软件集成开发平台(CCS)GEL语言的使用(续)存储器类GEL函数(续)GEL_MapOn():使能存储器映射。GEL_MapOff():禁止存储器映射。GEL_MemoryReset():复位存储器映射。5.2DSP软件集成开发平台(CCS)GEL语言的使用(续)存储器类GEL函数(续)Gel_MemoryFill(startAddress
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 管井房电缆改造合同
- 广告导演聘用合同
- 合同标准质量范文
- 犬耳螨的诊断与治疗
- 2024正规厂房租赁合同书
- 煤矿安全规程
- 2024设备改造的合同范本
- 2024专卖店申请加盟合同模板
- 2024家庭装修全包合同
- 专题06课文理解与填空-2022-2023学年四年级语文上册期末复习知识点精讲精练(部编版)
- 鞋子工厂供货合同模板
- 2024码头租赁合同范本
- 木材采运智能决策支持系统
- 【产业图谱】2024年青岛市重点产业规划布局全景图谱(附各地区重点产业、产业体系布局、未来产业发展规划等)
- 上海市市辖区(2024年-2025年小学四年级语文)部编版期末考试(下学期)试卷及答案
- 认识梯形(课件)四年级上册人教版
- 企业级SaaS软件服务合同
- 【期中考后反思】《反躬自省,砥砺奋进》-2022-2023学年初中主题班会课件
- 2019新教材人教版生物必修1教材课后习题答案
- 2024年中国白酒行业数字化转型研究报告-36氪-202409
- 《学校主人公:3 校园广播站》教学设计-2024-2025学年五年级上册综合实践活动沪科黔科版
评论
0/150
提交评论