complier>添加:-d"CHIP_5509"–ml2.Error:WARNING:PAGEBOUNDARYCROSSINGDETECTEDATPRO" />
当前位置:文档之家› CCS调试常见报错

CCS调试常见报错

CCS调试常见报错
CCS调试常见报错

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" –ml

2. Error: W ARNING: PAGE BOUNDARY CROSSING DETECTED AT PROGRAM COUNTER 0x1797 ?

3. undefined first referenced

symbol 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.lib

4."main.c", line 12: fatal error: could not open source file "evmdm6437.h" ?

当工程转移时,有的.h 或者.c文件的路径变了,编译时报错。

解决方法:将文件evmdm6437.h直接复制后放到工程文件所在的文件夹。

5. "sram_test.c", line 73: error: argument of type "unsigned short *" is incompatible with parameter of type "unsigned int *" ?

emif_read32( base, size ,&EMIF_DATA[0][0]);

解决方法:错误的将EMIF_DA TA定义为一个16位的数组Uint16 EMIF_DA TA[4][2048];

6. error: argument of type "unsigned short (*)[2048]" is incompatible with parameter of type "unsigned short *" ?

Uint16 DATA_EMIF[4][2048];

emif_read32( base, size ,DA TA_EMIF[0]);

当DATA_EMIF[0] 换成DATA_EMIF就报错,

7. Heaps are enabled, but the segment for DSP/BIOS Objects (MEM.BIOSOBJSEG) is not set correctly. Please create a heap in one of your data segments and set MEM.BIOSOBJSEG to it. ?

我用dsp bios生成程序在保存时出现一下错误,网上搜索有人也遇到此问题,经多方探索找到解决方案,先公布如下,希望对后学者有帮助。我用的是TMS320DM6437 错误如上:解决方法:右键点击MEM-Memory section manager->properties ,你可以看到segment for DSP/BIOS Objects和segment for malloc()后跟的选项只有MEM_NULL,问题就出在这里,你可以将你所定义的MEM下的任一选项:SRAM,MSARAM等等,拿MSARAM为例,右键MSRAM->properties 将"enter a user defined heap identifier lable "打勾,在"heap size"中输入大小,将"enter a user defined heap identifier label "打勾,在"heap identifier label "中输入任

意堆栈名。点“应用”、“确定”。补充下,修改完MSARAM后,右键点击MEM-Memory section manager->properties ,你可以看到segment for DSP/BIOS Objects和segment for malloc()后跟的选项改为MSARAM即可。

8.

>> linker.cmd: error: system error, can't open file '/.obj' for input: No such

file or directory

>> Compilation failure ?

在link.cmd 文件中去掉-l rts64plus.lib 就报上面错误。

9.

>> error: can't allocate .text, size 00002ca0 (page 0) in IRAM (avail: 000001c0) ?

IRAM中数据过大,无法再分配数据内存。可以查看debug里的.map文件查看十分代码和数据所在内存过大。

解决方法:将数据定义到DDR中,使用一下语句:

#pragma DATA_SECTION(input_mti_imag,".DDR"); //将input_mti_imag数组分配到DDR中。

10. "BIOScfg.s62", ERROR! at line 365: [ ***** USER ERROR ***** - ]

Project build options do not match Global configuration settings.

Compiler options do not specify -mv64+, but configuration is for

C64x+ ?

添加bios后,及报错。由于Project build options与Global configuration settings设置不匹配。解决方法:Project build options——》Compiler——》Basic——》Target Version 改成c64x+ 与BIOS——》Global configuration settings(右击)——》General——》Target Board Name 一样。

11. 主板无法连接。

Error connecting to the target:

Error 0x80002240/-233

Fatal Error during: Initialization, OCS, Control,

This error was generated by TI's USCIF driver.

SC_ERR_PATH_BROKEN <-233>

The JTAG IR and DR scan-paths cannot circulate bits, they may be broken.

An attempt to scan the JTAG scan-path has failed.

The target's JTAG scan-path appears to be broken

with a stuck-at-ones or stuck-at-zero fault.

Board Name: DM6437 XDS560 Emulator

Cpu Name: ICEPICK_C_0

Abort: Close Code Composer Studio.

Retry: Try to connect to the target again.

Cancel: Remain disconnected from the target

Diagnostic: Run diagnostic utility.

解决方法:

12.

Power Failure on Target CPU

Failed to remove the debug state from the target before disconnecting. There may still be breakpoint opcodes embedded in program memory. It is recommended that you reset the emulator before you connect and reload your program before you continue debugging.

DSP设置段点读数据,就掉。

解决方法:FPGA在运行过程中一直占用EMIF总线未释放,使得DSP 读取数据时冲突,导致掉线。只要在FPGA代码中EMIF 输出增加一变量。工作是作为输出平时为高阻。这样就不会因为读数据或初始化EMIF就掉线了。

13.

在dm6437评估板上用ndk包调试网口(emac)的时候,每次加载例程,都会报错(见下图),单独编译是没有问题的。如果在加载这个例程之前先加载一个评估板自带的完好例程,再运行初始化函数EVMDM6437_init( );,接着就可以加载ndk中的例程到评估板中去了,

编译好client.pjt工程后,下载.out文件时出现以下错误。查找.MAP文件没有发现内存溢出的情况。

在先运行另一个工程的EVMDM6437_init( ); 后就不报上面的错误。但直接加入EVMDM6437_init( ) 到主函数还是报错。

解决方法:在评估板的提供商官网上下载了DM6437EVM配套资料,里面包含有调试所需的GEL文件。直接load下的GEL文件,再load工程文件,还是不行。后来在熊老师的帮助调试下,解决了这个问题。具体操作:发现是gel文件里面只要单独执行Setup_PLL2_DDR_162_MHz_OscIn( ); Setup_DDR_162_MHz( ); 这两个函数,再load工程就可以。初步怀疑是gel文件在初始化了DDR,后又恢复了系统以前的设置,就相当于初始化。具体的还是看调试验证。不过问题已也算解决了。

GEL文件load之后,执行时CCS的状态显示图:

14.新加工板板无法下载程序。

PC通过XDS560连接DSP,向DSP下载.OUT文件时报下图错误。

电压算正常:dsp核电压1.2v;dspIO电压3.24v;DDR2供电电压1.74v。上电顺序也是对的,先核上电,在IO上电。

发现有可能是大小端有问题,连上之后CCStudio:Parall Debug Manager 显示的是big endian,应该是litter endian。可是在dm6437datasheet上没有发现对应的管脚,但是发现了dm6437只支持小端模式(Supports Little Endian Mode Only),那就是说没有这个款芯片没有所谓的设置大小端的管脚。

解决方法:大小端的问题,刚刚试了一下网上说的一个方法:上电以后,复位了一下,再加载.OUT 文件就没有报错。CCS manager 显示的也变成litter endian了。老实说我还是不晓得为什么会这样。

类似问题的帖子:

https://www.doczj.com/doc/f64554962.html,/support/dsp/davinci_digital_media_processors/f/99/p/74016/364384.aspx

15.加工板新板使用调试emac口是自动running

我在load .out文件CCS就自动running,这是怎么回事?

ccs3.3——》option——》customize——》go main automatic设置了。

用的片子是DM6437,调试的是网口,工程用到了DDR2。

工程编译的没有问题。

16.加工板旧版连接报错。

Error connecting to the target:

Error 0x80000240/-1146

Fatal Error during: Initialization, OCS,

Invalid data was scanned by the emulation controller.

Verify the board setup to make sure the scan chain is properly

defined.

If the setup is correct, then RESET EMULATOR. This will disconnect each

target from the emulator. The targets should then be power cycled

or hard reset followed by an emureset and reconnect to each target.

Board Name: DM6437 XDS560 Emulator

Cpu Name: C6400PLUS_0

Abort: Close Code Composer Studio.

Retry: Try to connect to the target again.

Cancel: Remain disconnected from the target

Diagnostic: Run diagnostic utility.

17.将MA TLAB生成的.DA T文件导入到CCS中的时候,显示的数据有问题,每个16位的有效数据中间都有一个16位的0x0000

解决方法:在matlab中将两个16位的数据拼成32位的数据保存成.DAT,再导入CCS。DA T文件32位数据图:

CCS导入DAT文件正确数据图:

18. CCS5.3为什么不能在.H中声明函数?

软件调试技巧

软件调试技巧 一、软件调试方法 软件调试有很多种方法。常用的有4种,即强行排错法、回溯排错法、归纳排错法和演绎排错法。 1.强行排错法 这种方法需要动脑筋动的地方比较少,因此叫强行排错。通常有以下3种表现形式: ●打印内存变量的值。在执行程序时,通过打印内存变量的数值,将该数值同预期的数值进行比较,判 断程序是否执行出错。对于小程序,这种方法很有效。但程序较大时,由于数据量大,逻辑关系复杂,效果较差。 ●在程序关键分支处设置断点,如弹出提示框。这种方法对于弄清多分支程序的流向很有帮助,可以很 快锁定程序出错发生的大概位置范围。 ●使用编程软件的调试工具。通常编程软件的IDE集成开发环境都有调试功能,使用最多的就是单步调 试功能。它可以一步一步地跟踪程序的执行流程,以便发现错误所在。 2.回溯排错法 这是在小程序中常用的一种有效的调试方法。一旦发现了错误,可以先分析错误现象,确定最先发现该错误的位置。然后,人工沿程序的控制流程,追踪源程序代码,直到找到错误根源或确定错误产生的范围。 3.归纳排错法 归纳法是一种从特殊推断一般的系统化思考方法。归纳法调试的基本思想是,从一些线索(错误的现象)着手,通过分析它们之间的关系来找出错误,为此可能需要列出一系列相关的输入,然后看哪些输入数据的运行结果是正确的,哪些输入数据的运行结果有错误,然后加以分析、归纳,最终得出错误原因。 4.演绎排错法 演绎法是一种从一般原理或前提出发,经过排除和精化的过程来推导出结论的思考方法。调试时,首先根据错误现象,设想及枚举出所有可能出错的原因作为假设。然后再使用相关数据进行测试,从中逐个排除不可能正确的假设。最后,再用测试数据验证余下的假设是否是出错的原因。 二、调试的原则 调试能否成功一方面在于方法,另一方面很大程度上取决于个人的经验。但在调试时,通常应该遵循以下一些原则。 1.确定错误的性质和位置的原则 用头脑去分析思考与错误征兆有关的信息,避开死胡同。调试工具只是一种辅助手段。利用调试工具可以帮助思考,但不能代替思考。通常避免使用试探法,最多只能将它当作最后的手段,毕竟小概率事件有时也会发生。 2.修改错误的原则 在出现错误的地方,很可能还有别的错误。修改错误的一个常见失误是只修改了这个错误的征兆或这个错误的表现,而没有修改错误本身。当新修正一个错误的同时又引入新的错误。 三、有效减少调试时间 1.绘制程序流程图 一些程序员认为,绘制程序流程图是件繁琐的事,而且浪费时间。其实不然,当读者对着偌大的程序一筹莫展时,面对纷纭复杂的关系理不出头绪时,使用程序流程图绝对可以事半功倍。 因此建议在编制程序前先绘制流程图,这样编程的思路有条理,调试时同样会有条不紊。若编制程序之前没有绘制流程图,当排错没有进展时,可以马上编写流程图。你会发现,程序中某些分支或细节被忽略了,这些细节可能就是程序出错的地方。 2.不要过多地依赖单步调试 有些程序对时间很敏感。数据只在那么一瞬间有效,可谓稍纵即逝。所以等到单步执行到那里时,

错误处理及调试_教学设计.

《PHP程序设计基础教程》 教学设计 课程名称:PHP程序设计基础课程 授课年级:2014年级 授课学期:2015学年第二学期 教师姓名:陆启军

E_USER_NOTICE ] ) 在上述声明中,第一个参数是错误信息内容,第二个参数是错误类别,默认为E_UESR_NOTICE。 需要注意的是,在使用trigger_error()函数触发错误之前,一定要先使用ini_set()函数让错误显示,否则使用trigger_error()函数无法触发错误。 第二课时 (如何处理错误) 如何处理错误 ?显示错误报告 在实际开发过程中,不可避免的会出现各种各样的错误,为了提高开发效率,PHP语言提供了显示错误的机制,该机制可以控制是否显示错误以及显示错误的级别等。在PHP中实现显示错误的机制有如下两种方式:?修改配置文件 通过直接配置php.ini文件来实现显示错误报告,代码如下所示:error_reporting(E_ALL & ~E_NOTICE); display_errors = on; 上述代码中,error_reporting用于设置错误级别,display_errors用于设置是否显示错误报告。 ?error_reporting()和ini_set()函数 通过PHP语言提供的error_reporting()和ini_set()函数实现显示错误报告,代码如下: 上述代码中,ini_set()函数用来设置错误信息是否显示,error_reporting()函数用于设置错误级别。第2行表示显示除E_NOTICE之外的所有级别错误,第3行表示显示错误信息。 ?die()函数 die()函数可以用来定义输出错误信息,常用于业务逻辑的错误显示,代码如下: die()函数与or运算符的配合使用,代码如下所示: ?记录错误日志 网站已经上线或者正在运行,错误显示出来会影响用户体验,这时就需

DSP实验基于CCS报告

《DSP与嵌入式系统》实验报告 目录 实验一 IO端口实验 一、实验目的 了解 ICETEK-VC5416-A板在TMS320VC5416DSP在IO空间上的扩展。 了解 ICETEK-VC5416-A板上指示灯扩展原理。 学习在C 语言中使用扩展的控制寄存器的方法。 二、实验原理 I/O 空间的扩展及使用: C54x DSP 的 I/O 空间被保留用于外部扩展。由于在程序中访问 I/O 空间的语句只有 in 和out 指令,所以在扩展时一般将带有控制能的寄存器或分离地址访问的存储单元的地址映射到 I/O 空间,访问这部分的单元又称 I/O 端口访问。例如:可将控制指示灯组的寄存器或锁存器映射到一个 I/O 端口地址上;A/D、D/A 等专用芯片控制端和状态寄存器也常映射到 I/O 端口上。总之,在 I/O 空间中扩展的设备一般重点用于控制,而使用大片连续存储空间的存储器单元一般映射到数据空间。ICETEK-VC5416-A 板将指示

灯、DIP 开关、A/D、D/A、异步串行通信接口和 WatchDog的控制端等映射在 I/O 空间。 0001-0001h:WatchDog 控制寄存器 3006-3006h:A/D 转换控制寄存器 1000-1001h:D/A 转换控制寄存器 2000-2007h:异步串口通信控制寄存器 3002-3002h:板上指示灯控制寄存器 3003-3003h:板上 DIP 拨动开关控制寄存器 ICETEK-VC5416-A 实验箱上控制模块也使用 I/O 端口控制大部分设备: 8001-8001h:读-键盘扫描值,写-液晶控制寄存器 8002-8002h:液晶控制寄存器 8003-8004h:液晶显示数据寄存器 8005-8005h:发光二极管显示阵列控制寄存器 8006-8006h:保留 8007-8007h:发光二极管显示阵列控制寄存器 8008-9FFFh:保留 在程序中,访问 I/O 端口的语句较为简单。对于汇编语言程序,可用 PORTR 和 PORTW 指令,例如,从端口0008h读入一个字到变量 x 的指令为 portr 8,x,而向端口 000Ch 输出x变量的值的指令为 portw #0Ch,x;在 C 语言中访问 I/O 端口则必须首先声明 I/O 端口的类型,然后才能访问,以下语句仍完成上面汇编语言所完成的功能: ioport unsigned int port0008; ioport unsigned int port000C; x = port0008; 指示灯扩展原理 详见上图,其中 7 个指示灯是 D3-D9;D10 在硬件上没做控制扩展。 实验程序流程图

3-2节 程序调试的方法

3-2节程序调试的方法 编程是一件需要认真和细心的工作。通过让学生从李明同学学习程序设计时所遇到的困难和他情感上所表现出来的“窘态”故事开始,道出程序调试不但需要技巧、更需要有耐心和毅力的道理,从而激发学生学习程序调试的兴趣和热情,拉开了本节的充幕。 接着,布置任务,让学生输入课本P83四段有错误的程序,要求学生自己探究,并改正程序。 最后分析程序运行的情况,总结出程序运行出错的四种类型: 一、拼写错误 1)在工程窗口中,看到红色文字显示的程序是有拼写错误的。 2)同时还要检查其它的拼写错误 Pring改为print Integr改为integer 2、编译时出现的错误 S应该改为a 3、运行时出现的错误 运行时的错误是指编译通过后,在执行程序时出现的错误,如用0作除数等。

例如:a=0的时候,将会出现0作除数的情形 4、逻辑错误 程序运行后,得出的结果不是正确的。这说明程序存在逻辑错误。逻辑错误产生 的原因很多,运算符使用不正确、语句次序不对、循环的设置不对等都可以产生 逻辑错误。 如这里的程序的出口应该是tree>=100 任务: P85 马上行动:

你和同学们能解决以上的问题吗?以合作、交流的方式大胆尝试一下,你会有意外的收获! 一、本节小结: 本节主要通过任务驱动、探究的形式,介绍了程序的错误类型,分析了产生错误的原因,程序的调试与排错的方法,让学生“从做中学”,进一步体验了程序调试的方法和技巧,培养了 学生调试程序的耐心和毅力,提高了学生程序设计的素养。 五、课外练习 编写一个程序,将从键盘输入的一个自然数进行因数分解,输出结果并上机验证。

DSP调试及烧写和加载常见错误及分析

Error: Read status value 0x0001 from symbol PRG_status Flash algorithm failed during clear operation 开始可以正常烧写的,但是上机调试了一下就不能写了. 在烧写lf2407内部flash时出现如下错误,不知是什么原因造成的? Error:Read status value 0x0001 from symbol PRG_status Flash algorithm failed during clear operation. 换了一个芯片后正常 之前有一次在试CCS功能时,一不小心点了一次加密,还没有执行完,就马上点了解密,大概这样烧坏了吧! 太脆弱了,再也不敢试加密了 CMD文件要避开FLASH的40H--44H区间, 我也出现过这样的问题,烧写2407A的片内flash时会出现下面的错误提示:Error: Read status value 0x0001 form symbol PRG_status Flash algorithm failed during clear operation 后来换了一块2407就能烧写了。 是不是2407的flash坏了?有没有办法检测或者修复flash? 昨天在网上查了一下,很多人都遇到了这种问题,可能是dsp内部flash烧坏了吧! 今天重新换了一块芯片,可以烧录进去了,但是上拿到样机上调试一下,再烧录就出现了同样的问题,估计又是flash坏了,到底是什么原因引起的?是不是电源引起的呢? 我也出现过能仿真,但不能烧写的情况!解决方法: 解决方法:降低时钟频率。点击FLASH插件上的“View Config File”,打开VAR.h文件。将该文件中的“PLL_PATIO_CONST .Set 0000h”改成 “PLL_PATIO_CONST .Set 0200h”存盘后,执行目录下的Buildall.bat批处理文件。再重新启动CCS及FLASH插件。 请教高手:在烧写程序的时候出现如下错误:Error: Read status value 0x0001 from s ymbol PRG_status Flash algorithm failed during clear operation

C语言调试常见错误及修改方法(附习题)

1.调试 C 程序时常见的错误类型分析 一般情况下,错误主要分为两大类:一、语法错误。对于这种错误,用编译器很容易解决。所以,改错题的第一步是先编译,解决这类语法错误。下面总结了二级C 语言上机改错题中常见的语法错误: (1) 丢失分号,或分号误写成逗号。 (2) 关键字拼写错误,如本来小写变成大写。 (3) 语句格式错误,例如for 语句中多写或者少写分号。 (4) 表达式声明错误,例如:少了() (5) 函数类型说明错误。与main ()函数中不一致。 (6) 函数形参类型声明错误。例如:少* 等。 (7) 运算符书写错误,例如:/ 写成了。二、逻辑错误,或者叫语义错误,这和实现程序功能紧密相关,一般不能用编译器发现。对于逻辑错误可以按这样的步骤进行查找。 (1) 先读试题,看清题目的功能要求。 (2) 通读程序,看懂程序中算法的实现方法。 (3) 细看程序,发现常见错误点。 2.改错题的改错方式总结,当然这些总结只能对大部分改错行有效 1、若错误行是函数首部,可分为以下几种情况: A、该行最后若有分号则删除,中间若有分号则改成逗号 B、形参类型不一致的问题,特别是指针类型,若后面用到某形参时有指针运算则该形参必为指针类型;若形参是二维数组或指向m 个元素的指针变量,则第二维的长度必须与main 中对应数组的第二维长度相同 C、函数类型不一致的问题,若函数中没有return语句则函数类型为void,若有return语句则函数的类型必须与return 后变量的类型一致。 2、若错误行是if 或while 语句,则首先看有没有用小括号将整个表达式括起,若没有则加上小括号。 3、若错误行中有if、while 、for 则要特别注意条件表达式的错误问题: A、指针变量的应用,若表达式中有指针变量且没有指针运算符,则加上指针运算符 B、若条件表达式中只有一个等于号,则改成两个等于号,若为其它比较运算符则一般是进行逆转或加一个等于号 C、f or 中要用分号分隔表达式,而不是用逗号 4、语法错误 A、语句缺少分号,若错误行中有语句没有用分号结束,则加上分号。 B、大小写不对,若错误行中有大写字母则一般都改成小写字母。 5、指针变量的运用,若错误行中有指针变量,并且该变量名前没有指针运算符则一般都是加上指针运算符 6、若错误行为return 语句,则首先看是否是缺少分号若是则加上分号即可;否则就是return 后的变量或表达式错误(此时可通过看题意,来分析该返回哪一变量或表达式)

最新ccs入门实验

实验一CCS软件入门实验 1. 实验目的 (1)通过学习CCS软件的说明和介绍了解如何使用CCS软件; (2)熟悉如何建立工程,修改文件,编译运行程序; (3)了解控制DSP的基本工作流程; (4)学会阅读英文文档资料,按照文档介绍解决实际遇到的问题。 2. 实验内容 本实验要求通过在课上学习的CCS使用方法,结合书上内容和CCS的帮助文档,按照CCS英文文档的步骤在CCS上建立一个简单的DSP工程文件。学习如何建立工程、如何添加文件、设置程序选项、编译工程、定位错误、修改错误、运行程序、查看结果、分析程序等。要求对每一个工程都要认真完成,彻底学会使用CCS软件。 CCS(Code Composer Studio)代码调试器是TI公司专为DSP开发提供的一种集成开发环境(IDE, Integrated Development Environment),在Windows操作系统下,采用图形接口界面,提供环境配置、源文件编辑、程序调试、跟踪和分析等工具,帮助用户完成DSP 系统开发。 CCS有两种工作模式,即软件仿真器(Simulator)和硬件仿真器(Emulator)。软件仿真器工作可以脱离DSP芯片,在PC上模拟DSP的指令和工作机制,主要用于前期DSP 开发中算法的实现和调试。硬件仿真需要运行在DSP芯片上,与硬件开发板联合在线编程和调试。本节实验将学习和使用软件仿真模式,同学们在自己的电脑上进行编程时采用这种模式。 3 实验步骤 一、配置CCS为软件仿真模式 1)打开桌面上的Setup CCS 2 ('C5000)图标;进入如下界面:

2)点中Clear,将原始配置清除; 3)选中如下界面的选项: 4)点击Import按钮。 5)点击Save and Quit;出现如下提示:

ccs33中建立-编译-调试工程及常见错误讲解.

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 #include #include 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 undefined undefined first referenced symbol in file --------- ---------------- _printf E:\\WorkContent\\projectExample\\Test\\Debug\\test.obj >> error: symbol referencing errors - './Debug/Test.out' not built 2)如果想要printf正确输出信息,cmd文件中必须指定heap的大小,即cmd文件这样写: -c -stack 0x00001000 /* Stack Size */ -heap 0x00001000 /* Heap Size */ //前面这三项必不可少 MEMORY { L2RAM: o = 0x10800000 l = 0x00020000 DDR2: 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实验-CCS操作(精)

实验二CCS操作 一、实验目的 1. 掌握TMS320C5400 系列汇编语言程序的基本格式; 2. 掌握程序编译、连接、运行和调试的基本过程; 3. 熟悉Code Composer Studio 的使用。 二、实验设备 1. 集成开发环境Code Composer Studio(以下简称CCS) 2. 实验代码ccs_basic.s54、ccs_basic.cmd 和ccs_basic.gel 三、实验内容、结果 1.基本操作: 1. 建立项目,并加入文件 a 运行CCS setup,选择C5402 Simulator,选择Project→New 菜单项,建立一个新的项目ccs_basic.pjt(注意建立路径,并选择Project→add files to new project 菜单项,加入文件ccs_basic.s54 和ccs_basic.cmd; b 在工程视图中选中GEL files 文件夹,单击鼠标右键,在弹出的菜单中选择 Load GEL 选项,载入ccs_basic.gel; 2. 编译和连接 a 编译:选择Project-->Build Option,在Compile 表单的Category 列表中,选择Basic 选项,并设置Generate debug info 为full symbolic debug 选项,选择File s选项,并在设置Asm File Ext 中写入“s54”为汇编语言扩展名; b 连接:选择Project-->Build Option,在linker 表单中的Autoinit mode 选项中选择no autointialization 模式,Output Filename 中输入.\debug\ ccs_basic.out,Code Entry Point 中输入main,Map Filename 中输入ccs_basic.map,然后保存选项设置。 c 选择Project→Buil d 构建整个项目,产生可执行文件ccs_basic.out; d 选择File->Load Program,装载可执行文件ccs_basic.out。

程序调试与常见程序错误

程序调试与常见程序错误 目录 一、在Codeblocks中调试程序 (1) 二、存储路径设置问题 (4) 三、修改Codeblocks的设置 (4) 四、提示程序无法调试问题 (6) 五、常见错误分析 (6) 六、程序出错的三种情况 (18) 七、常用的纠错方式 (19) 一、在Codeblocks中调试程序 1.注意事项 不允许工程路径中含有空格、汉字。 2.在相应行号后面点击鼠标左键设置断点 3.打开W ATCHS窗口

4.点击调试按钮 5.可以再watchs窗口看到自动变量。黄色三角表示程序暂停的位置

6.通过单步运行按钮进行单步运行。 7.也可以在debuger标签,command栏输入调试命令进行单步运行、打印变量值等操作。 8.程序运行

二、存储路径设置问题 1. 如果不是默认安装路径,code blocks 就无法找到编译器和调试器,就会出现此类问题。 解决办法:Settings——Compiler and debugger——Toolchain executables——Auto-detect。 2. 输出信息为“某个命令执行失败或异常终止”。 解决方法:通常是相应的编译器找不到,试着将其所在路径放到path环境变量中去。 3. 输出编译错误,如某某文件找不到之类。 解决方法:在项目中设置选项中加上路径(通常可利用customer variable项)。 4. 在调试程序的时候弹出类似""XYZ - Debug": The compiler's setup (GNU GCC Compiler) is invalid, so Code::Blocks cannot find/run the compiler. Probably the toolchain path within the compiler options is not setup correctly?! Goto "Settings->Compiler and debugger...->Global compiler settings->GNU GCC Compiler->Toolchain executables" and fix the compiler's setup. Skipping... Nothing to be done (all items are up-to-date)."这种警告。 解决方法:这个错误提示已经说得很清楚了, 找不到编译器, 到菜单Settings->Compiler and debugger...->Global compiler settings->GNU GCC Compiler->Toolchain executables下去修复编译选项前提是你已经装了gcc 如过没装, 就去下个包含mingw的codeblocks, (mingw包含gcc编译器); 三、修改Codeblocks的设置 1.

PLC程序现场调试的方法

P L C程序现场调试的方法 Prepared on 24 November 2020

PLC程序现场调试的方法——【非常重要】 02-04 16:42更新林慧玲分类:围观:625人次微信二维码 1、要查接线、核对地址 要逐点进行,要确保正确无误。可不带电核对,那就是查线,较麻烦。也可带电查,加上信号后,看电控系统的动作情况是否符合设计的目的。 2、检查模拟量输入输出 看输入输出模块是否正确,工作是否正常。必要时,还可用标准仪器检查输入输出的精度。 3、检查与测试指示灯 控制面板上如有指示灯,应先对应指示灯的显示进行检查。一方面,查看灯坏了没有,另一方面检查逻辑关系是否正确。指示灯是反映系统工作的一面镜子,先调好它,将对进一步调试提供方便。 4、检查手动动作及手动控制逻辑关系 完成了以上调试,继而可进行手动动作及手动控制逻辑关系调试。要查看各个手动控制的输出点,是否有相应的输出以及与输出对应的动作,然后再看,各个手动控制是否能够实现。如有问题,立即解决。 5、半自动工作 如系统可自动工作,那先调半自动工作能否实现。调试时可一步步推进。直至完成整个控制周期。哪个步骤或环节出现问题,就着手解决哪个步骤或环节的问题。 6、自动工作 在完成半自动调试后,可进一步调试自动工作。要多观察几个工作循环,以确保系统能正确无误地连续工作。 7、模拟量调试、参数确定 以上调试的都是逻辑控制的项目。这是系统调试时,首先要调通的。这些调试基本完成后,可着手调试模拟量、脉冲量控制。最主要的是选定合适控制参数。一般讲,这个过程是比较长的。要耐心调,参数也要作多种选择,再从中

选出最优者。有的PLC,它的PID参数可通过自整定获得。但这个自整定过程,也是需要相当的时间才能完成的。 8、完成上述所有的步骤 整个调试基本算是完成了。但最好再进行一些异常条件检查。看看出现异常情况或一些难以避免的非法操作,是否会停机保护或是报警提示。进行异常检查时,一定要充分考虑到设备与人身的安全! 整个调试基本算是完成了。但最好再进行一些异常条件检查。看看出现异常情况或一些难以避免的非法操作,是否会停机保护或是报警提示。进行异常检查时,一定要充分考虑到设备与人身的安全!

VB程序调试技巧

一,如果遇到了一些逻辑性很强的问题比如有循环什么的我的方法是在关键地方加入debug.print 变量 这样可以比较好地找到问题 二,msgbox 三,监视窗口,如下面的例子 For i=1 to 10000 A=sqr(i) next i 你想再监视当i=799时A的值,就可以添加监视,方法:点调试,添加监视,选择“当监视值为真时中断”,上面表达式框中写上i=799, 这样你按F5,运行程序,程序会在i=799时中断。其他选项你可以自己去琢磨一下。 一个程序如何顺利的“脱产”,调试的过程是非常重要的。学过、钻研过程序设计的人都有同样的感受,很多情况下,调试程序的过程会比程序编写的过程更为困难。任何一个天才都不敢说,他编的程序是100%正确的。几乎每一个稍微复杂一点的程序都必须经过反复的调试、修改,最终才完成。所以说,程序的调试是编程中的一项重要技术。 程序中的典型错误类型 A类:语法错误。 B类:编译错误。 C类:属性设置错误。 D类:逻辑错误。 调试方法 方法一:利用“MSDN帮助菜单” “MSDN帮助菜单”是一个很好的自学工具,对于出现调试对话框的菜单来说,可以按下“帮助”按钮查看错误原因。 对于一些不是很清楚的函数格式、保留字的作用,也可以借助“帮助菜单”。 方法二:逐过程检查 主要检查代码是否写对,位置有没有错误,关键是要确定一段代码是在哪个事件控制下的。不妨先在脑海中把整个程序过一边,想一想究竟会有哪些事件发生(有些事件是人机互动的,例如:鼠标点击;而有些是机器自己执行的,这时要想到计时器的作用);然后想一想每一件事发生后有什么效果。我们代码所编写的一般就是事件发生后的这个效果,那么以此事件来决定代码所写的位置。 方法三:逐语句检查(顺序、语义) 主要检查每一句代码的顺序是否写对,语义是否正确。 把整个代码从头至尾地读一边,仔细思索每一段子过程什么时候执行,以及每一子过程中的每一句代码什么时候发生,必要时可以在程序段中插入Print语句分段查看;也可用注释语

C语言调试功能以及常见错误提示详解

C语言编译环境中的 调试功能及常见错误提示 调试功能 1.常用健 : 激活系统菜单 : 将光标在编辑窗口和、信息窗口之间切换 : 加载一个文件 + : 查看程序运行结果 : 得到有关编辑器在线帮助 + : 得到有关C语言的在线帮助 + : 终止正在运行的程序 2.块操作 KB: 定义块首 KK: 定义块尾 KV: 块移动 KC: 块复制 KY: 块删除 KH: 取消块定义 3.查找、替换和删除操作 QF: 查找字符串 QA: 查找并替换字符串 Option: G(全程),B(向文件头),N(直接替换) Y : 删除一行 QY: 删除从光标位置到行末的所有字符 编译中的常见错误例析 (1) 警告类错误 …XXX?declare but never used变量XXX已定义但从未用过。 …XXX?is assigned a value which is never used变量XXX已赋值但从未用过。 Code has no effect 程序中含有没有实际作用的代码。 Non-portable pointer conversion不适当的指针转换,可能是在应该 使用指针的地方用了一个非0的数 值。 Possible use of …XXX?before definition表达式中使用了未赋值的变量 Redeclaration of …main?一个程序文件中主函数main不止一个。 Suspicious pointer conversion可疑的指针转换。通常是使用了基本类型不匹配的指针。 Unreachable code程序含有不能执行到的代码。 (2) 错误或致命错误 Compound statement missing } in function main程序结尾缺少括号}。

CCS实验报告

DSP 课程实验报告

实验一 一、实验目的 1、了解 CCS集成开发环境。 2、掌握 DSP简单程序(三个数累加求和)的建立和调试。 二、实验设备 计算机、 ccs 软件、 DSP实验箱 ( 这个可以没有 ) 。 三、实验内容 编写程序,实现计算DAT0 + DAT1+ DAT2。 四、实验步骤 1、修改软件的“setup ”设置,使CCS软件工作于“软件仿真器”模式,然后运行CCS软件。 2、新建一个项目:点击Project-New,将项目命名为ex1 ,并将项目保存在自己定义的文件夹下, 注意文件夹一定要用英文名,不要将文件夹取名为中文名,因为CCS软件不能识别以中文命名的文件夹。 3、新建一个源文件:点击File -New-Source File可以打开一个文本编辑窗口,点击保存按键,保 存在和项目相同的一个文件夹下面,保存类型选择 *.ASM(如果源文件是 C 语言编写的,保存类型选择 *.C,本实验中的例程是使用汇编语言编写的, 所以选择*.ASM 为保存类型),我们在这里将保存名字命名为 ex1.asm。 4、在项目中添加源文件:在新建立了一个源文件以后,要想使用要将源文件添加到项目中去。添加方法是在工程管理器中右键单击CCS编译器对该源文件进行编译还需ex1.pjt ,在弹出的菜单中选择Add Files ,然后将刚才建立的ex1.asm 文件添加到该项目中去。 5、编写源程序: 在工程管理器中双击ex1.asm ,将出现文本编辑窗口,在该文本编辑窗口中输入如下内容:.title "ex1" .mmregs .def _c_int00 DAT0 .set 60H DAT1 .set 61H DAT2 .set 62H DAT3 .set 63H .text _c_int00: B start start: LD#0000h,A LD #004h,DP STM #1000h,SP SSBX INTM ; ; ; 置数据页指针 置堆栈指针 状态寄存器置位 RSBX CPL ST #0036h,DAT0 ;把0036h放到"DP(9位地址)+偏移地址(指令中7 位地址) " 的 16 位地址中去 ST #0049h,DAT1 ST #1330h,DAT2 LD DAT0,A ;三数相加操作: DAT3 = DAT0 + DAT1 + DAT2

STM 调试过程中常见的问题及解决方法

一、在“Debug选项卡”下设置好仿真器的类型后,下载程序时却提示“No ULINK Device foun d.” 解决办法:Keil MDK默认使用ULINK仿真器下载程序,在“Utilities选项卡”下把编程所使用的仿真器改为相应的类型即可。 二、编译工程时提示如下信息: main.axf: Error: L6218E: Undefined symbol __BASEPRICONFIG (referred from stm32f10 x_nvic.o). main.axf: Error: L6218E: Undefined symbol __GetBASEPRI (referred from stm32f10x_nvi c.o). main.axf: Error: L6218E: Undefined symbol __RESETFAULTMASK (referred from stm32f 10x_nvic.o). main.axf: Error: L6218E: Undefined symbol __RESETPRIMASK (referred from stm32f10x _nvic.o). main.axf: Error: L6218E: Undefined symbol __SETFAULTMASK (referred from stm32f10x _nvic.o). main.axf: Error: L6218E: Undefined symbol __SETPRIMASK (referred from stm32f10x_n vic.o). 解决办法:工程缺少“cortexm3_macro.s”文件,把cortexm3_macro.s和STM3210x.s全部添加到工程即可。 三、调试器不能连接到STM32的问题与解决办法 很多人都碰到过调试器不能连接到STM32的问题,不管是IAR的J-Link还是Keil的ULink,或者是ST的ST-Link。出现这个问题时,调试软件会提示不能建立与Cortex-M3的连接,或提示不能下载程序,或提示找不到要调试的设备等。 这样的问题都是发生在调试那些可以在CPU不干预的时候自动运行的模块、或在调试低功耗模式的程序的时候。所谓“可以在CPU不干预的时候自动运行的模块”包括:DMA、定时器、连续转换模式下的ADC、看门狗等模块。 -------------------------------------------------------------------------------- 这个问题的根源是: 1. 调试器需要在RAM内执行一段程序,对Flash进行擦写操作,如果不停止这些自动运行的模块,它们会干扰程序在RAM中的执行,致使下载失败。比如DMA模块被配置为不停地拷贝一段数据区,而调试器刚好需要使用DMA数据传输的目标区域,这时DMA的操作将会与调试器的操作发生冲突。再比如,如果启动了看门狗而没有执行硬件复位,则在下次调试器需要下载程序时,看门狗超时将触发芯片复位,导致下载操作失败。 2. 低功耗是通过停止CPU的时钟而实现,JTAG调试是通过与CPU的通信实现,停止了C PU的时钟致使调试器会失去与CPU的通信。 --------------------------------------------------------------------------------

调试与错误处理

第9章调试与错误处理 一、问答题 1.请思考如何避免错误。 答:1)事先精心设计应用程序,描述清楚相关事件以及代码响应每一事件的方法,为每一事件过程和每个普通过程都指定一个特点的、明确的目标。 2)多加注释。如果用注释说明每个过程的目的,在以后分析代码时,能更深入地理解这些代码。 3)对过程中用到的每个变量或对象都应该在过程开始部分加以定义。 4)在应用程序中对变量和对象提出一种前后一致的命名方案。 2.请简要设计错误处理程序的三个步骤。 答:1)捕获错误,并强制程序跳转 2)编写错误处理程序 3)退出错误处理程序 3.简述常用的程序调试技巧。 答:1)事先做好备份; 2)分离受怀疑的程序; 3)缩小搜索范围; 4)使用MsgBox语句。 4.简要说明VB程序调试的主要方法和工具。 答:VB 程序调试的主要方法:用编译器提示错误;使用调试工具来发现和改正错误;采用常用的调试技巧,如事先做好备份,分离受怀疑的程序,缩小搜索范围,使用MsgBox语句等。 主要工具:“调试”菜单下的“逐语句”、“逐过程”、“跳出”、“运行到光标处”、“添加监视”、“快速监视”、“切换断点”等子菜单项。 5.VB程序错误大体可分为哪几种,它们的含义是什么? 答:VB程序错误大体分为三种:编译错误、实时错误和语法错误。 编译错误是在编写程序时书写了有错误的语法的代码,导致VB编译器无法正确解释源代码而产生的错误,也称语法错误。实时错误是指在运行期间,一跳语句试图执行一条不可能执行的操作而产生的错误,也称运行时错误。逻辑错误是指程序的运行结果和程序员的设想有出入时产生的错误。 6.请说明On Error GoTo 与On Error Resume Next 的区别。 答:On Error GoTo 行标识符语句:当发生错误时,使用该语句强制改变程序的执行方向。而On Error Resume Next 语句:当发生错误时,VB程序将忽略引发错误的语句,并继续执行下一条语句。 二、程序设计题 1.程序改错。以前面学到的冒泡排序算法为例,开发以下程序,请上机练习排除其中的错误。 1

程序调试步骤

一、认识调试功能 在组建(build)菜单中,点击开始调试(start debug),在其下级子菜单中,包含了启动调试器运行的各项子命令(如图1所示) 图1 开始调试菜单 各子命令及其功能如下: ?Go:从程序中的当前语句开始执行,直到遇到断点(后面讲)或遇到程序结束。 ?Step Into:控制程序单步执行,并在遇到函数调用时进入函数内部。 ?Run to Cursor:在调试运行程序时,使程序运行到当前光标所在位置时停止,相当于设置了一个临时断点。 二、单步调试代码 利用图1菜单中的Step into功能或按F11键,进入单步调试状态,有一个箭头指向程序的第一行,每按一次F11键,程序再向前执行一行语句,如图2所示。

图2 开始调试后的界面 我们对图2的界面进行观察。 首先,菜单中增加一个调试(debug)菜单,如图中①处,下面是菜单中的部分功能(鼠标浮到上面时,会有提示,请试一试。) ?Step Into(F11):单步调试程序,遇到调用函数时,进入函数内部逐步执行; ?Step Over(F10):也是单步调试程序,遇到调用函数时,并不进入函数内容执行; ?Step Out:调试程序时,从正在执行的某个嵌套结构的内部跳到该结构的外部,常用于知道调用函数中不存在错误的情况; ?Run to Cursor(CTRL-F10):调试程序时,直接运行到插入点处。 其次,和当前正在执行的语句相关的变量,以及其当前的值显示在了②处。 再次,黄色箭头代表了正在执行的位置。 【练习1】 下面,针对求1+2+3+...+100的程序,体验单步执行。步骤: (1)编写如图所示求1+2+3+...+100的程序,排除编译错误; (2)按前述开始单步执行,用“Step Into(F11)”持续执行,在执行过程中,注意观察变量的变化。 ?调试中,要将自己的预期和计算机执行的结果进行比较,当发现不一致,恭喜,问题找到了。

C语言程序编辑或调试中常见的错误

常见错误和程序分析 (1)忘记定义变量。例如: void main() { x=3; y=6; printf(“%d\n”,x+y); } C要求对程序中用到的美一个变量都必须定义其类型,上面程序中没有对x,y 进行定义。应在函数体的开头加int x,y; (2)输入输出的数据类型与所用格式说明符不一致。例如,若a已定义为整数,b已定义为实型: a=3;b=4.5; /*对a和b赋值*/ printf(“%f %d\n”,a,b); 编译时不给出出错信息,但运行结果将与原意不符,输出为0.000000 16402它们并不是按照赋值的规则进行转换(如把4.5转换为4),而是将数据在存储单元中的形式按格式符的要求组织输出(如b占4个字节,只把最后2个字节中的数据按%d作为整数输出)。 (3)未注意int型的数据的数值范围。Turbo C等编译系统,对一个整型数据分配2个字节。因此一个整数的范围为-2的13次方到2的15次方减1,即-32768~32767常见这样的程序段: int num; num=89101; printf(“%d”,num); 得到的却是23565,原因是89101已超过32767。2个字节容纳不下89101,则将高位截去,即将超过低16位的数截去,也即89101-65536=23565,有时还会出现负数。这种情况应改为: Long int num; num=89101; printf(“%ld”,num); 注意,如果只定义num为long型,而在输出时扔用%d说明符,也会出现以上错误。 (4)在输出语句scanf中忘记使用变量的地址符。例如: scanf(“%d%d”,a,b); 这是很多初学者刚学C语言时常见的疏忽,应写为scanf(“%d%d”,&a,&b); (5)输入数据的形式与要求不符。例如有以下scanf函数: scanf(“%d%d”,&a,&b); 有人输入 3 , 4 ,这是错的数据间应该用空格来分隔,读者可以用printf(“%d%d”,a,b);来验证下。应该输入 3 4,除非函数是scanf(“%d,%d”,&a,&b); 还应注意不能企图用

相关主题
文本预览
相关文档 最新文档