打印
[ARM7]

用Keil4 调试,请教一个调试出现的问题,各位帮帮忙

[复制链接]
2390|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zxqhbd|  楼主 | 2013-9-20 14:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用AT91SAM7S256跟一个传感器做IIC通信实验,调试过程中,单步运行,当进入一个调用函数,结束时,函数没能返回调用它的地方,而是继续往下执行,这是什么原因导致的呢?求各位帮帮忙

相关帖子

沙发
zxqhbd|  楼主 | 2013-9-20 15:20 | 只看该作者
求帮忙啊,自己顶一个

使用特权

评论回复
板凳
zxqhbd|  楼主 | 2013-9-21 14:52 | 只看该作者
求顶啊

使用特权

评论回复
地板
hsyyqq| | 2013-9-22 09:01 | 只看该作者
调用的函数嵌套了? 有没代码看看

使用特权

评论回复
5
jlass| | 2013-9-22 09:06 | 只看该作者
估计堆栈被改变了

使用特权

评论回复
6
zxqhbd|  楼主 | 2013-9-22 10:12 | 只看该作者
hsyyqq 发表于 2013-9-22 09:01
调用的函数嵌套了? 有没代码看看

我的那个代码太多,好几个文件,所以就没有贴上来,就是嵌套的,然后按理说执行完一个调用函数,它要返回原来的位置,可是它却继续执行被调用函数以下的函数,完全不按顺序,这是什么原因?会跟我的硬件有关吗?它是读写传感器的EPPROM还有RAM,是不是传感器坏了导致的?

使用特权

评论回复
7
ayb_ice| | 2013-9-22 10:12 | 只看该作者
是不是被优化了,降低优化试试

使用特权

评论回复
8
zxqhbd|  楼主 | 2013-9-22 10:14 | 只看该作者
jlass 发表于 2013-9-22 09:06
估计堆栈被改变了

你好,堆栈被改变了,那我该怎么解决?

使用特权

评论回复
9
zxqhbd|  楼主 | 2013-9-22 10:14 | 只看该作者
jlass 发表于 2013-9-22 09:06
估计堆栈被改变了

你好,堆栈被改变了,那我该怎么解决?

使用特权

评论回复
10
zxqhbd|  楼主 | 2013-9-22 10:39 | 只看该作者
ayb_ice 发表于 2013-9-22 10:12
是不是被优化了,降低优化试试

没有优化,为0,单步执行完有的函数后,它就不返回,就在那自动执行Run,这些问题是跟我的传感器硬件有关吗?是传感器没工作的原因?

使用特权

评论回复
11
ayb_ice| | 2013-9-22 11:17 | 只看该作者
那估计是进入FAULT了,程序有问题

不一定是程序本身有问题,可能使用不对

比如:

ARM有些外设如果没有使能,是不能对寄存器进行读写的,否则就会FAULT

使用特权

评论回复
12
jlass| | 2013-9-22 12:56 | 只看该作者
说白了就是你的函数写的有问题
一般在汇编代码中容易出现,但你估计使用C写的,既然你前面提到了使用嵌套,这个也可能会导致的。
我的建议是减低代码的复杂度,先保证代码的主循环能正常执行,然后慢慢加代码,找到出问题的点。

使用特权

评论回复
13
zxqhbd|  楼主 | 2013-9-22 20:18 | 只看该作者
ayb_ice 发表于 2013-9-22 11:17
那估计是进入FAULT了,程序有问题

不一定是程序本身有问题,可能使用不对

从主函数进入开始,就调用初始化函数了,然后初始化完之后,就返回不来了,很是纳闷啊。。。。。

使用特权

评论回复
14
zxqhbd|  楼主 | 2013-9-22 20:19 | 只看该作者
jlass 发表于 2013-9-22 12:56
说白了就是你的函数写的有问题
一般在汇编代码中容易出现,但你估计使用C写的,既然你前面提到了使用嵌套, ...

嗯,我试试看,只能这样慢慢找,好坑爹啊。。。

使用特权

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

本版积分规则

2

主题

17

帖子

0

粉丝