yurifeng 发表于 2009-10-14 21:29:15

编译通过的uCOS居然无法运行!! 恳请大侠指点迷津

http://cache.amobbs.com/bbs_upload782111/files_20/ourdev_491667.jpg
(原文件名:未命名.jpg)


想请教大侠,在下使用BC45调试uCOS-II时出现以上对话框的问题    使编译的程序无法运行

主程序在二楼   恳请指点

gzhuli 发表于 2009-10-14 23:04:42

在一个OS中直接跑另一个OS?

yurifeng 发表于 2009-10-15 10:28:41

不是啊    只是在uCOS上编个简单的应用程序而言   主程序如下


#include "includes.h"

/*
*********************************************************************************************************
*                                              CONSTANTS
*********************************************************************************************************
*/

#define    TASK_STK_SIZE    512

/*
*********************************************************************************************************
*                                              VARIABLES
*********************************************************************************************************
*/

char*    ss;
OS_STK   MyTaskStk;
OS_STK   YouTaskStk;
INT16S   key;
INT8U    y1 = 0, y2 = 0;
char*    s ="原始数据";

/*
*********************************************************************************************************
*                                       FUNCTION PROTOTYPES
*********************************************************************************************************
*/

voidMyTask(void * data);
voidYouTask(void * data);

/*$PAGE*/
/*
*********************************************************************************************************
*                                                MAIN
*********************************************************************************************************
*/

void main (void)
{
       PC_DispClrScr(DISP_FGND_WHITE);

       OSInit();                                              /* Initialize uC/OS-II                      */

       PC_DOSSaveReturn();                                    /* Save environment to return to DOS      */
       PC_VectSet(uCOS, OSCtxSw);                           /* Install uC/OS-II's context switch vector */

       PC_ElapsedInit();

       OSTaskCreate(
                                                MyTask,                  //代码
                                          (void* )0,                  //任务参数
                                          &MyTaskStk,//任务堆栈
                                          0);                         //任务优先级

       OSStart();                                             /* Start multitasking                     */
}
/*$PAGE*/
/*
*********************************************************************************************************
*                                             STARTUP TASK
*********************************************************************************************************
*/

voidMyTask(void * pdata)
{
                #ifOS_CRITICAL_METHOD == 3
                          OS_CUP_SRcpu_sr;
                #endif

                INT8Uerr;

                          pdata = pdata;
                          OS_ENTER_CRITICAL();
                                  PC_VectSet(0x08, OSTickISR);
                                  PC_SetTickRate(OS_TICKS_PER_SEC);
                          OS_EXIT_CRITICAL();
                          OSStatInit();
                          OSTaskCreate( YouTask,                     //代码
                                                                (void* )0,                  //任务参数
                                                                &MyTaskStk,//任务堆栈
                                                                2);                           //任务优先级
                          for(;;)
                          {
                                        s = "MyTask访问共享数据";
                                        PC_DispStr(5,
                                                                  ++y1,
                                                                  s,
                                                                  DISP_BGND_BLACK+DISP_FGND_WHITE);


                                        OSTimeDly(20);
                          }
}

voidYouTask(void * pdata)
{
    #ifOS_CRITICAL_METHOD == 3
                          OS_CUP_SRcpu_sr;
       #endif

               INT8Uerr;
               pdata = pdata;
                  for(;;)
               {
                                s = "YouTask访问共享数据";
       
                                PC_DispStr(28,++y2,s,DISP_BGND_BLACK+DISP_FGND_WHITE);

                                OSTimeSet(0);
                                while(OSTime<500)
                                {
                                          //sprintf(ss,"%d", OSTimeGet());
                                          PC_DispStr(55,y2,s,DISP_BGND_BLACK+DISP_FGND_WHITE);
                                }

                                OSTimeDly(10);
               }

}

调试邵贝贝书配套光盘上的ex4也有同样的问题,不知道原因何在?
光盘资料论坛上也有人上传了。感兴趣的同志也可以玩玩的

gzhuli 发表于 2009-10-15 14:32:42

我是说,你把ucos编译成一个exe文件,然后直接在windows里面运行了?(看你的截图是这个情况)

yurifeng 发表于 2009-10-15 19:58:14

是啊,这个是在Borland C++4.5平台上调试的,许多书的列子都是在Borland上调试的~~

gzhuli 发表于 2009-10-16 01:37:31

uCOS-II是操作系统,怎能当普通程序对待呢?
要调试uCOS-II,只能用虚拟机或模拟器,Windows不可能让另一个操作系统在自己上面跑的。

yurifeng 发表于 2009-10-19 21:24:57

不是吧??书上都是这么调的   我也是按照书上的做而已   

而且很多列子都通过了调试   就是这个不行啊
页: [1]
查看完整版本: 编译通过的uCOS居然无法运行!! 恳请大侠指点迷津