打印

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

[复制链接]
2346|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
samssm|  楼主 | 2007-7-23 16:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
uC/OS-II在ARM上经常遇到的问题.
   内核参正常进入在main()函数建立的第一个任务,然后全速运行就进入取数据异常模式或未定义模式或复位异常使系统复位.进入main()函数建立的第一个任务后单步执行只能执行到OSCtxSw的最后一句LDMFD sp!, {r0-r12, lr, pc}就不能调试下去了.这个问题我在多个版本的uC/OS-II遇到过都未解决过,我甚至试过在SDT环境下正常运行的uC/OS-II 的2.76的源代码搞过ADS下全速运行就进入取数据异常模式或复位异常使系统复位,单步调试时还是到OSCtxSw的最后一句LDMFD sp!, {r0-r12, lr, 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所有中断能能正常响应,不会系统定时器的中断有问题吧

使用特权

评论回复
5
fengwei12| | 2007-8-27 12:15 | 只看该作者

堆栈有问题


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

使用特权

评论回复
6
samssm|  楼主 | 2007-8-29 07:43 | 只看该作者

不是RAM问题

我用的是44B0,堆栈是在外部的..但我跑其它程序包括uClinux都不会遇到什么问题..所以不是RAM的读写有问题的..

使用特权

评论回复
7
armccz| | 2007-8-31 00:05 | 只看该作者

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

把LDMFD sp!, {r0-r12, lr, pc}拆成两个语句:
LDMFD sp!, {r0-r12, lr}和pc<=lr/sp;
看看问题在哪



使用特权

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

本版积分规则

13

主题

29

帖子

0

粉丝