打印
[ZLG-ARM]

请教周工: AXD下,UC/OS能调试不?

[复制链接]
1648|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
年轻不在|  楼主 | 2010-7-30 23:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
第一次用UC/OS, 在AXD下, 能调试不?
现在, 我有二个程序:

第一个的问题是, 在程序起动程序里,
void  OSStart (void)
{
    INT8U y;
    INT8U x;


    if (OSRunning == FALSE) {
        y             = OSUnMapTbl[OSRdyGrp];        /* Find highest priority's task priority number   */
        x             = OSUnMapTbl[OSRdyTbl[y]];
        OSPrioHighRdy = (INT8U)((y << 3) + x);
        OSPrioCur     = OSPrioHighRdy;
        OSTCBHighRdy  = OSTCBPrioTbl[OSPrioHighRdy]; /* Point to highest priority task ready to run    */
        OSTCBCur      = OSTCBHighRdy;
        OSStartHighRdy();                           // 在这里, 就跑飞了............................
}

执行 OSStartHighRdy(); 时, 就飞了, 好像进入取数据错误?


第二个程序 OSRunning 不等于FALSE 不能起动UC/OS 我跟 踪发现, 在 OSInit ()里, OS_InitMisc(); 函数赋值 FALSE后, 在下面这个 函数给改变。

static  void  OS_InitTaskIdle (void)
{
#if OS_TASK_CREATE_EXT_EN > 0
    #if OS_STK_GROWTH == 1
    (void)OSTaskCreateExt(OS_TaskIdle,                  //在这里   OSRunning 就改变值不是0了....  
                          (void *)0,                                 /* No arguments passed to OS_TaskIdle() */
                          &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1], /* Set Top-Of-Stack                     */
                          OS_IDLE_PRIO,                              /* Lowest priority level                */
                          OS_TASK_IDLE_ID,
                          &OSTaskIdleStk[0],                         /* Set Bottom-Of-Stack                  */
                          OS_TASK_IDLE_STK_SIZE,
                          (void *)0,                                 /* No TCB extension                     */
                          OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/* Enable stack checking + clear stack  */
    #else
    (void)OSTaskCreateExt(OS_TaskIdle,
                          (void *)0,                                 /* No arguments passed to OS_TaskIdle() */
                          &OSTaskIdleStk[0],                         /* Set Top-Of-Stack                     */
                          OS_IDLE_PRIO,                              /* Lowest priority level                */
                          OS_TASK_IDLE_ID,
                          &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1], /* Set Bottom-Of-Stack                  */
                          OS_TASK_IDLE_STK_SIZE,
                          (void *)0,                                 /* No TCB extension                     */
                          OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/* Enable stack checking + clear stack  */
    #endif
#else
    #if OS_STK_GROWTH == 1
    (void)OSTaskCreate(OS_TaskIdle,
                       (void *)0,
                       &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1],
                       OS_IDLE_PRIO);
    #else
    (void)OSTaskCreate(OS_TaskIdle,
                       (void *)0,
                       &OSTaskIdleStk[0],
                       OS_IDLE_PRIO);
    #endif
#endif
}



请周工指教一二。。。。。。。。。。

相关帖子

沙发
hotpower| | 2010-7-31 10:00 | 只看该作者
俺觉得AXD像是古董弃之不可惜~~~
因为现在用它来交流和沟通太难了~~~

使用特权

评论回复
板凳
想实习去| | 2010-7-31 13:52 | 只看该作者
可以调试UC/OS

跑飞的原因很可能是您的硬件环境参数设置不当造成,不知道您跑的是哪个例程。

使用特权

评论回复
地板
3B1105| | 2010-7-31 14:13 | 只看该作者
我的问题跟你一样,我还是用smart开发板自带的程序,用标准移植代码在关中断函数跑飞,用高效代码在OSStartHighRdy();跑飞,用自带的代码都能跑飞,我真服了,找了所有问题就是没法解决,周工你说是硬件设置问题,硬件要怎么设置啊!!!!

使用特权

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

本版积分规则

106

主题

447

帖子

1

粉丝