当前位置: 代码迷 >> 单片机 >> 哪位大神有Renesas M16C65系列 UCOS2 移植经验的 求解答,多谢
  详细解决方案

哪位大神有Renesas M16C65系列 UCOS2 移植经验的 求解答,多谢

热度:92   发布时间:2016-04-28 15:17:50.0
哪位大神有Renesas M16C65系列 UCOS2 移植经验的 求解答,谢谢
IDE: IAR
Hardware: Renesas M16C65
OS: ucos2.56

我从官网上下载了M16C62P的例程做参考,移植了快1周,任务建立也成功,在OSStart()单步调试到RETI后,程序飞了,什么原因,请大神指点,谢谢

    .EVEN

OSStartHighRdy:
    JSR         OSTaskSwHook

    MOV.W       OSTCBHighRdy, A0               ; ISP = OSTCBHighRdy->OSTCBStkPtr
    LDC         [A0], ISP

    MOV.B       #01H, OSRunning                ; OSRunning = TRUE

    POPM        R0,R1,R2,R3,A0,A1,SB,FB

    REIT

------解决方案--------------------
LZ先到UCOS的官网找找

:)
------解决方案--------------------
OSStart()后应该会有个死循环
------解决方案--------------------
是否初始堆栈(非任务堆栈,main函数使用的堆栈)设置的太小了,你在main函数的初始化函数里用了太多的局部变量导致堆栈溢出了。

初始堆栈一般是在启动汇编中设置的。
------解决方案--------------------
INT32S main (void)
{
CPU_INT08U  os_err;

os_err = os_err; /* prevent warning... */

  /* Note:  ????????UCOS, ??OS???????°????,×???±?????????????. */
IntDisAll();                     /* Disable all ints until we are ready to accept them.  */

  OSInit();                        /* Initialize "uC/OS-II, The Real-Time Kernel".         */


os_err = OSTaskCreateExt((void (*)(void *)) App_TaskStart,  /* Create the start task.                               */