DSP原理与应用-第9章CCS.ppt

上传人:小飞机 文档编号:5428127 上传时间:2023-07-05 格式:PPT 页数:61 大小:1.70MB
返回 下载 相关 举报
DSP原理与应用-第9章CCS.ppt_第1页
第1页 / 共61页
DSP原理与应用-第9章CCS.ppt_第2页
第2页 / 共61页
DSP原理与应用-第9章CCS.ppt_第3页
第3页 / 共61页
DSP原理与应用-第9章CCS.ppt_第4页
第4页 / 共61页
DSP原理与应用-第9章CCS.ppt_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《DSP原理与应用-第9章CCS.ppt》由会员分享,可在线阅读,更多相关《DSP原理与应用-第9章CCS.ppt(61页珍藏版)》请在三一办公上搜索。

1、第九章 DSP集成软件开发环境,第九章 DSP集成软件开发环境,9.1 CCS集成开发环境9.2 C语言程序基础9.3 混合语言编程9.4 芯片支持库(CSL),9.1 CCS集成开发环境,CCS(Code Composer Studio)是TI公司为DSP推出的集成软件开发环境(IDE),提供了配置、建立、调试、跟踪和分析的工具,包括了应用程序开发必需的所有功能,便于对实时信号处理程序的编制和测试,能够加速开发进程,提高工作效率。,CCS是DSP领域第一个完整的、开放型集成开发环境(IDE)直观、易用无需停止DSP运行即可观察DSP的信息具有实时分析功能开放的环境可加入第三方插件(Plug-

2、Ins),CCS调试界面,CCS调试界面,菜单条,标题区,编辑工具条,编译工具条,数据显示窗口,图形显示窗口,变量观察窗口,C源程序编辑窗口,反汇编调试窗口,编译运行结果显示窗口,调试工具条,工程管理窗口,信号分析图形化以自然的格式观察信号在变量有效时修改其值并观察它们的影响多种专用的画图工具时域频域图FFTEye diagramConstellation plotImage displays,可视化图形,CCS集成环境的组成,软件开发流程,CCS集成开发环境,提供一些类似VC的代码编辑功能语法高亮显示,自动缩近,文字查找等等原程序可以与反汇编同时显示,CCS项目管理,应用程序按项目来管理,按

3、层次以图形化的方式显示*.cmd 文件*.h 头文件*.lib 库文件*.c 源程序,CCS图形化设置,各种编译选项,如C编译器选项,连接器选项等通过图形化方式来设置,不需要手工添加选项,1、设置断点将光标放置在需要设置断点的程序行前,点击Debug Breakpoints,或点击工具栏按钮,即可完成一个断点的设置,点击工具栏按钮 可清除所有的断点。2、复位的3种方法(1)Reset DSP:点击Debug Reset CPU,初始化所有的寄存器内容并暂停运行中的程序。使用此命令后,要重新装载.out 文件后,再执行程序。(2)Restart:点击Debug Restart,将PC 值恢复到当

4、前载入程序的入口地址。(3)Go main:点击Debug Go main,将程序运行到主程序的入口处暂停。3、执行程序的4种方法(1)连续 执行:点击Debug Run,程序运行直到遇到断点为止。(2)暂停执行:点击Debug Halt,程序停止运行。(3)动画执行:点击Debug Animate,用户反复运行程序,直到遇到断点为止。(4)自由执行:点击Debug Run Free,禁止所有断点运行程序。,CCS 常用功能,CCS 常用功能,4、单步执行的4 种方法(1)单步进入:快捷键F8,Debug Step Into,当调试语句不是基本的汇编指令时,此操作进入语句内部(2)单步执行:点

5、击Debug Step Over,此命令将函数或子函数当作一条语句执行,不进入内部调试(3)单步跳出:点击Debug Step Out,此命令作用为从子程序中跳出(4)执行到光标处:快捷键Crtl+F10,Debug Run to Cursor,此命令作用为将程序运行到光标处5、查看内存与变量(1)查看变量:使用View Watch Window 命令(2)查看寄存器:使用View Registers CPU Registers 命令(3)查看内存:使用View Memory 命令,6、显示图形 Probe(探点)1)适合于算法的开发,功能验证 2)可以完成这样的功能从一个文件中读入数据到一个

6、DSP的缓冲区将一个DSP的缓冲区写到文件中 3)探点类似于断点,又不同于断点运行到Probe point,DSP会停顿下来完成一些动作后(读写文件),程序继续运行 4)文件输入输出的设置:FileFile I/O 5)Probe的设置:类似断点的设置(用工具条)示例0901,CCS 常用功能,CCS支持一维图形,二维图象(标准的数据格式),眼图等显示方式有放大、缩小等功能可以方便直观地判断算法执行的效果,CCS 常用功能,GELGeneral Extension Language一种类似C的解释型语言,可实现循环等程序结构提供基本的程序控制命令,类似以前emulator提供的命令,GEL_G

7、o(),GEL_Reset()等等可以制作菜单(可以加入到CCS主菜单),对话框,滑动条,CCS 常用功能,9.2 C语言程序基础,一个最小的C应用程序至少要包含如下几个文件:1.主程序文件program.c,这个文件必需包含一个main()函数作为C程序的入口点;2.链接器命令文件link.cmd,这个文件定义了DSP的存储空间以及代码段、数据段是如何分配到这些存储空间的;3.C运行库rts6700.lib,C运行库提供了标准C函数,以及C环境下的初始化函数c_int00()函数。库文件及其源代码位于CCS安装目录下的c6000cgtoolslib子目录下。4.中断向量表文件vectors.

8、asm,这个文件的代码作为中断服务表,必须由链接命令文件分配到0地址,或由ISTP指向的地址。DSP复位后,首先从0地址开始运行,然后跳转到rts6700.lib库内C运行环境的入口点_c_int00,完成初始化操作,再调用main()函数,执行用户的程序。,CCS 常用文件,CMD文件,CMD文件由3部分组成:输入输出定义:*.obj文件:链接器要链接的目标文件*.lib文件:链接器要链接的库文件*.map文件:链接器生成的交叉索引文件*.out文件:链接器生成的可执行代码链接器选项MEMORY命令:描述系统实际的硬件资源SECTIONS命令:描述“段”如何定位,MEMORY命令描述目标系统

9、的存储空间,MEMORY PMEM:o=00000000h,l=00010000hBMEM:o=00010000h,l=00030000h,MEMORY 命令,names,origins,Lengths,MEMORY 存储器空间名:o=十六进制存储器起始地址,l=十六进制存储器长度,SECTIONS命令描述“段”如何定位,SECTIONS.text PMEM.csldata PMEM.stack PMEM.far PMEM.switch BMEM.tables BMEM.data BMEM.bss BMEM.sysmem BMEM.cinit PMEM.const BMEM.cio BMEM,

10、SECTIONS段名 存储器空间名,-o sample.out/定义输出文件名-m sample.map/定义存储器空间分配文件名-stack 100/定义堆栈大小-l rts6700.lib/引用库文件MEMORYPMEM:o=00000000hl=00010000hBMEM:o=00010000hl=00030000hSECTIONS.text PMEM.csldata PMEM.stack PMEM.far PMEM.switch BMEM.tables BMEM.data BMEM.bss BMEM.sysmem BMEM.cinit PMEM.const BMEM.cio BMEM,

11、CMD 文件示例,CMD 文件常用段名含义,SECTION“段”,Section“段”概念:一块连续的储存空间,用于存放代码块或数据块在编程时,“段”没有绝对定位,每个“段”都认为是从0地址开始的一块连续的储存空间,所以软件开发人员只需要将不同代码块和数据块放到不同的“段”中,而无需关心这些“段”究竟定位于系统何处优点:便于程序的模块化编程;便于工程化管理:可将软件开发人员和硬件开发人员基本上分离开重定位:由于所有的“段”都是从0地址开始,所以程序编译完成后无法直接运行的,要让程序正确运行,必须对“段”进行重新定位,这个工作由链接器完成cmd文件:MEMORY命令描述系统硬件资源,SECTIO

12、NS命令描述软件人员程序中用到的“段”如何定位到恰当的硬件资源上,SECTION 伪指令,5个SECTION伪指令.bsssymbol,size in word.text.data.sect“section name”symbol.usect“section name”,size in word其中symbol相当于变量名,size in word保留的存储单元长度(以字为单位)初始化段和未初始化段.bss和.usect为未初始化段,用于为变量、堆栈等保留一块存储空间.text、.data和.sect为初始化段,用于存放代码块或有初值的数据块系统定义的段和用户定义的段.text、.data和.

13、bss为系统已定义好的段名用户根据需要用.sect和.usect伪指令来定义段名,创建相应的“段”汇编程序中,程序员用“段”伪指令来组织程序的代码和数据,汇编器对“段”的处理,汇编器第一次遇到新“段”时,将该“段”的段程序计数器(SPC)置为0,并将随后的程序代码或数据顺序编译进该“段”中汇编器遇到同名“段”时,将它们合并,然后将随后的程序代码或数据顺序编译进该“段”中当汇编器遇到.text、.data和.sect伪指令时,汇编器停止将随后的程序代码或数据顺序编译进当前“段”中,而是顺序编译进遇到的“段”中当汇编器遇到.bss和.usect伪指令时,汇编器并不结束当前“段”,而只是简单地暂时脱

14、离当前“段”,随后的程序代码或数据仍将顺序编译进当前“段”中。.bss和.usect伪指令,可以出现在.text、.data或.sect“段”中的任何位置,它们不会影响这些“段”的内容,链接器对“段”的处理,链接器对“段”的处理有2个方面:将输入“段”组合产生输出“段”将多个.obj文件中的同名“段”合并一个输出“段”也可将不同名的“段”合并产生一个输出“段”将输出“段”定位到实际的存储空间中MEMORY命令:用于扫描系统实际的硬件资源SECTIONS命令:用于描述程序中定义了哪些“段”,这些“段”是否需要合并?如何合并?合并产生的输出“段”定位到实际硬件资源的何处?链接器通过*.cmd文件来

15、获得上述这些信息链接器还将检查各输出“段”是否重叠、是否超界,避免了人工检查边界带来的隐患,C运行环境,存储模型:C程序的代码和数据如何定位系统定义.cinit存放C程序中的变量初值和常量.const存放C程序中的字符常量、浮点常量和用const声明的常量.switch存放C程序中switch语句的跳针表.text存放C程序的代码.bss为C程序中的全局和静态变量保留存储空间.far为C程序中用far声明的全局和静态变量保留空间.stack为C程序系统堆栈保留存储空间,用于保存返回地址、函数间的参数传递、存储局部变量和保存中间结果.sysmem用于C程序中malloc、calloc和reall

16、oc函数动态分配存储空间用户定义#pragma CODE_SECTION(symbol,section name)#pragma DATA_SECTION(symbol,section name),C运行环境,寄存器使用规则C编译器如何使用DSP的寄存器函数进入和返回前,寄存器的保护函数调用规则函数间的参数传递通过寄存器和系统堆栈进行调用函数与被调用函数必须对各自的寄存器进行保护从被调用函数返回前,被调用函数必须归还所有已占用的堆栈空间C和ASM混合编程C和ASM混合编程时,必须遵循寄存器使用规则和函数调用规则被C调用的ASM函数,其函数名前应加“_”中断服务程序ASM编写的中断服务程序必须对

17、所有用到寄存器进行保护,以免破坏C运行环境C编写的中断服务程序应用interrupt关键字声明,C运行环境,系统初始化在运行C程序前,必须建立C运行环境,此任务由C引导程序_c_int00完成_c_int00包含在库函数中,build时自动将其链接进可执行程序中,程序的入口地址必须设为_c_int00起始地址_c_int00的源程序存放在由rts.src分离出来的boot.asm中,用户可根据需要修改设置堆栈指针初试化全局变量:将.cinit”段“中数据拷贝到.bss”段“中调用C程序的主函数main(),软件编译流程,目标文件地址是浮动的,能被重定位链接器用.cmd文件对链接目标,进行重定位

18、列出目标文件、库文件和链接器选项用MEMORY命令描述目标系统存储空间配置用SECTIONS命令描述“段”如何定位Hex转换程序也使用cmd文件,配置转换选项,中断向量表,.ref _timer0_isr.ref _exint4_isr.ref _exint6_isr.ref _c_int00.global RESET_RST.sect vectors“RESET_RST:mvkl.S2 _c_int00,B0 mvkh.S2 _c_int00,B0 B.S2 B0 NOP 5NMI_RST:NOP 8RESV1:NOP 8RESV2:NOP 8INT4:b _exint4_isr NOP 7

19、,INT5:NOP 8 INT6:b _exint6_isrNOP 7INT7:NOP 8INT8:NOP 8INT9:NOP 8INT10:NOP 8INT11:NOP 8INT12:NOP 8INT13:NOP 8INT14:b _timer0_isrNOP 7INT15:NOP 8,C 语言语法接近自然语言,其可读性强、便于理解,在编制、修改、实现算法方面比用汇编语言开发容易。汇编语言掌控系统硬件的能力强于C 语言,设计出来的程序更加贴近硬件特性,能将硬件效能发挥到极致。因此,一般情况下用C 语言设计应用程序的总体框架、解决人机接口和对速度效率要求不太高的复杂算法,用汇编语言设计强调速度

20、的算法。,9.3 混合语言编程,C语言和汇编语言的混合编程有三种形式:1.在编写C语言代码中插入汇编语句,只需在汇编语句两边加上双引号和括号,在括号前面加上标识asm,如:asm(“NOP 5”);2.在编写C代码的过程中调用直接映射为内联的C6000指令的特殊函数,内联函数用前下划线表示,使用时同调用C语言的库函数一样调用它,如:m=_int_abs(n);3.用汇编代码编写独立的函数,在C代码中直接调用,混合编程的方法,1.采用C语言和汇编语言混合编程时,定义了一套严格的寄存器规则,调用函数保护了寄存器A0A9和B0B9,但当使用到寄存器A10A15或B10B15的时候,则必须自行对它们进

21、行保护。在默认情况下:A3用作返回结构指针寄存器B3用作被调用函数返回地址寄存器A15用作帧指针寄存器B14用作数据页指针寄存器B15用作堆栈指针寄存器,混合编程的接口规范,2.调用函数将参数传递到被调用函数中,前十个参数将被从左到右依次放入寄存器A4、B4、A6、B6、A8、B8、A10、B10、A12和B12,如果传递的参数是长型、双精度型或者是长双精度型,则将参数依次放入寄存器组A5:A4、B5:B4、A7:A6等,并将剩下的变量按相反的顺序放在堆栈里。注意,如果传递的参数是一个结构类型的参数,则传递的是该结构类型的地址。3.如果在C/C+调用函数中做了正确的函数返回声明,则被调用的汇编

22、函数可以返回有效值。如果返回值是整型或32位的浮点型,则放在寄存器A4中返回;如果返回值是双精度或是长双精度型,则放在A5:A4中返回;如果返回值是一个结构类型,则将其结构的地址放在A3中返回。,混合编程的接口规范,4.对于只在汇编语言模块中用到的变量的标识符,不能从下划线开始。任何一个在汇编语言中声明的对象都要使其在C/C+中是可访问的,那么在汇编语言中必须用.def 或.global将其声明为外部变量。同样在汇编语言中要引用C/C+函数或对象时,必须用.ref或.global将C/C+对象声明。中断子程序必须把该子程序将要用到的所有寄存器进行入栈处理;除了全局变量的初始化外,汇编语言的模块

23、不得因为任何目的而使用.cinit段;汇编代码的结束需用指令“B B3”将程序执行从被调用函数返回到C语言调用函数中。,混合编程的接口规范,打开工程ComplexDelay.pjt,可以看到该工程包含如下文件:main.c:C语言编写的主程序文件,调用使用汇编语言编写的延时程序asm_delay()函数进行精确延时delay.asm:汇编语言编写的延时函数示例0903,混合编程示例程序,9.4 芯片支持库CSL,为什么要设计CSLDSP片上外设种类及其应用日趋复杂提供一组标准的方法用于访问和控制片上外设免除用户编写配置和控制片上外设所必需的定义和代码什么是CSL:Chip Support Li

24、brary用于配置、控制和管理DSP片上外设已为C6000和C5000系列DSP设计了各自的CSL库CSL库函数大多数是用C语言编写的,并已对代码的大小和速度进行了优化CSL库是可裁剪的:即只有被使用的CSL模块才会包含进应用程序中CSL库是可扩展的:每个片上外设的API相互独立,增加新的API,对其他片上外设没有影响,CSL 的特点,片上外设编程的标准协议:定义一组标准的APIs:函数、数据类型、宏对硬件进行抽象,提取符号化的片上外设描述定义一组宏,用于访问和建立寄存器及其域值基本的资源管理对多资源的片上外设进行管理已集成到DSP/BIOS中通过图形用户接口GUI对CSL进行配置使片上外设容

25、易使用缩短开发时间,增加可移植性,CSL 的结构,CSL中,每一个外设都有一个对应的API模块,如:直接存取器存取(EDMA)API模块多通道缓冲串行端口(MsBCP)API模块这种结构允许对CSL进行扩展,因为可以添加新的API模块作为新的外设形式。,通用外设模块,外设(PER)描述 Include File Module Support SymbolEDMA Enhanced direct memory access module csl_edma.h EDMA_SUPPORT EMIF External memory interface module csl_emif.h EMIF_SU

26、PPORT GPIO General-Purpose input/output module csl_gpio.h GPIO_SUPPORTHPI Host port interface module csl_hpi.h HPI_SUPPORT I2C InterIntegrated circuit module csl_i2c.h I2C_SUPPORT IRQ Interrupt controller module csl_irq.h IRQ_SUPPORT McASP Multichannel audio serial port module csl_mcasp.h MCASP_SUPP

27、ORT McBSP Multichannel buffered serial port module csl_mcbsp.h MCBSP_SUPPORT TIMER Timer module csl_timer.h TIMER_SUPPORT,CSL 命名规则和数据类型,对象类型 名称 Naming Convention Function PER_funcName()Variable PER_varNameMacro PER_MACRO_NAMETypedef PER_TypenameFunction Argument funcArg Structure Member memberName,D

28、ata Type Description Uint8 unsigned char Uint16 unsigned short Uint32 unsigned int Uint40 unsigned long Int8 char Int16 short Int32 int Int40 long,通用的CSL 函数,handle=PER_open(channelNumber,priority flags)功能:打开一个外设 通道,根据标志执行相应的操作。使用通道前必须调用此函数,返回一个唯一的设备句柄用于后续API调用。优先级(priority)参数仅适用于DAT模块。PER_config(han

29、dle,*configStructure)功能:将配置结构的值写入外设寄存器。使用整型常量、整型变量、CSL符号常量 PER_REG_DEFAULT、PER_REG_RMK宏生成的合并域值进行初始化。PER_configArgs(handle,regval_1,.regval_n)功能:写值(regval_n)到外设寄存器。可写值包括:整型常量、整型变量、CSL符号常量 PER_REG_DEFAULT、PER_REG_RMK宏生成的合并域值。PER_reset(handle)功能:复位外设,将其所有值恢复到上电缺省值。PER_close(handle)功能:关闭由PER_open()函数打开的

30、外设通道。通道寄存器恢复上电初始值,清除所有未执行的中断。,通过寄存器来实现外设初始化,CSL提供了两种函数来初始化外设的寄存器:1、PER-config()用来初始化控制PER 外设的寄存器,其中PER 是CSL模块之一。这个函数需要一个地址来作为他的参数。这个地址指出了这个结构的位置,他代表了外设寄存器的值。每一个外设模块都定义了他的配置结构数据类型,包括PER-config()函数。PER_Config MyConfig=reg0,reg1,;PER_config(,通用CSL宏,1、PER 表示外设,如 EDMA2、REG 表示寄存器名,如PRICTL0,AUXCTL3、FIELD 表

31、示寄存器域,如 ESIZE4、regval 表示外设域生成宏PER-FMK()产生的整型常量,整型变量,符号常量(PER_REG_DEFAULT),或者融合域值5、fieldval 表示的是整常量,整型变量,或者符号常数(PER_REG_FIELD_SYMVAL)6、x 表示整型常量,整型变量7、sym 表示符号常量,通用CSL宏,PER_REG_RMK(fieldval_n,.fieldval_0)功能:产生外设寄存器值;_RMK宏基于位域,使构建寄存器值变得很简单。_RMK宏使用规则:域必须可写。首先指定域参数的最高有效位(MSB),不管用到与否,必须包含所有可写域的值。如果所传值超出特定

32、域所允许的位宽,_RMK宏将截断该域值。PER_RGET(REG)功能:返回外设寄存器值。PER_RSET(REG,regval)功能:将值写入外设寄存器。PER_FMK(REG,FIELD,fieldval)功能:可与其他_FMK宏的结果进行或(OR)操作后,生成移位的 fieldval 值,对REG寄存器进行初始化。作为_RMK宏的替代者,该宏允许初始化REG寄存器中的几个域,而不像_RMK宏那样必须初始化REG寄存器的所有域。PER_FGET(REG,FIELD)功能:返回外设寄存中指定域(FIELD)的值。PER_FSET(REG,FIELD,fieldval)功能:将 fieldva

33、l写入外设寄存器中指定域(FIELD)。PER_REG_ADDR(REG)功能:如果可用,取得外设寄存器(REG)的内存地址(或子地址)PER_FSETS(REG,FIELD,sym)功能:将符号值写入外设指定域中。PER_FMKS(REG,FIELD,sym macro)功能:可与其他_FMK/_FMKS宏的结果进行或(OR)操作,生成移位的符号值,对REG寄存器进行初始化。,通用CSL宏,PER_ADDRH(h,REG)Returns the address of a memory-mapped register for a given handle.PER_RGETH(h,REG)Ret

34、urns the value of a register for a given handle.PER_RSETH(h,REG,x)Sets the register value to x for a given handle.PER_FGETH(h,REG,FIELD)Returns the value of the field for a given handle.PER_FSETH(h,REG,FIELD,x)Sets the field value to x for a given handle.PER_FSETSH(h,REG,FIELD,SYM)Sets the field val

35、ue to the symbol value for a given handle.,CSL符号常量值,PER_REG_DEFAULT 寄存器的缺省值,复位操作后对应的寄存器值或者复位失效后归零。PER_REG_FIELD_SYMVAL 该符号常量用于指定特定外设寄存器中某个域的值。符号值的详细信息请参见附录B:CSL Registers PER_REG_FIELD_DEFAULT 域的缺省值,复位操作后对应的寄存器值或者复位失效后归零。,使用CSL句柄,使用函数PER_open()来打开设备,获得一个句柄 Handle,若打开设备失败,那么PER_open()函数返回 INV。使用函数PER

36、_close()来关闭设备。EDMA_Handle myEdma;/*Defines a DMA_Handle object,myEdma*/*Once defined,the CSL handle object is initialized by a call to PER_open.*/myEdma=EDMA_open(EDMA_CHA0,EDMA_OPEN_RESET);/*Open EDMA channel 0*/*The call to DMA_open initializes the handle,myDma.This handle can then beused in calls

37、 to other API functions.*/if(myEdma!=INV)EDMA_start(myEdma);/*Begin transfer*/EDMA_close(myEdma);/*Free DMA channel*/,DSP/BIOS操作系统,DSP/BIOS是一个实时操作系统RTOS提供通常的RTOS的功能(任务调度,任务间通讯)提供驱动程序模型,层次化地设计应用程序DSP/BIOS以CCS插件的形式提供一些实时分析工具程序跟踪:观察任务的调度、切换性能监视:观察CPU的负载状态统计:对事件做统计提供RTDX(实时数据交换),不打断DSP运行的情况下实现主机和DSP的数据交

38、换,DSP/BIOS 功能,抢先型实时、多任务操作系统内核基于优先级的、抢先型实时调度程序支持多线程管理与调度支持4种线程类型:HWI、SWI、TSK、IDL支持3种作业间的通信方式:Mailboxes、Semaphores、Queues支持周期函数,方便实现固定时间间隔的数据采集,简化多速率系统的设计提供存储器管理,实现动态存储器分配实时分析模块分析信息实时获取、传输和显示,为早期的系统级排错提供帮助DSP/BIOS模块中内含分析信息的实时获取功能分析信息的实时传输由RTDX(Real-Time Data Exchange)技术实现,完成目标DSP与主机之间的实时通信,C6000 RTDX的

39、带宽为20KByte,RTDX是在idle作业期间完成,所以对程序执行速度的影响最小主机可以显示:事件记录、线程执行顺序、执行次数的最大值或平均值和总的CPU负载等信息,DSP/BIOS 使用,为了方便使用,TI提供一个可视化的配置工具,用于配置实际系统中所需的DSP/BIOS模块DSP/BIOS是可裁剪的,只有被应用程序使用的模块才会被链接到应用程序中DSP/BIOS开销小:代码大小:1K WordsCPU占用:1MIPSDSP/BIOS采用标准的API,所以不同系列DSP之间的移植容易DSP/BIOS集成在CCS中,无需使用许可费,简单程序开发流程(1)建立项目,ProjectNew 选择

40、一个目录位置,生成一个项目文件test.pjt,简单程序开发流程(2)添加文件,ProjectAdd Files to Project添加文件(.c,.lib,.cmd,.sa,.asm),简单程序开发流程(3)代码编辑,双击项目窗口的文件名,开始编辑源程序,简单程序开发流程(4)设置编译选项,ProjectOptions,简单程序开发流程(5)Build 查找错误,ProjectBuild,简单程序开发流程(5)简单的调试,加载程序FileLoad Program设置断点,通过Watch Window观察变量单步执行,简单程序开发流程(6)Profile(剖析),ProfileEnable Clock,start new session,基本应用程序框架,int main()int num=1;Sys_Initialize();while(1)switch(num)case 1:num=2;break;case 2:num=1;break;default:break;,在主程序main()函数里,首先进行初始化,随后进入死循环while(1),在中断函数里响应各种事件,然后在死循环while(1)里执行各种相应的任务,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号