这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 急求助啊!uC/OS-II的内存溢出

共7条 1/1 1 跳转至

急求助啊!uC/OS-II的内存溢出

菜鸟
2013-01-22 16:50:56     打赏
为什么uC/OS-II移植到Freescale的MC9S12E64(RAM   = READ_WRITE    0x0400 TO   0x0FFF;)时,单任务没有出现内存溢出,两个任务就有内存溢出问题,如果再用信号量更是内存溢出问题。
“Link Error:L1102:Out of allocation space in segment RAM at address 0xDB3”,把TASK_STK_SIZE改小都没用。请各位多多指点啊!!!



关键词: 求助     OS-II     内存     溢出    

院士
2013-01-22 20:50:39     打赏
2楼
这个只能楼主自己来分析内存的使用情况了。

我们都没有看到项目需求,没有代码设置。凭空想像楼主的代码——我觉得不太可能。

freescale的MCU没有用过,不过,如果有启动文件之类的,楼主看一下stack的分配空间是否足够。

高工
2013-01-22 21:50:31     打赏
3楼
可以在编译报告中看一下ram的使用情况,分析一下

高工
2013-01-23 09:01:30     打赏
4楼
你应该介绍详细一些,这样说问题,没人能帮你解决

专家
2013-01-24 16:13:46     打赏
5楼
看看你使用内存和设置内存的大小

菜鸟
2013-01-28 09:31:39     打赏
6楼

内存设置为RAM   = READ_WRITE    0x0400 TO   0x0FFF;内存使用情况:Summary of section sizes per section type:
READ_ONLY (R):         EE9 (dec:     3817)
READ_WRITE (R/W):      9B3 (dec:     2483)
NO_INIT (N/I):         160 (dec:      352);
堆栈大小TASK_STK_SIZE 为 64(这个值越大越溢出)。
这是堆栈初始化,其中0x2222,0x1111,0xBBAA不知道为什么这样设置???
OS_STK *OSTaskStkInit (void (*task)(void *pd), void *p_arg, OS_STK *ptos, INT16U opt)

{
    INT16U *wstk;
    INT8U  *bstk;
 
    opt     = opt;                           /* 'opt' is not used, prevent warning                     */
    wstk    = (INT16U *)ptos;                /* Load stack pointer                                     */
    *--wstk = (INT16U)p_arg;                 /* Simulate call to function with argument                */
    *--wstk = (INT16U)(((INT32U)task) >> 8); /* Return address.  Format: PCH:PCL:PPAGE (cut out PPage) */
    *--wstk = (INT16U)0x2222;                /* Y Register                                             */
    *--wstk = (INT16U)0x1111;                /* X Register                                             */
    *--wstk = (INT16U)0xBBAA;                /* D Register                                             */   
    bstk    = (INT8U *)wstk;                 /* Convert WORD ptr to BYTE ptr to set CCR                */
    *--bstk = (0xC0);                        /* CCR Register (Disable STOP instruction and XIRQ)       */
    *--bstk = (INT8U)task;                   /* Save the PPAGE register                                */
    return ((OS_STK *)bstk);                 /* Return pointer to new top-of-stack                     */
   
}


菜鸟
2013-01-28 09:35:03     打赏
7楼

不好意思,我没有把问题解释清楚,以后我会加强提问题的能力,上面是我补充的,希望各位大侠多指点!!!


共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]