打印

求助,死机问题,keil下优化等级的差异

[复制链接]
1705|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
嘉兴小宋|  楼主 | 2013-7-13 17:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
公司有款产品使用的是AVR32,目前我的任务是使用STM32F013VCT6进行替换并升级部分功能。现在遇到了一个问题,比较头疼,保留原有的应用部分,替换了底层驱动,测试时使用其中一个功能会导致设备死机,优化等级为0时问题则消失,已经确认过在中断中调用的变量加上了volatile进行修饰。通过串口打印,多数情况下会死在这个位置:
#define get_bit(var, n)                (var & (0x80>>n))
#define set_bit(var, n)                (var |= (0x80>>n))
#define clr_bit(var, n)                (var &= ~(0x80>>n))
static void change_bit(unsigned char i_a,unsigned char j_b,unsigned char a, unsigned char *b)
{
        if(get_bit(a, i_a))
        set_bit(*b, j_b);
        else
        clr_bit(*b, j_b);
}
打印过,参数也都在合理的范围内,更奇怪的是,在这个函数调用前如果加上一句串口打印函数,也不会出现死机。很想知道,优化等级设置的影响,不知道有没有人遇到类似优化等级导致死机的问题。
沙发
tianli1980| | 2013-7-14 16:43 | 只看该作者
没有了解过,不太清楚,帮顶一下,希望有朋友能帮助你。

使用特权

评论回复
板凳
mybao| | 2013-7-14 16:47 | 只看该作者
优化后生成汇编看看

使用特权

评论回复
地板
hawksabre| | 2013-7-14 20:18 | 只看该作者
帮楼主顶一个   话说   汇编  看不懂啊

使用特权

评论回复
5
嘉兴小宋|  楼主 | 2013-7-15 14:36 | 只看该作者
问题找到了,是堆栈不足,局部变量申请过多,不过还是不能理解,这个跟优化等级存在什么关系,哪位知道其中的联系吗?

使用特权

评论回复
6
way3| | 2013-7-16 13:32 | 只看该作者
堆栈怎么不足了?局部变量申请过多都会出问题?你局部变量申请多少了?还是不怎么清楚。

使用特权

评论回复
7
zeluo| | 2013-7-16 18:40 | 只看该作者
这个汇编   真的看不懂啊   比较悲催     

使用特权

评论回复
8
zeluo| | 2013-7-16 18:41 | 只看该作者
水平有限   帮楼主顶一个    看看有没有高手能够解决这问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

5

帖子

1

粉丝