4971|15

333

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

这个是栈溢出吗?是什么原因导致的? [复制链接]

最新回复

我也感觉先把sim卡部分屏蔽掉试一下,感觉最主要的原因应该就是内存不太够,以前因为时间问题,我没有仔细纠结他,我换了1612(5Kram),1611(10Kram),然后就可以了……  详情 回复 发表于 2014-10-16 14:19
 
点赞 关注

回复
举报

1976

帖子

1

TA的资源

五彩晶圆(初级)

沙发
 
从提示来看是发生了堆栈溢出,很有可能是变量太多导致RAM不够用,或者程序里出现了野指针,你用的什么单片机?排查一下你的程序吧

点评

我用MSP430F149,用IAR编译。我感觉应该我的程序里变量确实是太多了,可能导致这个问题。谢谢您!  详情 回复 发表于 2014-10-15 14:22
 
 

回复

300

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
目测是的,目测你用的IAR,在option->general option->stack/Heap中可以更改配置的堆栈大小,你可以改一下试试。

点评

[attachimg]174648[/attachimg] 您好,请教下, 1.这里面数值怎么改?有什么限制要求吗? 2.我出现的这个问题是MAP430F149单片机出现问题还是编译器IAR出现问题? 谢谢!  详情 回复 发表于 2014-10-15 14:26
 
个人签名世间万物皆系于一键之上~
 
 

回复

333

帖子

0

TA的资源

一粒金砂(高级)

4
 
bobde163 发表于 2014-10-15 13:32
从提示来看是发生了堆栈溢出,很有可能是变量太多导致RAM不够用,或者程序里出现了野指针,你用的什么单片 ...

我用MSP430F149,用IAR编译。我感觉应该我的程序里变量确实是太多了,可能导致这个问题。谢谢您!

点评

你的这个错误是在编译的时候出现的吗?如果是这样,那理论上是除堆栈以外的Ram不够用了,你可能通过楼上各位所说的,把堆栈设置得小一些看能不能解决,只要保证程序在运行中的堆栈不溢出就可以  详情 回复 发表于 2014-10-15 16:22
 
 
 

回复

333

帖子

0

TA的资源

一粒金砂(高级)

5
 
07611128 发表于 2014-10-15 13:41
目测是的,目测你用的IAR,在option->general option->stack/Heap中可以更改配置的堆栈大小,你可以改一下 ...


您好,请教下,
1.这里面数值怎么改?有什么限制要求吗?
2.我出现的这个问题是MAP430F149单片机出现问题还是编译器IAR出现问题?
谢谢!
 
 
 

回复

300

帖子

0

TA的资源

一粒金砂(高级)

6
 
打钩的话,应该是可以重新分配堆栈的大小的。
现在你的单片机和iar都没有问题,但是给程序空间分配的堆栈太小,导致溢出了,这里分配的话,按道理来说不超过ram应该都是允许接受的。你可以试着把它稍微边的大一点试试看
以前我也遇到过这个问题,我那个里面定义了大连的float,long int 类型,后来我换单片机了

点评

那您在更换单片机之前更改IAR里面的那个设置有没有解决这个问题?  详情 回复 发表于 2014-10-15 15:18
 
个人签名世间万物皆系于一键之上~
 
 

回复

333

帖子

0

TA的资源

一粒金砂(高级)

7
 
07611128 发表于 2014-10-15 14:46
打钩的话,应该是可以重新分配堆栈的大小的。
现在你的单片机和iar都没有问题,但是给程序空间分配的堆栈 ...

那您在更换单片机之前更改IAR里面的那个设置有没有解决这个问题?
 
 
 

回复

1976

帖子

1

TA的资源

五彩晶圆(初级)

8
 
本帖最后由 bobde163 于 2014-10-15 16:24 编辑
面纱如雾 发表于 2014-10-15 14:22
我用MSP430F149,用IAR编译。我感觉应该我的程序里变量确实是太多了,可能导致这个问题。谢谢您!

你的这个错误是在编译的时候出现的吗?如果是这样,按照楼上的办法把堆栈设置得大一点,不过你还是要检查一下你的变量,是不是有些定义得太大了

点评

不是编译时出现的,是我在正常运行了一会儿后出现的,两者有区别吗?  详情 回复 发表于 2014-10-15 16:25
 
 
 

回复

333

帖子

0

TA的资源

一粒金砂(高级)

9
 
bobde163 发表于 2014-10-15 16:22
你的这个错误是在编译的时候出现的吗?如果是这样,按照楼上的办法把堆栈设置得大一点,不过你还是要检查 ...

不是编译时出现的,是我在正常运行了一会儿后出现的,两者有区别吗?

点评

一般来说,在编译阶段是不会检查出堆栈溢出错误的,但是能检查出你的整个RAM使用是否超出了能用的大小,堆栈溢出一般发生在运行中,比如程序里有一些野指针,或者程序函数嵌套层数太多,都会导致堆栈溢出。如果你现  详情 回复 发表于 2014-10-16 09:50
运行的时候,就直接到某一个语句就不工作了对吧?  详情 回复 发表于 2014-10-15 16:50
 
 
 

回复

300

帖子

0

TA的资源

一粒金砂(高级)

10
 
面纱如雾 发表于 2014-10-15 16:25
不是编译时出现的,是我在正常运行了一会儿后出现的,两者有区别吗?

运行的时候,就直接到某一个语句就不工作了对吧?

点评

但是具体是哪个语句我不清楚,因为崩溃的时候整个IAR就跳出运行状态了,我就不知道怎么排查到底是哪个语句或者牵扯到的相关数组有问题。  详情 回复 发表于 2014-10-15 21:05
对的!!! 你有解决方法吗?  详情 回复 发表于 2014-10-15 21:03
 
个人签名世间万物皆系于一键之上~
 
 

回复

333

帖子

0

TA的资源

一粒金砂(高级)

11
 
07611128 发表于 2014-10-15 16:50
运行的时候,就直接到某一个语句就不工作了对吧?

对的!!!
你有解决方法吗?
 
 
 

回复

333

帖子

0

TA的资源

一粒金砂(高级)

12
 
07611128 发表于 2014-10-15 16:50
运行的时候,就直接到某一个语句就不工作了对吧?

但是具体是哪个语句我不清楚,因为崩溃的时候整个IAR就跳出运行状态了,我就不知道怎么排查到底是哪个语句或者牵扯到的相关数组有问题。
 
 
 

回复

1976

帖子

1

TA的资源

五彩晶圆(初级)

13
 
面纱如雾 发表于 2014-10-15 16:25
不是编译时出现的,是我在正常运行了一会儿后出现的,两者有区别吗?

一般来说,在编译阶段是不会检查出堆栈溢出错误的,但是能检查出你的整个RAM使用是否超出了能用的大小,堆栈溢出一般发生在运行中,比如程序里有一些野指针,或者程序函数嵌套层数太多,都会导致堆栈溢出。如果你现在无法通过调试来得知在哪个地方出现了问题,那么你可以试着减少部分代码进行排除查找

点评

这个问题我很疑问到底是程序还是IAR有问题。 当我IAR连接通过仿真器连接单片机的时候,在程序运行过程中,我拔掉板子上的SIM卡(程序中有一段检测是GPRS是否掉线的程序,可能问题就在这段程序中)会出现这个问题。  详情 回复 发表于 2014-10-16 11:13
 
 
 

回复

333

帖子

0

TA的资源

一粒金砂(高级)

14
 
bobde163 发表于 2014-10-16 09:50
一般来说,在编译阶段是不会检查出堆栈溢出错误的,但是能检查出你的整个RAM使用是否超出了能用的大小, ...

这个问题我很疑问到底是程序还是IAR有问题。
当我IAR连接通过仿真器连接单片机的时候,在程序运行过程中,我拔掉板子上的SIM卡(程序中有一段检测是GPRS是否掉线的程序,可能问题就在这段程序中)会出现这个问题。
当我单片机不连接电脑跑程序,(不接仿真器和不打开IAR),我拔掉板子上的SIM卡,就不会出现这个问题,而且试过好多次。
那到底是我程序还是IAR有问题?

点评

那你先试试把SIM卡这部分程序去掉看看还会不会了  详情 回复 发表于 2014-10-16 11:35
 
 
 

回复

1976

帖子

1

TA的资源

五彩晶圆(初级)

15
 
面纱如雾 发表于 2014-10-16 11:13
这个问题我很疑问到底是程序还是IAR有问题。
当我IAR连接通过仿真器连接单片机的时候,在程序运行过程中 ...

那你先试试把SIM卡这部分程序去掉看看还会不会了
 
 
 

回复

300

帖子

0

TA的资源

一粒金砂(高级)

16
 
我也感觉先把sim卡部分屏蔽掉试一下,感觉最主要的原因应该就是内存不太够,以前因为时间问题,我没有仔细纠结他,我换了1612(5Kram),1611(10Kram),然后就可以了……
 
个人签名世间万物皆系于一键之上~
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表