打印

求教AT91SAM7S64的启动代码问题

[复制链接]
2299|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ysxiao|  楼主 | 2009-9-17 09:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ysxiao 于 2009-9-17 09:09 编辑

我用的ADS+HJTAG编译调试
开始的时候,程序能够正常的运行,然后让它自己一直在那跑,什么操作都没对它做,
过了一段时间后(时间长度不一定)程序就死了,最终停下来的地方是
                B           swivec              ; 0x08 Software Interrupt
就从这个地方我根本就不知道问题出在哪里,而且在整个程序里好像也没有什么地方开过软件中断。只有两个串口0和串口1分别作为RS232和RS485通信用的中断。
另外,还有一个问题,由于我将cstartup_sam7.c中禁止看门狗的语句屏蔽后,芯片上电后看门狗还是被禁止的,也找不到其他有什么地方将狗关闭了,反正是始终无法开狗,于是我就利用PIT定时,如果延时超过10s后就软件复位:
AT91C_BASE_RSTC->RSTC_RCR = ((unsigned int) 0xA5 << 24) |  AT91C_SYSC_PROCRST;
但是程序停下来以后也始终没有执行到这一句。

请各位分析下我应该上哪里找问题去?有什么方法可以看到程序是从什么地方跳到上面那句汇编程序那的吗?谢了!

相关帖子

沙发
阿南| | 2009-9-17 14:21 | 只看该作者
设断点,看一下堆栈

使用特权

评论回复
板凳
ysxiao|  楼主 | 2009-9-18 07:48 | 只看该作者
2# 阿南
首先谢谢阿南
但是我这里还有一个问题是,程序死掉的时间根本就不确定,有的时候是几个小时,有的时候是十几个小时,程序不知道要执行多少遍以后才会出现错误
再请教阿南,断点应该设在什么地方才行?还有,程序死在这个地方是不是确定进了软件中断?有没有可能是其他原因?

使用特权

评论回复
地板
阿南| | 2009-9-18 15:12 | 只看该作者
几个小时,有的时候是十几个小时??
硬件不稳定也有可能死掉

使用特权

评论回复
5
阿南| | 2009-9-18 15:13 | 只看该作者
不过7S64硬件不稳定的可能性不大,看是否是程序有BUG

使用特权

评论回复
6
ysxiao|  楼主 | 2009-10-26 09:32 | 只看该作者
拖拖拉拉过了一个月才查出问题所在,原因是232初始化的时候除了配置RXD和TXD外还配置了根本没有用到的控制线,
AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA,
                ((unsigned int) AT91C_PA5_RXD0    ) |
                ((unsigned int) AT91C_PA6_TXD0    ) |
                ((unsigned int) AT91C_PA7_RTS0    ) |
                ((unsigned int) AT91C_PA8_CTS0    ), // Peripheral A
                0);
改成
AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA,
                ((unsigned int) AT91C_PA5_RXD0    ) |
                ((unsigned int) AT91C_PA6_TXD0    ) ), // Peripheral A
                0);
就好了。
多谢阿南!

使用特权

评论回复
7
xiecf| | 2010-1-23 09:27 | 只看该作者
但是原因究竟在哪里呢

使用特权

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

本版积分规则

1

主题

4

帖子

1

粉丝