ccs33中建立-编译-调试工程及常见错误讲解.
- 格式:doc
- 大小:470.00 KB
- 文档页数:15
Part1:ccs3.3中新建一个DM6437的示例工程1、连接好板子,将板子上仿真器的usb口插到电脑上,启动ccs后,ccs会去获取板子信息并在打开的文件目录中自动生成一个文件,如图所示:笔者使用的是6437的板子2、用file-new选择建立一个dsp/bios文件在打开的对话框中选择你使用的板子的型号,如下图:3、这个时候ccs为我们建立了一个bios文件,以图表显示,里面按照所选板子的类型添加相应的硬件和其他模块。
保存这个文件到工程目录下先,文件类型为tcf。
4、保存这个文件的同时,ccs按照bios中的配置在当前目录下自动生成了一个cmd文件。
此时将tcf文件和这个cmd文件同时添加到工程中,使用5、然后需要修改一个编译选项,点击下图所示选项进去:6、打开后在编译选项对话框总会看到一个命令行,其中最后一句是-mv6400,因为用的是6467的板子,所以这个选项要修改成-mv64+;否则编译会报错:编译选项不正确;但并非所有类型的板子都要改,这个只针对型号为64+的板子。
7、file-new-source file建立一个c源文件,保存并加入到工程中。
以下是示例程序:#include <std.h>#include <string.h>#include <stdio.h>Int main(Int argc, String argv[])//main函数的类型必须这样写{unsigned int i;unsigned int sum=0;for(i = 0; i<=100; i++ ){sum += i;}printf("the sum = %d .\n",sum);printf("the program run over!\n");printf("the program run over!\n");}注意:1)如果想要printf正确输出信息,需要添加对应平台的rts64plus.lib文件。
浅析C语言程序调试过程及编程常见错误C语言是一种广泛使用的程序设计语言,常用于开发系统软件和应用软件。
在编写C语言程序时,经常会出现一些错误和bug,因此调试是程序开发过程中不可或缺的一步。
本文将从浅析C语言程序调试过程及编程常见错误两个方面进行分析。
一、C语言程序调试过程1.编译程序:在进行调试前,首先需要将源代码编译成可执行文件。
编译过程中会进行词法分析、语法分析、语义分析等操作,同时会检查语法错误并生成目标代码。
2.设置断点:在需要调试的程序代码中,通过设置断点来指定程序的一些位置停止执行。
断点可以设置在任何地方,包括函数调用、循环语句等。
3.运行程序:运行调试器,加载编译得到的可执行文件,并运行程序。
当程序执行到设置的断点位置时,会自动暂停执行。
4. 调试程序:在暂停执行的位置,可以查看变量的值、执行堆栈信息、运行指令等。
通过观察这些信息,可以发现程序中的错误或bug。
5.单步执行:在调试过程中,可以选择单步执行程序。
单步执行可以按照一条指令一条指令地运行程序,并观察程序的执行情况。
这样可以更精确地找到问题所在。
6. 修改程序:当发现错误或bug时,需要对程序进行修改。
修改可以包括更改变量的值、调整算法逻辑等。
修改后需要重新编译并重新运行程序。
7. 重复调试:进行一次修改后,需要再次运行程序并进行调试。
在多次调试中,需要逐步修复所有的错误和bug,直到程序能够正常运行。
1.语法错误:语法错误是最常见的错误之一、例如忘记加分号、括号不匹配、变量未声明等。
这些错误在编译时会被检测到,并给出详细的错误提示。
2.逻辑错误:逻辑错误是程序中最难调试的错误之一、逻辑错误导致程序的行为和期望的不一致,但不会引发编译错误。
调试逻辑错误需要仔细检查算法和代码逻辑,并通过查看变量值等调试信息逐步找出错误所在。
3.数组越界错误:当访问数组时,需要确保不超出数组的范围。
如果越界访问数组,可能导致程序崩溃或产生不可预料的结果。
CCS3.3中常见问题解决(待续)(2013-05-22 18:05:59)转载▼问题1:用CCS3.3编译时出现“entry point other than _c_int00 specified”的错误的问题解决出现的错误如下:[Linking...] \"D:\\CCStudio_v3.1\\C2000\\cgtools\\bin\\cl2000\" -@\"Debug.lkf\">> warning: entry point other than _c_int00 specifiedBuild Complete,0 Errors, 1 Warnings, 0 Remarks.此错误在Autoinit Model:Project>Build Options…>Linker>Basic选择Run-Time Autoinitialization不变,只需把Code Entry Point:项的code_start 改为:c_int0问题2:用CCS3.3编译时出现“last line of file ends without a newline”的错误的问题解决出现的错误如下:"expFile.c", line 7: warning: last line of file ends without a newline[Linking...] "C:\CCStudio_v3.3\C2000\cgtools\bin\cl2000" -@"Debug.lkf"Build Complete,0 Errors, 1 Warnings, 0 Remarks.此错误在程序.C代码的最后一行打几个回车问题3:用CCS3.3编译时出现“linking files with incompatible memory models (*\\rts2800.lib', member'args_main.obj')”的错误的问题解决出现的错误如下:>> error: linking files with incompatible memory models (library 'C:\\CCStudio_v3.3\\C2000\\cgtools\\lib\\rts2800.lib', member 'args_main.obj')>> Compilation failureBuild Complete,n Errors, 0 Warnings, 0 Remarks.此错误将库文件rts2800.lib移除(右击rts2800.lib>Remove from projet),然后添加rts2800_ml.lib库(右击Libraries>Add Files to project...>CCstdio_v3.3\C2000\cgtools\librts2800_ml.lib)。
编程中常见的错误与调试方法在编程过程中,经常会遇到各种错误,这些错误可能会导致程序无法正常执行或产生意料之外的结果。
为了解决这些问题,我们需要掌握一些常见的错误类型以及相应的调试方法。
本文将介绍一些在编程中常见的错误,并分享一些有效的调试技巧。
一、语法错误语法错误是编程中最常见的错误之一。
当编写代码时,如果违反了编程语言的语法规则,编译器将发出错误提示。
语法错误可能包括拼写错误、缺少分号、错误的标点符号等。
为了解决语法错误,我们可以仔细检查代码,特别是在出现错误提示时,查看引起错误的代码行并进行修正。
二、逻辑错误逻辑错误是指代码没有按照我们预期的方式执行,而不会被编译器检测到。
这类错误常常是由于程序员对问题理解的不准确或者代码逻辑设计有误导致的。
调试逻辑错误的方法包括使用调试工具(如断点调试)、添加输出信息以及使用单元测试等。
通过逐步追踪代码的执行过程,我们可以找到问题所在并进行修正。
三、运行时错误运行时错误是指在程序运行过程中出现的错误。
这类错误可能包括除零错误、空指针引用、数组越界等。
为了解决运行时错误,我们可以使用异常处理机制来捕获和处理异常。
通过在代码中添加适当的异常处理语句,可以使程序在出现异常时不会崩溃或产生不可预期的结果。
四、死循环死循环是指程序中出现了无法跳出的循环。
这类错误常常是由于循环条件设计有误或循环内部的控制逻辑错误导致的。
要解决死循环问题,可以使用调试工具来逐步执行代码,并检查循环条件和循环内部的代码是否正确。
另外,合理使用循环计数器和循环终止条件也可以有效避免死循环的发生。
五、内存错误内存错误是指对内存的错误使用,包括内存泄漏和内存非法访问等。
内存泄漏是指程序在使用完内存后没有正确释放,导致内存占用过多。
内存非法访问是指对未分配或已释放的内存进行读写操作。
为了解决内存错误,我们可以使用内存检测工具来检查代码中的潜在问题,并使用动态内存分配的相关方法来管理内存的申请和释放。
1. 提示错误:Trouble Setting Breakpoint with the Action "Halt Target" at 0x3ec3bf: Error 0x0000000A/-2140 Error during: Memory, Break Point, Cannot access memory address at 0x00000800 Sequence ID: 7 Error Code: -2140 Error Class: 0x0000000A设置硬件断点的方法:debug---breakpoints 在弹出的对话框中在breakpoint 下拉框中选H/W break/////但是必须要有硬件,我试过了,没有硬件的情况下是没有的,没有联上硬件的情况下是不能选择的如果第一次能够启动CCS,但接下来得到CCS不能初始化目标系统DSP的出错信息则可选择Debug→Reset DSP菜单项。
若还不能解决上述问题,你可能需要运行你的目标板所提供的复位程序。
我的工程在CCS3.3版本下不能设置断点,在CCS2.2版本下可以设置断点,是什么原因?我用合众达的XDS100仿真器和CCS3.3软件,可以给F2808的板子下载程序,但是不能设置断点。
相同的程序在CCS2.2版本下可以设置断点。
请问是怎么回事?答:在ccs3.3环境下,程序在FLASH中调试。
不能设置断点。
因为系统默认会设置两个断点。
这样在程序段中就不能设置断点了。
通过设置,CCS3.3中的选中Option中的Customize。
接着选中Program/Project/CIO,子菜单中勾选Do Not Set CIO Breakpoint AT……和Do Not Set End of Program Brea kpoint AT……。
点击确定即可。
即可在flash中调试设置两个断点了。
2 error: system error, can't open file'E:\DSP\DSP\sprc100\DSP281x_examples\kalman-zhangna01\Debug\kalman_na .obj' for input: No such file or directory。
C28x编译器错误和警告消息From Texas Instruments Wiki从德州仪器维基Jump to:跳转到:navigation导航,search搜索Translate this page to TranslateShow originalC28x Compiler Error and Warning MessagesC28x编译器错误和警告消息Contents内容[hide]∙11Introduction介绍∙22Possible Errors,Warnings and Remarks可能的错误、警告和言论∙33Common Errors and Warnings常见的错误和警告o 3.13.1Warning:build attribute vendor section TI missing in "<library or object>:compatibility cannot be determined警告:构建属性供应商部分TI失踪”<图书馆或对象>:兼容性不能确定o 3.23.2fatal error:file.....rts2800_fpu32.lib<boot.致命错误:文件.....rts2800_fpu32.lib<引导。
obj>"specifies ISArevision"C28FPU32",which is not compatible with ISArevision"C2800"specified in a previous file or on thecommand lineobj>“指定ISA修订“C28FPU32”,这不是兼容ISA修订“C2800”之前的文件中指定或在命令行上o 3.33.3Warning:entry-point symbol other than"_c_int00"specified:"code_start"警告:入口点符号除了“_c_int00”规定:“code_start”o 3.43.4Error:unresolved symbols remain....错误:未解决符号保持....o 3.53.5Error:Tag_ISA attribute value of"2"that is different than one previously seen("1");combiningincompatible files错误:Tag_ISA属性值的“2”是不同于一个以前见过(“1”);结合不兼容的文件o 3.63.6Error:Tag_Memory_Model attribute value of"1"that is different than one previously seen("2");combiningincompatible files错误:Tag_Memory_Model属性值“1”,是不同于一个以前见过(“2”);结合不兼容的文件o 3.73.7Error:placement fails for object"csmpasswds"错误:放置失败对象“csmpasswds”o 3.83.8Warning:function declared implicitly警告:数的隐式声明o 3.93.9Error:placement fails for object错误:放置失败的对象o 3.103.10Error:placement fails for object".text错误:对象放置失败”text。
Part1:ccs3.3中新建一个DM6437的示例工程1、连接好板子,将板子上仿真器的usb口插到电脑上,启动ccs后,ccs会去获取板子信息并在打开的文件目录中自动生成一个文件,如图所示:笔者使用的是6437的板子2、用file-new选择建立一个dsp/bios文件在打开的对话框中选择你使用的板子的型号,如下图:3、这个时候ccs为我们建立了一个bios文件,以图表显示,里面按照所选板子的类型添加相应的硬件和其他模块。
保存这个文件到工程目录下先,文件类型为tcf。
4、保存这个文件的同时,ccs按照bios中的配置在当前目录下自动生成了一个cmd文件。
此时将tcf文件和这个cmd文件同时添加到工程中,使用5、然后需要修改一个编译选项,点击下图所示选项进去:6、打开后在编译选项对话框总会看到一个命令行,其中最后一句是-mv6400,因为用的是6467的板子,所以这个选项要修改成 -mv64+;否则编译会报错:编译选项不正确;但并非所有类型的板子都要改,这个只针对型号为64+的板子。
7、file-new-source file建立一个c源文件,保存并加入到工程中。
以下是示例程序:#include <std.h>#include <string.h>#include <stdio.h>Int main(Int argc, String argv[])//main函数的类型必须这样写{unsigned int i;unsigned int sum=0;for(i = 0; i<=100; i++ ){sum += i;}printf("the sum = %d .\n",sum);printf("the program run over!\n");printf("the program run over!\n");}注意:1)如果想要printf正确输出信息,需要添加对应平台的rts64plus.lib文件。
标题:深度解析CCS导入工程步骤及编译报错解决方法在软件开发领域,CCS(Code Composer Studio)是一款非常重要的集成开发环境,常用于嵌入式系统的软件开发。
在本文中,我们将深入探讨CCS导入工程的步骤,并针对可能出现的编译报错,提供解决方法。
通过本文的阅读,读者可以更全面、深刻地理解CCS的使用方式,对软件开发也会有更深入的了解。
一、CCS导入工程步骤1.下载CCS软件并进行安装需要从TI官网下载最新版本的CCS软件,并按照官方指引进行安装。
安装完成后,打开CCS软件,我们可以开始导入工程了。
2.导入工程文件在CCS软件界面中,选择“File”->“Import”,然后选择“CCS Project”进行导入。
在弹出的窗口中,选择工程文件所在的路径,然后点击“Finish”按钮即可成功导入工程。
3.配置工程属性在导入工程后,需要根据具体的硬件评台和编译器配置工程属性。
选择合适的目标芯片型号、编译器版本、调试器类型等。
这些属性的设置需要根据实际情况进行调整,以确保后续的编译和调试顺利进行。
4.检查工程文件结构在导入工程后,需要仔细检查工程文件的结构,包括源文件、头文件、库文件等是否正确导入。
有时候在导入工程时,可能会出现一些文件漏导致编译报错,因此及时检查并修复这些问题非常重要。
二、编译报错解决方法在进行CCS工程编译时,可能会出现各种报错信息。
以下是常见的编译报错及相应的解决方法:1.error: #20: identifier “xxx” is undefined这种报错通常是由于未包含对应的头文件引起的。
解决方法是确认相关头文件是否正确导入,并在源文件中正确引用。
2.error: #10234-D: unrecognized pragma这种报错通常是由于编译器不支持或不识别的编译指令引起的。
解决方法是查阅编译器手册,确认该编译指令的使用方法是否正确。
3.error: #10099-D: program will not fit intoavailable memory …这种报错通常是由于代码大小超出了目标芯片的可用空间引起的。
ccs导入工程步骤以及编译报错解决方法如何进行CCS导入工程以及解决编译报错在进行嵌入式软件开发时,使用一个高效的集成开发环境(IDE)是至关重要的。
而针对德州仪器(Texas Instruments)公司的系列DSP和微控制器的软件开发,Code Composer Studio(CCS)是一个很受欢迎的选择。
在本文中,我们将探讨CCS导入工程的步骤,以及在编译过程中可能遇到的一些常见报错的解决方法。
为了顺利使用CCS进行软件开发,首先需要正确导入我们的工程。
下面列出了CCS导入工程的步骤:1. 打开CCS IDE,并选择“File”->“Import”。
2. 在弹出的对话框中,选择“Code Composer Studio”->“CCS Project”。
3. 点击“Next”按钮,并浏览到我们的工程文件所在的目录。
4. 选择工程文件,并点击“Finish”按钮。
5. CCS将会自动导入我们的工程,并生成相应的项目文件和目录结构。
在成功导入工程后,我们可以进行编译和调试。
然而,由于项目的复杂性和软件开发的特殊性,我们在编译过程中很有可能会遇到一些常见的报错。
下面是一些常见报错及解决方法:1. “Error: undefined reference to XXX”这个错误通常意味着我们在代码中引用了一个未定义的符号或函数。
解决方法是检查代码中是否正确包含了相应的头文件,并在代码中正确地定义了所需的符号或函数。
2. “Error: could not open source file XXX”当编译器无法找到所需的源文件时,这个错误会出现。
解决方法是确保源文件存在于正确的目录,并且在我们的工程中正确地指定了源文件的路径和名称。
3. “Error: conflicting types for XXX”这个错误意味着我们在不同的地方对同一个标识符进行了不一致的声明或定义。
解决方法是检查代码中对该标识符的所有声明和定义,并确保它们是一致的。
一.软件部分1.双击桌面上的Setup CCStudio v3.3图标如下图:2.选择目标芯片,这里选择TI C54X系列的芯片通过设置Family ,Platform来选择目标芯片(因为是纯软件仿真,不涉及硬件所以选simulator)3.点击左下角的Save&Quit,弹出一个对话框,选“是”,打开CCS软件4.打开的CCS界面如下:二.程序部分首先编辑源程序(有两个源程序:example.asm和example.cmd)程序附在最后(1)点击新建图标,如下图:(2)将源程序输入,并保存在F:\test(路径自己选择,文件名最好用英文和数字)(3)再次点击新建图标,输入连接命令文件,保存在相同路径下,如下图:5.新建工程(1)选择Project-new,出现如下的对话框:和两个源文件放在同一个目录下(2)向工程中添加源文件,右击左面File View中工程名,选择Add Files to Project….出现如下图的对话框:文件类型改为All Files(*.*),依次添加example.asm和example.cmd结果如下图所示:6.编译源文件,点击Rebuild All,如果源文件正确,在Build窗口,会出现0 Errors7.加载可执行文件,点击File-Load Program出现如入对话框:双击Debug,出现.out文件,双击它,出现如下图所示的界面:最左边的一栏是执行程序时需要用到的操作指令,我们选全速运行指令run,如下图:接下来就可以看程序运行结果了(我们观察下数据内存空间):输入0x0300的原因是链接文件中DATA: origin=0x0300,length=0x100。
源程序如下(标号要顶格写,伪指令不能顶格写):example.asm.title"example.asm".mmregsSTACK .usect"STACK",10H ;在所给段名的未初始化段预留空间.bss a,4 ;在.bss段为所给符号预留空间.bss x,4.bss y,1.def start ;.def说明一个在当前模块中定义,并可在其他模块中引用的符号.data ;汇编到.data段table: .word 1,2,3,4;初始化四个16位整数,分别为1,2,3,4.word 8,6,4,2.text ;汇编到.text段start:portr 0x0000,ar2 ;portr PA ,Smem 从PA口读入数据(PA=Smem)stm #0,SWWSR ;stm #lk,MMR 长立即数存到MMR ;SWWSR-软件等待状态寄存器stm #STACK+10h,SPstm #a,AR1rpt #9;重复执行下条指令8次mvpd table,*AR1+ ;程序储存器向数据存储器传送数据call sumend: B endsum:stm #a,AR3stm #x,AR4rptz A,#3 ;重复执行下条指令,A清零mac *AR3+,*AR4+,Astl A,*(y) ;A中低16位存入y中ret.endExample.cmd-e startMEMORY{PAGE 0:PROG: origin=0x3000,length=0x1000PAGE 1:STACKS: origin=0x0200,length=0x100DATA: origin=0x0300,length=0x100}SECTIONS{.text: >PROG.bss: >DATA.data: >PROG}。
CCS调试错误解决⽅案1.warning #1173-D: attribute "packed" ignored 该错误是没有使能编译器语⾔gcc,添加路径在⼯程的properties中.2.warning #10373-D: ......contains ELF object files which are incompatible with the TI-COFF output file. Ensure you are using the proper library. 输出⽂件格式应为ELF。
3.warning #225-D: function declared implicitly 通过添加的头⽂件中已经声明了函数,然⽽始终报错,则可能是头⽂件中的⽂件名未定义或出错。
该名称⼀定要与头⽂件⽂件名⼀致。
4.(Error -1176 @ 0x13500):Trouble Writing Register PC Unable to access device memory. Verify that the memory address is in valid memory. If error persists, confirm configuration, power-cycle board, and/or try more reliable JTAG settings (e.g. lower TCLK). (Emulation package 5.1.232.0) ⼯程中添加C6748.cmd⽂件(*.cmd,该⽂件要和⾃⼰的开发板型号相对应)。
在⼯程中单机⼯程名,右键,选择添加⽂件(Add files),然后把该cmd⽂件添加进去就可以解决所有问题了。
其他系列的DSP如果出现这样的问题,不妨这样试试看,应该是有⽤的。
CCS调试DSP常见错误及解决⽅法实验常见错误及解决⽅法1、启动CCS时出现如下错误:错误原因:以前在CCS setup⾥设置当前使⽤的平台为sdgo2xx(硬件仿真),或者同时设置为sdgo2xx与c2xx simulator,所以进⾏软件仿真时应设置当前正在使⽤的为c2xx simulator。
解决⽅法有两种:⽅法1:点击“终⽌”,然后重新设置CCS setup,将sdgo2xx移除。
⽅法2:点击“忽略”,然后在“Parallel Debug Manager”中Open菜单下选择c2xx simulator2、编译连接时出现如下错误:错误原因是:⽂件命名、⽂件夹命名或保存位置不正确。
⽂件命名:不能以数字开头(包括mak⽂件的名字)⽂件夹命名:不能为中⽂保存位置:项⽬⽂件(mak⽂件)存储的位置⼀定要与其它⽂件(C⽂件、asm⽂件、h ⽂件、cmd⽂件、等)放在同⼀⽬录下,且最好放在“x:\tic2xx\myprojects”⽬录下。
3、编译连接时出现如下错误提⽰:warning: entry point symbol _C_int0 undefined错误原因:⽤C语⾔开发的DSP程序在向⼯程⽂件添加⽂件时没有添加运⾏⽀持库⽂件rts2xx.lib注意rts2xx.lib的路径:在C:\tic2000\c2000\cgtools\lib⽬录下4、CCS与CCS setup均不能启动,提⽰:不能正确初始化程序或者CCS运⾏到某个地⽅后(例如编译连接后)不能停⽌,观察任务管理器,发现cc_app.exe占⽤CPU为100%,即CCS已经死了。
错误原因:CCS被病毒感染或破坏,或者多个版本CCS共存,相互⼲扰。
解决⽅法:⽅法1:重新启动电脑⽅法2:⽤运⾏正确的cc_app.exe程序替换被破坏的cc_app.exe程序。
5、编译连接通过,加载程序后,在运⾏时出现如下错误提⽰:错误可能原因:第⼀种可能:没有加载CMD⽂件第⼆种可能:CMD⽂件已加载,但CMD⽂件编写有问题,存储器配置、定位不正确第三种可能:⽤C语⾔编写的DSP程序,C初始化设置错误,已修改C Initialization 设置,⽅法:Project ——> Option——> Linker6、探测点设置不成功注意:①在设置探测点时应先加载程序②如下图所⽰,应先点击Probe Point中的选择框,使volume.c line 63——> NoConnection 被选中,然后在选Connect下拉菜单,找到相关联的数据⽂件,再点击Replace ,最后点“确定”。
CCS 软件使用时错误要点及解决方法CCS 软件使用经验四则1.使用CCS3.3 编译TI 的28335,产生如下警告:warning: entry-point symbol other than _c_int00 specified: code_start一种解决方法,不用管它,因为C 入口地址最终是由用户的CMD 文件覆盖的,警告不影响使用。
二是,在编译选项里面link 标签页,把Code Entry Point(-e)编辑框里面的code_start 删除,就不会产生该警告了。
2.使用CCS4 编译28335 例子程序,错误如下:This project was created using a version of Code GeneraTIon tools that is notcurrently installed: 5.2.1 [C2000]. Please install the Code GeneraTIon tools of thisversion, or migrate the project to one of the supported versions.解决方法:右击项目,打开属性对话框,选CCS BUILD 标签,在Code GeneraTIon tools 栏目里面选中TI V6.0.1 即可.3.使用CCS4 编译28335 例子程序,错误如下:CCS4 No rule to make target `clean'.解决方法:右击项目,打开属性对话框,选Info 标签,Text file encodingother,选中UTF-8,问题解决,然后,再改为原来的Text file encodingInherited from container(GKB),仍可以正确编译4.使用CCS3.3 编译28335,错误如下:can't find input file 'rts2800_fpu32.lib'解决办法:在ccs 的component manager 里边选择Code Composer Studio->build tools->tms320c28xx->选中Texas Instrument C2000 Code generation tools 保存设置退出,重新编译,上面的问题(WARNING: invalid compiler option -- float_support=fpu32 (ignored) 和error:can't find input file'rts2800_fpu32.lib')就不会出现了。
手把手教你构建一个完整的工程注意:在构建工程之前请先把仿真器正确连接好试验箱和计算机,接通试验箱电源。
1、双击图标,进入CCS环境。
2、打开CCS选择projec t→New3、在弹出的对话框中点击下图红色圆圈中的按钮,选择工程合适的位置。
注意:路径中不要有中文。
选择好工程需要建立的位置后,点击确定。
4、在弹出的对话框中,输入工程的名字。
例如,test。
5、点击Finish。
出现下图对话框,红圈内为添加的工程,点击工程名前面的加号,出现下图。
6、打开CCS选择Fil e→New→Source File 命令。
7、点击保存按钮。
8、输入文件的名字,点击保存。
注意:C源程序的后缀名应为.c;汇编程序的后缀名为.asm;CMD文件的后缀名为.cmd。
例如:test.c9、如下图所示,单击右键,将test.c添加到工程中。
10、选中test.c,点击打开。
11、如下图所示,即可在test.c文件中输入编写的C程序了。
注意随时保存自己编写的源文件。
12、重复上述6—11步,添加cmd文件。
13、同样的方法将rts.lib 添加到工程中。
rts.lib在C:\CCStudio_v3.3\C5400\cgtools\lib目录下。
■设置编译和连接选项1、点击Project 选择Build Opintions;2、在弹出的对话框中设置相应的编译参数,一般情况下,按默认值就可以。
3、在弹出的对话框中选择连接的参数设置,Heap Size:1000;Stack Size:1000;点击确定结束设置。
4、点击Projec t→Build命令,对工程进行编译,如正确则生成out文件。
5、点击Fil e→load program ,在弹出的对话框中载入debug文件夹下的.out可知性文件。
6、装载完毕。
7、点击debu g→Go Main回到C程序的入口。
自此,一个工程从建立到运行所有的过程介绍完毕,关于汇编工程的建立和C源程序工程的建立大同小异,请同学们自行设置。
1."D:/Program Files/CCS/C5500/csl/include/csl_chiphal.h", line 201: fatal error: #error NO CHIP DEFINED ?芯片型号没有确定解决方法:Build option> complier> 添加:-d"CHIP_5509" –ml2. Error: W ARNING: PAGE BOUNDARY CROSSING DETECTED AT PROGRAM COUNTER 0x1797 ?3. undefined first referencedsymbol in file--------- ----------------__mpyd D:\\cs\\PROJECT\\DSP\\5509\\ok\\sinewave\\Debug\\sine.obj_sin D:\\cs\\PROJECT\\DSP\\5509\\ok\\sinewave\\Debug\\sine.obj_puts D:\\cs\\PROJECT\\DSP\\5509\\ok\\sinewave\\Debug\\sine.obj__divd D:\\cs\\PROJECT\\DSP\\5509\\ok\\sinewave\\Debug\\sine.obj__fltid D:\\cs\\PROJECT\\DSP\\5509\\ok\\sinewave\\Debug\\sine.obj>> error: symbol referencing errors - './Debug/sinewave.out' not built ?解决方法:变量为定义。
添加运行时库rts55.lib4."main.c", line 12: fatal error: could not open source file "evmdm6437.h" ?当工程转移时,有的.h 或者.c文件的路径变了,编译时报错。
C语言调试技巧调试工具和常见错误的排查方法C语言调试技巧:调试工具和常见错误的排查方法在编程过程中,调试是一个必不可少的环节。
无论是初学者还是经验丰富的开发者,都会遇到各种错误和问题。
为了提高效率和准确性,我们需要掌握一些C语言调试技巧,并了解常见错误排查的方法。
本文将介绍一些常用的调试工具和错误排查技巧,帮助读者更好地解决问题。
一、调试工具1. 编译器调试器大多数编译器都配备了调试器,例如GNU工具链中的GDB调试器。
调试器可以让我们逐行执行代码,查看变量的值以及程序执行的流程。
它还可以设置断点,让程序在特定位置中断,以便进行逐步跟踪和分析。
2. 日志输出在代码中插入适当的日志输出语句是一种简单而有效的调试方法。
通过在关键代码部分插入打印信息,我们可以检查程序的执行顺序、变量的值以及函数的返回结果。
可以使用printf函数输出信息,但在调试完毕后要记得将日志输出语句删除或注释掉,以免影响程序的性能。
3. 内存检查器常见的内存检查器有Valgrind和AddressSanitizer等。
内存检查器可以帮助我们发现内存泄漏、越界访问、重复释放等问题。
通过使用内存检查器,我们可以及时发现潜在的内存错误,并及时修复。
二、常见错误排查方法1. 编译错误当编译出现错误时,我们需要仔细阅读编译器的错误信息,检查代码中是否存在语法错误、拼写错误或未声明的变量等问题。
同时,也可以使用编译器提供的额外选项来显示更详细的错误信息,例如gcc的-Wall选项可以显示警告信息。
2. 运行时错误运行时错误包括崩溃、段错误、无限循环等问题。
当程序崩溃时,可以使用调试工具来定位错误发生的位置,并查看程序的堆栈跟踪信息。
通过分析堆栈跟踪,我们可以找到错误的源头,并进行相应的修复。
3. 逻辑错误逻辑错误是指代码逻辑上的问题,程序在编译和运行时都没有报错,但输出结果与预期不符。
对于逻辑错误,可以使用断点、日志输出、单元测试等方法进行定位和修复。
DSP CCS初学调试问题汇总1.DSP/BIOS应用程序调试在CCS2.0 的emulator写dsp/bios 的程序,编译链接无错误,而点击LOAD Program下载xxx.out完成时弹出如下对话框:RTDX target application does not match emulation protocol!Loaded program was created with an rtdx library which does not match the target device这将导致RTDX(实时数据交换)不能使用分析:RTXD可以在DSP/BIOS中使用,也可以脱离DSP/BIOS使用;目前CCS Simulator不支持RTDX,故RTDX必须在Emulator下使用,即还需要硬件仿真器和DSP目标板。
故这是由于下载BIOS/DSP程序时RTDX设置错误导致的;问题解决如下:把DSP/BIOS配置窗口中的input/output-->RTDX -real-Time Exchange settings的RTDX mode 改为JTAG(原来是simulator),重新编译后LOAD,上述警告消除,可以在模拟的情况下进行BIOS调试了。
PS:虽然simulator能编译运行DSP/BIOS程序,并能提供实时查询程序运行情况(主要是CPU负荷,时序,日志以及线程等)。
但实际开发DSP/BIOS应用程序时为了真实的了解目标板的各种信息,仅有Simulator(软件仿真器)是不行的,还需要使用Emulator(硬件仿真器)和DSP/BIOS插件(安装时已装入)。
2.RTDX应用程序调试RTDX测试DSP Target传输数据到PC机:a)创建工程,编辑源代码(.c/。
asm),加入头文件(.h),库文件(.lib)以及链接命令文件(.cmd)b)添加修改具有实时数据传输的RTDX语句包括:#include <rtdx.h>; RTDX头文件(rtdx.h)RTDX_CreateOutputChannel( ochan ); 定义一个全局的PC机数据输出通道,通道名可以任取TARGET——INITIALIZE();初始化DSP目标系统;RTDX_enableOutput( &ochan ); 使能输出通道写数据;status=RTDX_write( &ochan,&data,sizeof(data) ); 传送数据至PC;RTDX_disableOutput( &ochan ); 禁止输出通道传输数据。
Part1:ccs3.3中新建一个DM6437的示例工程1、连接好板子,将板子上仿真器的usb口插到电脑上,启动ccs后,ccs会去获取板子信息并在打开的文件目录中自动生成一个文件,如图所示:笔者使用的是6437的板子2、用file-new选择建立一个dsp/bios文件在打开的对话框中选择你使用的板子的型号,如下图:3、这个时候ccs为我们建立了一个bios文件,以图表显示,里面按照所选板子的类型添加相应的硬件和其他模块。
保存这个文件到工程目录下先,文件类型为tcf。
4、保存这个文件的同时,ccs按照bios中的配置在当前目录下自动生成了一个cmd文件。
此时将tcf文件和这个cmd文件同时添加到工程中,使用5、然后需要修改一个编译选项,点击下图所示选项进去:6、打开后在编译选项对话框总会看到一个命令行,其中最后一句是-mv6400,因为用的是6467的板子,所以这个选项要修改成-mv64+;否则编译会报错:编译选项不正确;但并非所有类型的板子都要改,这个只针对型号为64+的板子。
7、file-new-source file建立一个c源文件,保存并加入到工程中。
以下是示例程序:#include <std.h>#include <string.h>#include <stdio.h>Int main(Int argc, String argv[])//main函数的类型必须这样写{unsigned int i;unsigned int sum=0;for(i = 0; i<=100; i++ ){sum += i;}printf("the sum = %d .\n",sum);printf("the program run over!\n");printf("the program run over!\n");}注意:1)如果想要printf正确输出信息,需要添加对应平台的rts64plus.lib文件。
这里是64+平台所以是在C:\CCStudio_v3.3\C6000\cgtools\lib目录下的rts64plus.lib文件,否则ccs 会提示如下警告和错误:>> warning: entry point symbol _c_int00 undefinedundefined first referencedsymbol in file--------- ----------------_printfE:\\WorkContent\\projectExample\\Test\\Debug\\test.obj>> error: symbol referencing errors - './Debug/Test.out' not built2)如果想要printf正确输出信息,cmd文件中必须指定heap的大小,即cmd文件这样写:-c-stack 0x00001000 /* Stack Size */-heap 0x00001000 /* Heap Size *///前面这三项必不可少MEMORY{L2RAM: o = 0x10800000 l = 0x00020000DDR2: o = 0x80000000 l = 0x10000000}SECTIONS{.bss > L2RAM.cinit > L2RAM.cio > L2RAM.const > L2RAM.data > L2RAM.far > L2RAM.stack > L2RAM.switch > L2RAM.sysmem > L2RAM.text > L2RAM.ddr2 > DDR2}另外,我在使用dsp/bios自动生成的cmd文件进行编译的时候,不会报错误或警告,但是printf就是不能输出任何东西,后来解决了,具体解决方法见后面的:“ccs编译中常见的编译错误及解决方法”的第4部分8、compile-rebuild all;无错误提示。
此时项目就建立并编译好了。
下面就要把程序加载到板子上运行了。
9、首先要先连接板子,点击debug->connect10、如果连接成功,会看到下面的效果:未连接时:连接成功后:连接成功的同时,ccs会打开一二Disassembly窗口,如下图:11、加载程序吧,程序编译后,会在当前目录的Debug目录下生成一个*.out的文件,此例中的文件是“6467EXAM.out”;通过file->load Program加载这个文件加载后,Disassembly窗口中会有所变化,如下图:12、Debug->Run去吧提示:1 Ccs的项目不支持创建在中文目录下。
2 项目移动到其他文件夹下面时,需要修改*.pjt中的[Project Settings]ProjectDir="E:\WorkContent\projectExample\6467EXAM" 到新的目录。
很简单的一个例子。
希望能帮助入门的朋友。
Part2:ccs中工程的创建-改变工程目录时注意的细节以6437为例:1、在安装目录下,打开如下路径下的示例工程:video_loopbackC:\CCStudio_v3.3\boards\evmdm6437_v2\tests\video_loopbackOk,如果板子没问题,肯定能编译成功的。
2、有时候我们需要搬移自己的工程到别的目录或别的机器上去,此处,将这个工程拷贝到F盘中去,再重新打开,编译,你会发现此时提示以下错误:"main.c", line 12: fatal error: could not open source file "evmdm6437.h""tvp5146.h", line 12: fatal error: could not open source file "evmdm6437_i2c.h""video_loopback_test.c", line 12: fatal error: could not open source file "evmdm6437_dip.h"找不到对应的头文件了??并且你在工程中也打不开这几个文件,打开时会提示:3、看来ccs在找这些个头文件时,没有从工程中获取正确的路径信息,打开项目文件,此处是:video_loopback.pjt,会发下以下几行:["Compiler" Settings: "Debug"]Options=-g -q -fr".\Debug\" -i"..\..\include\" -d"_DEBUG" -mv6400+["Compiler" Settings: "Release"]Options=-q -o3 -fr".\Release\" -i"..\..\include\" -mv6400+看意思是说,包含的头文件的路径是在..\..\include\目录下面;如果这个项目在原来默认的目录下,那么是正确的。
因为的确能看到所谓的include文件夹,他们就是在ti默认安装目录下面的。
但是由于我们改变了项目的路径,那么这些个目录肯定是不对的,所以ccs无法找到这些个文件了。
4、那是不是修改过来就好了。
答案是肯定的也是否定的,如果我们找到这个include目录,并写到pjt文件中,如下所示:["Compiler" Settings: "Release"]Options=-q -o3 -fr".\Release\"-i"C:\CCStudio_v3.3\boards\evmdm6437_v2\include\" -mv6400+那么肯定是可以的。
但是如果我们拷贝到别的机器上,而别的机器上的开发板驱动或ccs的安装路径和我们不一样的话呢?难道重新再找一遍再写一遍??5、可能你已经想到了,使用相对路径,那么我们先看看ccs都在我们环境里面注册了那些环境变量:5.1、打开cmd,切换到c盘。
然后输入以下命令:set>a.txtSet命令是查看系统中注册的环境变量的。
>操作符是用来重定向用的,可以将查询到的结构重定向到一个txt文件中。
所以上面的命令是那么写的。
5.2打开a.txt.会看到一堆的环境变量。
其中有这么几个是ccs相关的:BIOSDVSDK_INSTALL_DIR=C:\dvsdk_1_01_00_15BIOSUTILS_INSTALL_DIR=C:\dvsdk_1_01_00_15\biosutils_1_00_02BIOS_INSTALL_DIR=C:/CCStudio_v3.3/bios_5_31_07BSL_EVMDM6437_INSTALLDIR=C:\CCStudio_v3.3\boards\evmdm6437_v 25.3第四个就是我们想要的目录了。
那么现在修改pjt文件中的那两行内容为:["Compiler" Settings: "Debug"]Options=-g -q -fr".\Debug\" -i"%BSL_EVMDM6437_INSTALLDIR%/include"-d"_DEBUG" -mv6400+["Compiler" Settings: "Release"]Options=-q -o3 -fr".\Release\"-i"%BSL_EVMDM6437_INSTALLDIR%/include" -mv6400+5.4编译,连接成功。
并且再也不怕移来移去了。
5.5注意:有时候可能还有一个地方需要该:[Project Settings]ProjectDir="E:\WorkContent\projectExample\video_loopback"指向项目文件的绝对路径。
而项目文件中的相对路径都是基于该路径。
Part3:ccs编译中常见的编译错误及解决方法1 fastcopy 提示找不到ialg.h等头文件,打开cmd文件后看到目录包含命令有:-i"%XDAIS_INSTALL_DIR%/packages但是系统中没有XDAIS_INSTALL_DIR这个环境变量,于是找到xdais的安装目录:C:\dvsdk_1_01_00_15\xdais_5_21\然后添加系统环境变量:变量名:XDAIS_INSTALL_DIR变量值:C:\dvsdk_1_01_00_15\xdais_5_21\注销或重启或者kill掉explorer后在运行即可2 ccs提示:could not open source file "ti/sdo/fc/acpy3/acpy3.h"。