注册 登录
查看: 1298|回复: 22

图像卡住怎么回事

[复制链接]
发表于 2014-4-25 17:31:36 | 显示全部楼层 |阅读模式
有时候程序添加几条普通的语句,就会导致图像卡住,屏蔽掉就好了,导致我每次修改程序都要看一下图像会不会卡住
查看调用栽时是这样


该怎么解决,不是频率高的问题,降频了也会这样

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2014-4-25 18:14:17 | 显示全部楼层
调用栈的数据都破坏了,检测一下是否内存越界
回复 支持 反对

使用道具 举报

发表于 2014-4-25 18:17:10 | 显示全部楼层
图像的数组,你是放在栈还是静态区?
如果栈,有可能数组太大导致的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-25 19:10:20 | 显示全部楼层
山外メ雲ジ 发表于 2014-4-25 18:14
调用栈的数据都破坏了,检测一下是否内存越界

这个是怎么检测内存越界的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-25 19:12:27 | 显示全部楼层
山外メ雲ジ 发表于 2014-4-25 18:17
图像的数组,你是放在栈还是静态区?
如果栈,有可能数组太大导致的。



不知道怎么确定图像数组放在哪里

这问题碰到很久了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-4-25 19:12:34 | 显示全部楼层
大师兄 发表于 2014-4-25 19:10
这个是怎么检测内存越界的

内存越界这问题超蛋疼的,可以在那个函数内部设个断点,然后看看第一次进入是不是越界的,一般都不是越界的。
然后复位,在这个函数后面再设断点,看看会不会出现这问题。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-25 19:26:43 | 显示全部楼层
荆怀卉 发表于 2014-4-25 19:12
内存越界这问题超蛋疼的,可以在那个函数内部设个断点,然后看看第一次进入是不是越界的,一般都不是越界 ...



就像这样,如果使用两个Get_LMR()会导致图像卡住,但屏蔽掉一个就好了,
但是如果屏蔽掉一个Get_LMR() ,然后dd() 不屏蔽,图像也会卡住,dd()函数里面什么也没有的
这都是好奇怪的问题

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-4-25 19:28:27 | 显示全部楼层
大师兄 发表于 2014-4-25 19:26
就像这样,如果使用两个Get_LMR()会导致图像卡住,但屏蔽掉一个就好了,
但是如果屏蔽掉一个Get_LMR ...

你检测一下栈是不是不够用。还有,有没有在函数内开大数组。
另外,在默认中断函数里先设好断点。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-25 19:32:14 | 显示全部楼层
山外メ雲ジ 发表于 2014-4-25 19:28
你检测一下栈是不是不够用。还有,有没有在函数内开大数组。
另外,在默认中断函数里先设好断点。

能否说明一下怎么检测够不够用??
回复 支持 反对

使用道具 举报

发表于 2014-4-25 19:34:38 | 显示全部楼层
大师兄 发表于 2014-4-25 19:32
能否说明一下怎么检测够不够用??

RAM默认没读写过的数据是0x00,你调出内存查看框,从栈顶开始看,啥时候开始的数据是全速是 0x00 ,表示栈用到这里,然后看看你程序配置栈空间是多少。
回复 支持 反对

使用道具 举报

发表于 2014-4-25 19:35:04 | 显示全部楼层
大师兄 发表于 2014-4-25 19:32
能否说明一下怎么检测够不够用??

有个简单的方法是直接设置大一些栈,看看会不会出现这问题
回复 支持 反对

使用道具 举报

发表于 2014-4-25 19:35:26 | 显示全部楼层
大师兄 发表于 2014-4-25 19:32
能否说明一下怎么检测够不够用??

你现在应该做的是检查一下:有没有在函数内开大数组。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-25 20:08:27 | 显示全部楼层
山外メ雲ジ 发表于 2014-4-25 19:35
有个简单的方法是直接设置大一些栈,看看会不会出现这问题



是在这里设置么??

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-28 21:58:34 | 显示全部楼层
山外メ雲ジ 发表于 2014-4-25 18:17
图像的数组,你是放在栈还是静态区?
如果栈,有可能数组太大导致的。

定义的是静态区,全局数组,所有的数组没有一个是在函数内部定义的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-28 21:59:22 | 显示全部楼层
山外メ雲ジ 发表于 2014-4-25 18:14
调用栈的数据都破坏了,检测一下是否内存越界

怎么看调用栽的数据被破坏了?、
回复 支持 反对

使用道具 举报

发表于 2014-4-28 22:01:33 | 显示全部楼层
大师兄 发表于 2014-4-28 21:59
怎么看调用栽的数据被破坏了?、

你刚下载好,程序进入main函数,你看看调用栈,然后对比跑飞的调用栈,就知道。
回复 支持 反对

使用道具 举报

发表于 2014-7-12 14:06:26 | 显示全部楼层
大师兄 发表于 2014-4-25 20:08
是在这里设置么??

这个窗口在IAR什么地方怎么打开,我怎么看不到,,
回复 支持 反对

使用道具 举报

发表于 2014-7-12 14:36:09 | 显示全部楼层
数组超界,,
怎么改?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-7-12 15:45:53 | 显示全部楼层
山外メ雲ジ 发表于 2014-4-25 19:34
RAM默认没读写过的数据是0x00,你调出内存查看框,从栈顶开始看,啥时候开始的数据是全速是 0x00 ,表示栈 ...

在哪里看程序配置栈空间多少??
回复 支持 反对

使用道具 举报

发表于 2014-7-12 15:46:46 | 显示全部楼层
山外メ雲ジ 发表于 2014-4-25 19:35
有个简单的方法是直接设置大一些栈,看看会不会出现这问题

怎样在DN512Z中设置大栈???
回复 支持 反对

使用道具 举报

发表于 2014-7-12 16:16:37 | 显示全部楼层
111xian 发表于 2014-7-12 15:45
在哪里看程序配置栈空间多少??

数组越界,跟栈空间没多大关系。

关于如何设置栈,你看三天入门的教程吧。


你要在默认中断里设断点,跑飞的时候,就会停下来
回复 支持 反对

使用道具 举报

发表于 2014-7-12 16:42:25 | 显示全部楼层
山外メ雲ジ 发表于 2014-7-12 16:16
数组越界,跟栈空间没多大关系。

关于如何设置栈,你看三天入门的教程吧。

那数组越界,是不是把数组移函数外主函数之前就行了,,
回复 支持 反对

使用道具 举报

发表于 2014-7-13 16:45:14 | 显示全部楼层
111xian 发表于 2014-7-12 16:42
那数组越界,是不是把数组移函数外主函数之前就行了,,

行了,,
走过路过,不能错过
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回列表 返回顶部