122402902 发表于 2011-11-30 00:34:02

求助IAR 5.50 RT_THREAD 动态创建线程问题

我按照手册例程创建了两个动态线程。但是在运行过程中finsh会提示(priority < RT_THREAD_PRIORITY_MAX) assert failed at _rt_thread_init:65

仿真后发现,在IAR仿真时出现堆栈溢出。第一个线程创建成功,第二个线程在创建时因为堆栈溢出后数据错误,所以优先级参数发生错误。但是同样的程序
在keil下面编译下载后正常运行。

请问,各位同仁是否有碰到过此问题,如果有知道答案的烦请告知。谢谢!


static rt_thread_t tid1 = RT_NULL;
static rt_thread_t tid2 = RT_NULL;

//线程创建例程
static void thread1_entry(void *parameter)
{
    rt_uint32_t count = 0;
    while(1)
    {
      rt_kprintf("thread1: count: %d\n",count++);
      
      rt_thread_yield();
    }
}

static void thread2_entry(void *parameter)
{
   rt_uint32_t count = 0;

   while(1)
   {
   rt_kprintf("thread2: count = %d\n",count ++);
   
   rt_thread_yield();
   }
}


int thread_dynamic_simple_init()
{
tid1 = rt_thread_create("t1",
                        thread1_entry,
                        RT_NULL,
                        512,
                        10,
                        5);
if(tid1 != RT_NULL)
       rt_thread_startup(tid1);

tid2 = rt_thread_create("t2",
                        thread2_entry,
                        RT_NULL,
                        512,
                        10,
                        5);
if(tid2 != RT_NULL)
    rt_thread_startup(tid2);

return 0;
}



int rt_application_init()
{
thread_dynamic_simple_init();

   return 0;
}

点击此处下载 ourdev_700180T3PR5V.rar(文件大小:2.51M) (原文件名:project_led.rar)

aozima 发表于 2011-11-30 10:14:46

先把栈加大些,如果OK再查具体用了多少栈。

122402902 发表于 2011-11-30 10:39:03

栈我从512加到了2048 同样存在这个问题 fish显示栈的话用了90%

但是,这两个小任务实际中占的栈很小。 另外keil下编译后运行完全没有问题

aozima 发表于 2011-11-30 10:43:59

换个版本的IAR试下,这两个线程占用的栈应该用不了512字节。
页: [1]
查看完整版本: 求助IAR 5.50 RT_THREAD 动态创建线程问题