打印
[ZLG-MCU]

急:请教uCOS多任务管理死机?

[复制链接]
3209|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
坚持梦想|  楼主 | 2008-5-25 21:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在IAR开发平台,EASYARM615上移植uCOSII。在实验例程5.5邮箱按键实验的基础上添加3个任务,根据邮箱消息内容执行相应任务。
添加2个任务,可以正常切换任务。但改成3个任务后,当运行第3个任务时,系统就死机。
这是为什么?是硬件还是软件问题?因为新增两个任务都可以,所以觉得程序编写应该没有问题……
不知道大家是否遇到过这样的问题,恳请指点~~谢谢!

相关帖子

沙发
zlgarm| | 2008-5-26 08:40 | 只看该作者

信息不多

信息不多,只能估计下面情况:
1)堆栈溢出,尝试把任务的堆栈加大试试。
2)最大任务数太少,第三个任务无法创建。
3) 第三个任务操作了什么错误东西,如读写不存在的寄存器。

(zlgarm_zsg)

使用特权

评论回复
板凳
坚持梦想|  楼主 | 2008-5-26 13:03 | 只看该作者

尝试失败

1、以下是我原来定义的任务堆栈及主堆栈大小,
#define  TASK_START_STK_SIZE           50
#define  TASK_A_STK_SIZE               50
#define  TASK_B_STK_SIZE               30
#define  TASK_C_STK_SIZE               30
#define  TASK_D_STK_SIZE               30  
#define  TASK_E_STK_SIZE               50
#ifndef __STACK_SIZE
    #define __STACK_SIZE    256
#endif
结果运行第三个任务时死机。
2、于是我把堆栈改为
#define  TASK_E_STK_SIZE               70
#ifndef __STACK_SIZE
    #define __STACK_SIZE    512
#endif
结果程序一运行就跑飞。
好像问题越来越多。。。。
3、第三个任务与每二个任务内容做了交换,结果,原先的第三个任务运行正常了,现在的第三个任务仍然一运行就死机。所以觉得应该不是任务内容本身的问题。

使用特权

评论回复
地板
jxb163| | 2008-5-28 17:59 | 只看该作者

用反真器调试下,看怎么跑飞的

UCOS这东西,费力不讨好,

使用特权

评论回复
5
坚持梦想|  楼主 | 2008-5-28 23:29 | 只看该作者

如何调试,能否说得具体些?

我一下载运行程序,程序就进入FaultISR了。这种情况下,要如何仿真调试才能找到原因?请高手指点,说得具体些。先谢谢了~

使用特权

评论回复
6
zlgarm| | 2008-5-29 08:43 | 只看该作者

问题所在

“我一下载运行程序,程序就进入FaultISR了”
  这种情况可能是程序中定义了很多RAM全局/静态变量,并且定义了初始值。在进入main()前,先跑一段小程序,把初始值从FLASH文字池,复杂到RAM全局/静态变量,这个过程是使用主堆栈的,如果数据过多就堆栈溢出,进入FaultISR.

(zlgarm_zsg)

使用特权

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

本版积分规则

12

主题

39

帖子

0

粉丝