ccs软件c程序设置断点 ccs设置断点 - 电脑|办公 - 电脑办公-杀毒安全-网络-V3学习网
微商网
 
 
导航:首页 |电脑|办公|正文

ccs软件c程序设置断点 ccs设置断点

时间:2021-03-30 10:58:40
我用CCS3 3在2812Flash中调试的时候只能设置一个断点,很不方便。 在VC中,你可以设置多种类型的断点,我们可以根据断点起作用的方式把这些断点分为三类:1、与位置有关的断点;2、与逻辑条
作者:

ccs软件c程序设置断点

我用CCS3.3在2812Flash中调试的时候只能设置一个断点,很不方便。

...

在VC中,你可以设置多种类型的断点,我们可以根据断点起作用的方式把这些断点分为三类:1、与位置有关的断点;2、与逻辑条件有关的断点3、与WINDOWS消息有关的断点下面我们分别介绍这三类断点。

首先我们介绍与位置有关的断点。

最简单的是设置一般位置断点,你只要把光标移到你要设断点的位置,当然这一行必须包含一条有效语句的;然后按工具条上的addemove eakpoint 按钮或按快捷键F9;这时你将会在屏幕上看到在这一行的左边出现一个红色的圆点表示这二设 立了一个断点。

图4.3 2 图4.4 单击condition按钮,弹出Beakpoint对话框,在Expession编辑框中写出你的逻辑表达式,如X=3或a+25,最后按OK返回。

图4.5 这种断点主要是由其位置发生作用的,但也结合了逻辑条件,使之更灵活。

3、有时我们需要更深入地调试程序,我们需要进入程序的汇编代码,因此我们需要在在汇编代码上设立断点:要设立这种断点我们只需从View菜单中选Deug window命令 , 图4.6 再选Disassemly子命令,这时汇编窗口将会出现在屏幕上。

图4.7 在图4.7中的汇编窗口中你将看到对应于源程序的汇编代码,其中源程序是用黑体字显示,下面是且对应的汇编代码。

要设立断点,我们只需将光标移到你想设断点处然后点击工具条上的InsetRemove Beakpoints 按钮,此后你将会看到一个红圆点出现在该汇编代码的右边。

图4.8 上面所讲的断点主要是由于其位置发挥作用的,即当程序运行到设立断点的地方时程序将会停下来。

但有时我们设立只与逻辑条件有关的断点,而与位置无关。

所以下面介绍一下与逻辑条件有关的断点。

(1)逻辑条件触发断点的设置: 从EDIT 菜单中选中eakpoint命令,这时屏幕上将会出现Beakpoint对话框。

图4.9 选中Beakpoint对话框中的DATA标签,对应的页面将会弹出 图4.10 在图4.10的DATA页面中的Expession编辑框中写出你的逻辑表达式,如(X==3); 图4.11 最后按OK返回。

其他几种断点的设置的方法都与之类似。

我们一一加以说明。

(2)监视表达式发生变化断点: 从EDIT 菜单中选中eakpoint命令,这时屏幕上将会出现Beakpoint对话框。

选中Beakpoint对话框中的DATA标签,对应的页面将会弹出 在Expession编辑框中写出你需要监视的表达式 最后按OK键返回。

(3)监视数组发生变化的断点: 从EDIT 菜单中选中eakpoint命令,这时屏幕上将会 出现Beakpoint对话框。

选中Beakpoint对话框中的DATA标签,对应的页面将会弹出 在Expession编辑框中写出你需要监视数组名; 在Nume of Elements 编辑框输入你需要监视数组元素的个数; 按OK键返回。

(4)监视由指针指向的数组发生变化的断点: 从EDIT 菜单中选中eakpoint命令,这时在屏幕上将会出现 选中Beakpoint对话框中的DATA标签; 在Expession编辑框中输入形如*pointname,其中*pointname为指针变量名; 在Nume of Elements 编辑框输入你需要监视数组元素的个数; 按OK键返回。

(5)监视外部变量发生变化的断点: 从EDIT 菜单中选中eakpoint命令这时屏幕上将会出现Beakpoint对话框; 选中Beakpoint对话框中的DATA标签; 在Expession编辑框中输入变量名; 点击在Expession编辑框的右边的下拉键头; 选取Advanced选项,这时Advanced Beakpoint 对话框出现; 在context框中输入对应的函数名和(如果需要的话)文件名; 按OK键关闭Advanced Beakpoint 对话框。

按OK键关闭Beakpoints 对话框。

(6)在讲了位置断点和逻辑断点之后我们再讲一下与WINDOWS消息有关的断点。

注意:此类断点只能工作在x86 或 Pentium 系统上。

从EDIT 菜单中选中eakpoint命令,这时屏幕上将会出现Beakpoint对话框; 选中Beakpoint对话框中的MESSAGE标签,对应的页面将会弹出; 在Beak At WndPoc 编辑框中输入Windows 函数的名称; 在Set One Beakpoint Fom Each Message To Watch 下拉列表框中选择对应的消息; 按OK 返回。

、有的时候你可能并不需要程序每次运行到这儿都停下来,而是在满足一定条件的情况下才停下来,这时你就需要设置一种与位置有关的逻辑断点。

要设置这种断点我们只需要从EDIT 菜单中选中eakpoint命令,这时Beakpoint对话框将会出现在屏幕上。

选中Beakpoint对话框中的LOCATION标签,使LOCATION 页面弹出,如图4.4Beakpoint对话框。

在ccs中int main(int argc, char* argv[])中的argc和argv的值是如何确定...

记录下Register窗口内算states计数器,然后STEP OVER,记录下新的计数器数值:KEIL V4; i ++)a = a + b, *-SP[6], UNCF0087B6 E700 MPYF32 R0H, R1H,F28335是不如F4的FPU的。

但是由于F28335是哈佛架构,有较长的流水线,可以在一个时钟周期里完成读取:0x08000220 ED900A00 VLDR s0,使用ARM优化的数学库,所以需要NOP 0087B9 E203 MOV32 *-SP[4], R0H复制代码 除法:0087BD E203 MOV32 *-SP[4],除以150MHZ,大约是1.所以说这就是ARM和DSP不同的地方了,STM32F4似乎并不慢多少。

抛开架构因素:0087B2 E203 MOV32 *-SP[4], R0H0087B4 E2AF MOV32 R1H,STM32F4这次的卖点就是FPU和DSP指令集,关注了挺长时间,这次就想测试一下STM32F4的浮点性能:一共285964个周期:F28335:在飞控算法入口设置断点,清零CCS的CPU计数器(profile-&gt。

例如:a = a * b,产生的汇编为论坛上看到的比较;i &lt:F28335:253359个CPU周期, UNCF0087C1 7640 LCR $div_f32.asm:52,对于包含相对较多跳转的综合浮点算法而言; @0x0800023C0x08000230 ED801A00 VSTR s2,[r0,#0x00]复制代码 F28335: F28335的FPU有加减乘法指令,都是双周期的,从纯浮点运算方面来看的话。

STM32F4的FPU加减乘指令VADD.7,需要19个时钟周期.F32.asm字样,[pc,除以168MHZ,大约是1:F28335:CCS V3,全部使用浮点运算,包含姿态和位置两个7阶和9阶的卡尔曼滤波器,包含大量的矩阵运算以及部分导航算法和PID控制器等,还有部分IF和SWITCH包含跳转的判定语句.3,#0x00]0x08000224 4804 LDR r0.F32都是单周期指令,而除法VDIV.F32耗费14个周期。

这几天刚拿到STM32F4的评估板.69msSTM32F4,s0,s10x0800022E 4803 LDR r0,[pc,#12] ,#16] ; @0x080002380x08000226 EDD00A00 VLDR s1。

2,就必须清空流水线,如果是for(i = 0, R0H复制代码 结论, R0H0087BF E2AF MOV32 R1H, *-SP[6], R0H0087B8 7700 NOP //,不开优化。

测试方法,F28335当浮点处理器用,使用TI优化的数学库,不开优化、F28335是在RAM中运行,并且两者都是在仿真器环境中进行运算,还是离线在Flash中跑比较靠谱。

STM32F4:1,程序在RAM里执行,但是缺点就是一旦要跳转; 1000:71$0087C3 E203 MOV32 *-SP[4],比F28335略慢结论就是。

看看这次测试比较,感觉环境还是有一定的问题,运算和存储;clock),然后STEP OVER,记录下CPU的计数STM32F4,如果满足就升级自己飞控的架构。

本来用STM32F103+28335双核架构;复制代码 这样的运算,速度反而要比ARM慢(测试下来单次是17周期,与之前的数值相减得到CPU计数测试结果;需要让流水线等待FPU运算完毕,#0x00]0x0800022A EE801A20 VDIV,[r0; b;产生的汇编为:在飞控算法入口设置断点:可见单从浮点处理器来说,调试起来比较麻烦,所以一直想换了。

测试代码就是用的我飞控的算法.7ms.F32 s2,相比纯算法算是一个比较综合的运算。

测试环境,由于没有硬件除法指令,F28335这里是用软件模拟的浮点除法,汇编可以看到 LCR $div_f32,ARM是14),有待商榷。

3、ARM和TI的数学库中,各自支持的运算种类不一样。

例如:a = a /、两者编译平台一个是CCS,一个是KEIL,对通用语句的优化,所以程序连续运行的话,就比ARM快上许多许多,比如执行一次a = a + b只需要5个时钟周期,[r0、VSUB.F32、VMUL

小弟刚接触DSP,别人推荐先从C2000系列开始学习,C2000也有很多...

一.什么是DSP?(缺省) 二.DSP的C语言同主机C语言的主要区别?1)DSP的C语言是标准的ANSI C,它不包括同外设联系的扩展部分,如屏幕绘图等。

但在CCS中,为了方便调试,可以将数据通过prinf命令虚拟输出到主机的屏幕上。

2)DSP的C语言的编译过程为,C编译为ASM,再由ASM编译为OBJ。

因此C和ASM的对应关系非常明确,非常便于人工优化。

3)DSP的代码需要绝对定位;主机的C的代码有操作系统定位。

4)DSP的C的效率较高,非常适合于嵌入系统。

三.DSP发展动态1.TMS320C2000 TMS320C2000系列包括C24x和C28x系列。

C24x系列建议使用LF24xx系列替代C24x系列,LF24xx系列的价格比C24x便 宜,性能高于C24x,而且LF24xxA具有加密功能。

C28x系列主要用于大存储设备管理,高性能的控制场合。

2.TMS320C3x TMS320C3x系列包括C3x和VC33,主要推荐使用VC33。

C3x系列是TI浮点DSP的基础,不可能停产,但价格不会进一步下调。

3.TMS320C5x TMS320C5x系列已不推荐使用,建议使用C24x或C5000系列替代。

4.TMS320C5000 TMS320C5000系列包括C54x和C55x系列。

其中VC54xx还不断有新的器件出现,如:TMS320VC5471(DSP+ARM7)。

C55x系列是TI的第三代DSP,功耗为VC54xx的1/6,性能为VC54xx的5倍,是一个正在发展的系列。

C5000系列是目前TI DSP的主流DSP,它涵盖了从低档到中高档的应用领域,目前也是用户最多的系列。

5.TMS320C6000 TMS320C6000系列包括C62xx、C67xx和C64xx。

此系列是TI的高档DSP系列。

其中C62xx系列是定点的DSP,系列芯片种类较丰富,是主要的应用系列。

C67xx系列是浮点的DSP,用于需要高速浮点处理的领域。

C64xx系列是新发展,性能是C62xx的10倍。

6.OMAP系列 是TI专门用于多媒体领域的芯片,它是C55+ARM9,性能卓越,非常适合于手持设备、Internet终端等多媒体应用。

四.5V/3.3V如何混接?TI DSP的发展同集成电路的发展一样,新的DSP都是3.3V的,但目前还有许多外围电路是5V的,因此在DSP系统中,经常有5V和3.3V的DSP混接 问题。

在这些系统中,应注意: 1)DSP输出给5V的电路(如D/A),无需加任何缓冲电路,可以直接连接。

2)DSP输入5V的信号(如A/D),由于输入信号的电压>4V,超过了DSP的电源电压,DSP的外部信号没有保护电路,需要加缓冲,如 74LVC245等,将5V信号变换成3.3V的信号。

3)仿真器的JTAG口的信号也必须为3.3V,否则有可能损坏DSP。

五.为什么要片内RAM大的DSP效率高?目 前DSP发展的片内存储器RAM越来越大,要设计高效的DSP系统,就应该选择片内RAM较大的DSP。

片内RAM同片外存储器相比,有以下优点: 1)片内RAM的速度较快,可以保证DSP无等待运行。

2)对于C2000/C3x/C5000系列,部分片内存储器可以在一个指令周期内访问两次,使得指令可以更加高效。

3)片内RAM运行稳定,不受外部的干扰影响,也不会干扰外部。

4)DSP片内多总线,在访问片内RAM时,不会影响其它总线的访问,效率较高。

六.为什么DSP从5V发展成3.3V?超 大规模集成电路的发展从1um,发展到目前的0.1um,芯片的电源电压也随之降低,功耗也随之降低。

DSP也同样从5V发展到目前的3.3V,核心电压 发展到1V。

目前主流的DSP的外围均已发展为3.3V,5V的DSP的价格和功耗都价格,以逐渐被3.3V的DSP取代。

七如何选择DSP的电源芯片?TMS320LF24xx:TPS7333QD,5V变3.3V,最大500mA。

TMS320VC33: TPS73HD318PWP,5V变3.3V和1.8V,最大750mA。

TMS320VC54xx:TPS73HD318PWP,5V变3.3V和1.8V,最大750mA; TPS73HD301PWP,5V变3.3V和可调,最大750mA。

TMS320VC55xx:TPS73HD301PWP,5V变3.3V和可调,最大750mA。

TMS320C6000: PT6931,TPS56000,最大3A。

八.软件等待的如何使用?DSP的指令周期较快,访问慢速存储器或外设时需加入等待。

等待分硬件等待和软件等待,每一个系列的等待不完全相同。

1)对于C2000系列: 硬件等待信号为READY,高电平时不等待。

软件等待由WSGR寄存器决定,可以加入最多7个等待。

其中程序存储器和数据存储器及I/O可以分别设置。

2)对于C3x系列: 硬件等待信号为/RDY,低电平是不等待。

软件等待由总线控制寄存器中的SWW和WTCNY决定,可以加入最多7个等待,但等待是不分段的,除了片内之外全空间有效。

3)对于C5000系列: 硬件等待信号为READY,高电平时不等待。

软件等待由SWWCR和SWWSR寄存器决定,可以加入最多14个等待。

其中程序存储器、控制程序存储器和数据存储器及I/O可以分别设置。

4)对于C6000系列(只限于非同步存储器或外设): 硬件等待信号为ARDY,高电平时不等待。

软件等待由外部存储器接口控制寄存器决定,总线访问外部存储器或设备的时序可以设置,可以方便的同异步的存储器或外设接口。

九.中断向量为什么要重定位?为了方便DSP存储器的配置,一般DSP的中断向量可以重新定位,即可以通过设置寄存器放在存储器空间的任何地方。

注意:C2000的中断向量不能重...

在c语言中怎样设置断点?

设置断点其实是一种感觉,你觉得哪里有问题,或者你想查看哪里的变量或者内存的值,就将断点设置在哪里。

在某一行设置断点可以直接点击到这一行,然后直接按F9。

其次还可以设置函数断点,在程序执行到这个函数的时候,自动中断。

按快捷键“ctrl+b",然后在第一个选项卡"Location"中输入你想断点的函数名称+()即可。

例如“sum()"还可以设置变量断点,按快捷键“ctrl+b",然后在第二个选项卡"Data"中输入你想断的变量即可。

那么当这个变量的值发生变化的时候,函数就回自动中断到断点处。

大家还关注
    
阅读排行
推荐阅读