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. */