求教AT91SAM7S64的启动代码问题

[复制链接]
3895|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 | 显示全部楼层
几个小时,有的时候是十几个小时??
硬件不稳定也有可能死掉
阿南 发表于 2009-9-18 15:13 | 显示全部楼层
不过7S64硬件不稳定的可能性不大,看是否是程序有BUG
 楼主| 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);
就好了。
多谢阿南!
xiecf 发表于 2010-1-23 09:27 | 显示全部楼层
但是原因究竟在哪里呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部