软件开发实用.pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《软件开发实用.pptx》由会员分享,可在线阅读,更多相关《软件开发实用.pptx(67页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件开发软件基础汇编语言C语言程序定位软件架构CSLBSL库BIOSDDK信号处理库算法标准DAIS参考架构Reference Framwork软件开发实例SEED-VPM642视频监控软件开发方法第1页/共67页软件开发基础组成:由代码和数据组成运行:要运行的程序其代码和数据必须存放在可由CPU寻址的存储空间存放:以代码块和数据块的形式存放代码块和数据块是程序的最小单元一个代码块或数据块在存储空间中连续、顺序存放不同的代码块或数据块,可以存放于不同的存储空间中定位:编译时定位:MCU系统采用v编程时由ORG语句确定代码块和数据块的绝对地址v编译器以此地址为首地址,连续、顺序地存放该代码块或数
2、据块链接时定位:DSP系统采用v编程时由“SECTION”伪指令,以区分不同的代码块或数据块v编译器每遇到一个“SECTION”伪指令,从0地址重新开始一个代码块或数据块v链接器将同名的“SECTION”合并,并按.cmd文件中的“SECTION”命令进行实际的定位加载时定位:PC机系统采用v编程、编译和链接时均未对程序进行绝对定位v程序运行前,由操作系统对程序进行重定位,并加载到存储空间中程序是什么?第2页/共67页软件开发基础程序定位方式的比较编译时定位:ORG xxxx,绝对定位优点:简单、容易上手 缺点:程序员必须熟悉 硬件资源 模块化编程差 工程化不支持链接时定位:SECTION,相
3、对定位缺点:灵活、上手较难 优点:程序员不必熟悉 硬件资源 模块化编程强 工程化管理支持加载时定位:编译、链接时,相对定位缺点:必须要有操作系 统支持 优点:模块化编程强 工程化管理支持第3页/共67页软件开发基础DSP汇编程序基础Section(“段”)概念:一块连续的储存空间,用于存放代码块或数据块在编程时,“段”没有绝对定位,每个“段”都认为是从0地址开始的一块连续的储存空间,所以软件开发人员只需要将不同代码块和数据块放到不同的“段”中,而无需关心这些“段”究竟定位于系统何处优点:便于程序的模块化编程;便于工程化管理:可将软件开发人员和硬件开发人员基本上分离开重定位:由于所有的“段”都是
4、从0地址开始,所以程序编译完成后无法直接运行的,要让程序正确运行,必须对“段”进行重新定位,这个工作由链接器完成.cmd文件:MEMORY命令描述系统硬件资源,SECTIONS命令描述软件人员程序中用到的“段”如何定位到恰当的硬件资源上第4页/共67页软件开发基础DSP汇编语言:SECTION伪指令5个SECTION伪指令 .bsssymbol,size in word .text .data .sect“section name”symbol .usect“section name”,size in word其中symbol相当于变量名,size in word保留的存储单元长度(以字为单位
5、)初试化段和未初始化段.bss和.usect为未初始化段,用于为变量、堆栈等保留一块存储空间.text、.data和.sect为初试化段,用于存放代码块或有初值的数据块系统定义的段和用户定义的段.text、.data和.bss为系统已定义好的段名用户根据需要用.sect和.usect伪指令来定义段名,创建相应的“段”汇编程序中,程序员用“段”伪指令来组织程序的代码和数据第5页/共67页DSP汇编语言:汇编器对“段”的处理汇编器第一次遇到新“段”时,将该“段”的段程序计数器(SPC)置为0,并将随后的程序代码或数据顺序编译进该“段”中汇编器遇到同名“段”时,将它们合并,然后将随后的程序代码或数据
6、顺序编译进该“段”中当汇编器遇到.text、.data和.sect伪指令时,汇编器停止将随后的程序代码或数据顺序编译进当前“段”中,而是顺序编译进遇到的“段”中当汇编器遇到.bss和.usect伪指令时,汇编器并不结束当前“段”,而只是简单地暂时脱离当前“段”,随后的程序代码或数据仍将顺序编译进当前“段”中。.bss和.usect伪指令,可以出现在.text、.data或.sect“段”中的任何位置,它们不会影响这些“段”的内容软件开发基础第6页/共67页DSP汇编语言:链接器对“段”的处理链接器对“段”的处理有2个方面:将输入“段”组合产生输出“段”v将多个.obj文件中的同名“段”合并一个
7、输出“段”v也可将不同名的“段”合并产生一个输出“段”将输出“段”定位到实际的存储空间中vMEMORY命令:用于描述系统实际的硬件资源vSECTIONS命令:用于描述程序中定义了哪些“段”,这些“段”是否需要合并?如何合并?合并产生的输出“段”定位到实际硬件资源的何处?链接器通过.cmd文件来获得上述这些信息链接器还将检查各输出“段”是否重叠、是否超界,避免了人工检查边界带来的隐患软件开发基础第7页/共67页.cmd文件由3部分组成:输入输出定义:这一部分,可通过CCS的“Build Options”菜单设置v.obj文件:链接器要链接的目标文件v.lib文件:链接器要链接的库文件v.map文
8、件:链接器生成的交叉索引文件v.out文件:链接器生成的可执行代码v链接器选项MEMORY命令:描述系统实际的硬件资源SECTIONS命令:描述“段”如何定位软件开发基础第8页/共67页用MEMORY命令描述目标系统的存储空间软件开发基础MEMORY PAGE 0:PRAM:origin=0 x0080,length=0 x1080VECT:origin=0 x2000,length=0 x0040EXPRAM:origin=0 x4000,length=0 xC000PAGE 1:STACK:origin=0 x2040,length=0 x0FC0DRAM:origin=0 x3000,l
9、ength=0 x1000EXDRAM:origin=0 x4000,length=0 xC000MEMORY DirectivePAGE optionsnamesoriginsLengths第9页/共67页用SECTIONS命令描述“段”如何定位软件开发基础SECTIONS.vectors VECT PAGE 0.text PRAM PAGE 0.data PRAM PAGE 0.bss DRAM PAGE 1.stack STACK PAGE1第10页/共67页MEMORY PAGE 0:PRAM:origin=0 x0080,length=0 x1080VECT:origin=0 x20
10、00,length=0 x0040EXPRAM:origin=0 x4000,length=0 xC000PAGE 1:STACK:origin=0 x2040,length=0 x0FC0DRAM:origin=0 x3000,length=0 x1000EXDRAM:origin=0 x4000,length=0 xC000SECTIONS.vectors VECTPAGE 0.text PRAMPAGE 0.data PRAMPAGE 0.bss DRAMPAGE 1.stack STACKPAGE1VC5402 DSP系统.cmd例子软件开发基础第11页/共67页软件开发基础DSP C
11、语言:C运行环境(1)存储模型:C程序的代码和数据如何定位系统定义v.cinit存放C程序中的变量初值和常量v.const存放C程序中的字符常量、浮点常量和用const声明的常量v.switch存放C程序中switch语句的跳转地址表v.text存放C程序的代码v.bss为C程序中的全局和静态变量保留存储空间v.far为C程序中用far声明的全局和静态变量保留空间v.stack为C程序系统堆栈保留存储空间,用于保存返回地址、函数间的参数传递、存储局部变量和保存中间结果v.sysmem用于C程序中malloc、calloc和realloc函数动态分配存储空间用户定义v#pragma CODE_S
12、ECTION(symbol,section name)v#pragma DATA_SECTION(symbol,section name)第12页/共67页软件开发基础DSP C语言:C运行环境(2)寄存器使用规则C编译器如何使用DSP的寄存器函数进入和返回前,寄存器的保护函数调用规则函数间的参数传递通过寄存器和系统堆栈进行调用函数与被调用函数必须对各自的寄存器进行保护从被调用函数返回前,被调用函数必须归还所有已占用的堆栈空间C和ASM混合编程C和ASM混合编程时,必须遵循寄存器使用规则和函数调用规则被C调用的ASM函数,其函数名前应加“_”中断服务程序ASM编写的中断服务程序必须对所有用到寄
13、存器进行保护,以免破坏C运行环境C编写的中断服务程序应用interrupt关键字声明第13页/共67页软件开发基础DSP C语言:C运行环境(3)系统初始化在运行C程序前,必须建立C运行环境,此任务由C引导程序_c_int00完成_c_int00包含在库函数中,build时自动将其链接进可执行程序中,程序的入口地址必须设为_c_int00起始地址_c_int00的源程序存放在由rts.src分离出来的boot.asm中,用户可根据需要修改v设置堆栈指针v初始化全局变量:将.cinit”段“中数据拷贝到.bss”段“中v调用C程序的主函数main()不同系列的DSP,其C编译器对C运行环境的处理
14、略有不同,具体参考各自的Optimizing C Compiler Users Guide第14页/共67页软件开发基础软件build流程.CPP file.ASM file.C file.ASM file.ASM file.OBJ fileAssembler.OBJ file.OBJ file.OUT file.HEX fileLinker目标文件地址是浮动的,能被重定位链接器用.cmd文件对链接目标,进行重定位列出目标文件、库文件和链接器选项用MEMORY命令描述目标系统存储空间配置用SECTIONS命令描述“段”如何定位Hex转换程序也使用.cmd文件,配置转换选项第15页/共67页软件
15、开发平台传统软件开发方法用ASM或ASM和C混合编程,从零开始编写硬件资源头文件DSP片内寄存器资源头文件v描述片内寄存器地址v描述片内寄存器控制状态位域板上资源头文件v描述片外外设寄存器地址v描述片外外设寄存器控制状态位域编写应用专用的外设驱动程序片内片外外设初试化程序片内片外外设操作程序编写应用专用的算法编写主控程序顺序、循环执行第16页/共67页软件开发平台TI免费提供的基础软件CSL库:Chip Support Library芯片支持库定义DSP片内外设资源,实现片内外设基本操作DDK:Driver Development Kit 设备驱动程序开发包设计标准的设备驱动程序模型,方便开发
16、新的设备驱动程序DSPLIBIMGLIB:Signal Processing Library数学运算、矩阵运算、FFT、滤波、卷积、相关等信号处理函数压缩、分析、滤波和格式转换等图像视频处理函数DSP/BIOS:嵌入式实时、多任务操作系统实时、多任务内核实时分析Reference Frameworks:程序参考架构C程序初试骨架,通过其可以迅速创建特定的应用程序XDAIS:DSP Algorithm Standard,DSP算法标准规定一系列算法编程规则,遵循这些规则的算法,可以相互调用第17页/共67页软件开发平台TI倡导的DSP软件架构User ApplicationTarget Boar
17、dDSPCSLDSP/BIOSKernel/Scheduler DriverSignal Processing LibraryTimerMcBSPEMIFCPUTMS320 DSP Algorithm StandardReference Framework第18页/共67页软件开发平台DSP/BIOS:功能抢先型实时、多任务操作系统内核基于优先级的、抢先型实时调度程序支持多线程管理与调度支持4种线程类型:HWI、SWI、TSK、IDL支持3种作业间的通信方式:Mailboxes、Semaphores、Queues支持周期函数,方便实现固定时间间隔的数据采集,简化多速率系统的设计提供存储器管理,
18、实现动态存储器分配实时分析模块分析信息实时获取、传输和显示,为早期的系统级排错提供帮助DSP/BIOS模块中内含分析信息的实时获取功能分析信息的实时传输由RTDX(Real-Time Data Exchange)技术实现,完成目标DSP与主机之间的实时通信,C6000 RTDX的带宽为20KByte,RTDX是在idle作业期间完成,所以对程序执行速度的影响最小主机可以显示:事件记录、线程执行顺序、执行次数的最大值或平均值和总的CPU负载等信息第19页/共67页软件开发平台DSP/BIOS:使用为了方便使用,TI提供一个可视化的配置工具,用于配置实际系统中所需的DSP/BIOS模块DSP/BI
19、OS是可裁剪的,只有被应用程序使用的模块才会被链接到应用程序中DSP/BIOS开销小:代码大小:1K WordsCPU占用:1MIPSDSP/BIOS采用标准的API,所以不同系列DSP之间的移植容易DSP/BIOS集成在CCS中,无需使用许可费 第20页/共67页软件开发平台CSL为什么要设计CSLDSP片上外设种类及其应用日趋复杂提供一组标准的方法用于访问和控制片上外设免除用户编写配置和控制片上外设所必需的定义和代码什么是CSL:Chip Support Library用于配置、控制和管理DSP片上外设已为C6000和C5000系列DSP设计了各自的CSL库CSL库函数大多数是用C语言编写
20、的,并已对代码的大小和速度进行了优化CSL库是可裁剪的:即只有被使用的CSL模块才会包含进应用程序中CSL库是可扩展的:每个片上外设的API相互独立,增加新的API,对其他片上外设没有影响第21页/共67页软件开发平台CSL:片上外设C6000 DSP ModulesCACHECHIPDATDMAEMIF-EMIFA-EMIFBGPIOHPIIRQMCBSPPCIPWRTCPTIMERUTOP(UTOPIA)VCPXBUSC55x DSP ModulesADCCHIPDATDMAEMIFGPIOIRQI2CMCBSPPLLPWRRTCUSBWDTIMC54x DSP ModulesCHIPDA
21、ADATDMAEBUSGPIOHPIIRQMCBSPPLLPWRUARTWDTIM第22页/共67页软件开发平台CSL:特点片上外设编程的标准协议:定义一组标准的APIs:函数、数据类型、宏对硬件进行抽象,提取符号化的片上外设描述定义一组宏,用于访问和建立寄存器及其域值基本的资源管理对多资源的片上外设进行管理已集成到DSP/BIOS中通过图形用户接口GUI对CSL进行配置使片上外设容易使用缩短开发时间,增加可移植性第23页/共67页软件开发平台DDK(Driver Development Kit)TI提供DDK的目的标准的设备驱动程序模型,用户无需从零开始编写设备驱动程序设备驱动程序模型(IO
22、M)将设备驱动程序分为2个部分v与设备相关的:“迷你”驱动程序(mini-driver)v与设备无关的:“类”驱动程序(class-driver)“类”驱动程序v设备驱动程序的上层抽象,使其与特定设备无关,为应用程序提供通用的接口v3大类“类”驱动程序:SIO、PIP和GIOvSIO:流I/O接口,由SIO和DIO组成,DIO负责缓冲器管理、信号同步以及底层“迷你”驱动程序接口vPIP:管道接口,有PIP和PIO组成,PIO负责缓冲器管理、信号同步以及底层“迷你”驱动程序接口vGIO:通用I/O,允许进行块读块写,可以用其新的用户驱动程序“迷你”驱动程序v设备驱动程序的底层抽象,与特定设备有关
23、,对硬件设备进行实际操作,DDK规定一组标准的API,函数体由用户根据实际硬件设备编写DDK是在CSL基础上对外设I/O进行更高层次的抽象TI免费提供DDK的源代码、库及相关文档,可从TI网站上免费下载第24页/共67页软件开发平台设备驱动程序模型第25页/共67页软件开发平台Signal Processing Library(1)C6000系列DSP基本的信号处理库DSPLIB:提供数学运算、矩阵运算、FFT、滤波、卷积等常用的信号处理函数vTMS320C62x DSPLIB:专门为C62x系列DSP进行优化vTMS320C67x DSPLIB:专门为C67x系列DSP进行优化vTMS320
24、C64x DSPLIB:专门为C64x系列DSP进行优化FastRTS:提供快速的单精度双精度浮点数学运算和转换函数vTMS320C62xC64x FastRTS:专门为C62xC64x系列DSP进行优化vTMS320C67x FastRTS:专门为C67x系列DSP进行优化IMGLIB:提供压缩、分析、滤波和格式转换等常用的图像视频处理函数vTMS320C62x IMGLIB:专门为C62x系列DSP进行优化vTMS320C64x IMGLIB:专门为C64x系列DSP进行优化C5000系列DSP基本的信号处理库DSPLIB:提供数学运算、矩阵运算、FFT、滤波、卷积等常用的信号处理函数vT
25、MS320C54x DSPLIB:专门为C54x系列DSP进行优化vTMS320C55x DSPLIB:专门为C55x系列DSP进行优化IMGLIB:提供压缩、分析、滤波和格式转换等常用的图像视频处理函数vTMS320C55x IMGLIB:专门为C55x系列DSP进行优化第26页/共67页软件开发平台Signal Processing Library(2)C2000系列DSP基本的信号处理库提供定点数学运算、FFT、滤波、信号发生等常用的信号处理函数vTMS320C24x:专门为C24x系列DSP进行优化vTMS320C28x:专门为C28x系列DSP进行优化所有函数均为C可调用,并在汇编级
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 开发 实用
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内