uC/OS-II在ARM上经常遇到的问题.

[复制链接]
 楼主| samssm 发表于 2007-7-23 16:53 | 显示全部楼层 |阅读模式
uC/OS-II在ARM上经常遇到的问题.<br />&nbsp;&nbsp;&nbsp;内核参正常进入在main()函数建立的第一个任务,然后全速运行就进入取数据异常模式或未定义模式或复位异常使系统复位.进入main()函数建立的第一个任务后单步执行只能执行到OSCtxSw的最后一句LDMFD&nbsp;sp!,&nbsp;{r0-r12,&nbsp;lr,&nbsp;pc}就不能调试下去了.这个问题我在多个版本的uC/OS-II遇到过都未解决过,我甚至试过在SDT环境下正常运行的uC/OS-II&nbsp;的2.76的源代码搞过ADS下全速运行就进入取数据异常模式或复位异常使系统复位,单步调试时还是到OSCtxSw的最后一句LDMFD&nbsp;sp!,&nbsp;{r0-r12,&nbsp;lr,&nbsp;pc}就不能调试下去了.明明代码都和SDT下正常运行的荒R谎
 楼主| samssm 发表于 2007-7-26 22:32 | 显示全部楼层

不会只有我遇上吧...!

  
zbo210 发表于 2007-8-2 10:44 | 显示全部楼层

你把代码烧到flash的0地址应该就可以正常运行了

你把代码烧到flash的0地址应该就可以正常运行了,可能你的中断向量表没映射好
 楼主| samssm 发表于 2007-8-26 12:54 | 显示全部楼层

但可以正赏进入OSISR汇编函数的哦

中断向量表应该没问题的,在内存调试时,按键,DMA,定时,IIC所有中断能能正常响应,不会系统定时器的中断有问题吧
fengwei12 发表于 2007-8-27 12:15 | 显示全部楼层

堆栈有问题

<br />&nbsp;&nbsp;因该是堆栈出问题了,在执行LDMFD&nbsp;sp!,&nbsp;{r0-r12,&nbsp;lr,&nbsp;pc}这条指令的时候<br />没有恢复正确的值,比如如果给pc的值是那些保留区域的地址就会造成取指令异常。<br />&nbsp;&nbsp;&nbsp;&nbsp;如果你的任务堆栈是放在外部RAM里的话,很可能是你的外部RAM读、写访问有问题,建议你仔细检查一下外部RAM读写,可以编写一个RAM检测程序,把所有空间都写一遍,然后再读出来看是不是一致。
 楼主| samssm 发表于 2007-8-29 07:43 | 显示全部楼层

不是RAM问题

我用的是44B0,堆栈是在外部的..但我跑其它程序包括uClinux都不会遇到什么问题..所以不是RAM的读写有问题的..
armccz 发表于 2007-8-31 00:05 | 显示全部楼层

单步调试观察SP,LR,PC等的值,肯定是堆栈问题,

把LDMFD&nbsp;sp!,&nbsp;{r0-r12,&nbsp;lr,&nbsp;pc}拆成两个语句:<br />LDMFD&nbsp;sp!,&nbsp;{r0-r12,&nbsp;lr}和pc&lt=lr/sp;<br />看看问题在哪<br /><br /><br /><br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

29

帖子

0

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