ucos源码分析(一)

时间:2018.01.27 本人目前是大三学生 电子信息工程专业,在大学前俩年的时间,一直在使用和学习单片机,不过也仅仅是从51到32,马上要面临就业,最近开始学习linux ,驱动方面知识,看了几天视频,感觉看不下去了,昨晚突发奇想,下载了ucos的源码,想要分析一下这个小的嵌入式系统。本人将从头开始,通过调试追踪,对源代码进行细致分析。 希望自己可以坚持下去。开发环境是linux+ecli
摘要由CSDN通过智能技术生成

时间:2018.01.27 本人目前是大三学生 电子信息工程专业,在大学前俩年的时间,一直在使用和学习单片机,不过也仅仅是从51到32,马上要面临就业,最近开始学习linux ,驱动方面知识,看了几天视频,感觉看不下去了,昨晚突发奇想,下载了ucos的源码,想要分析一下这个小的嵌入式系统。本人将从头开始,通过调试追踪,对源代码进行细致分析。 

希望自己可以坚持下去。开发环境是linux+eclipse  仿真来运行程序。

下面进入正题,大家接触过C语言,单片机的同学都知道,程序的入口是main函数,当然在单片机中会有一些堆栈初始化以及中断向量设置我们现在不关注,

下面是这个程序的main函数;

int  main (void)
{
    OS_ERR  err;

    OSInit(&err);                                               /* Initialize "uC/OS-III, The Real-Time Kernel"         */

    OSTaskCreate((OS_TCB     *)&App_TaskStartTCB,               /* Create the start task                                */
                 (CPU_CHAR   *)"App Task Start",
                 (OS_TASK_PTR ) App_TaskStart,
                 (void       *) 0,
                 (OS_PRIO     ) APP_CFG_TASK_START_PRIO,
                 (CPU_STK    *)&App_TaskStartStk[0],
                 (CPU_STK     )(APP_CFG_TASK_START_STK_SIZE / 10u),
                 (CPU_STK_SIZE) APP_CFG_TASK_START_STK_SIZE,
                 (OS_MSG_QTY  ) 0,
                 (OS_TICK     ) 0,
                 (void       *) 0,
                 (OS_OPT      )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),
                 (OS_ERR     *)&err);

    OSStart(&err);                                              /* Start multitasking (i.e. give control to uC/OS-III). */

    while(DEF_ON){												/* Should Never Get Here							    */
    };
}
    OSInit(&err);                                               /* Initialize "uC/OS-III, The Real-Time Kernel"         */
 osInit(&err); 这是main函数中运行的第一个函数,下面是这个函数的实现 在os_core.c文件中
/*
************************************************************************************************************************
*                                                    INITIALIZATION
*
* Description: This function is used to initialize the internals of uC/OS-III and MUST be called prior to
*              creating any uC/OS-III object and, prior to calling OSStart().
*
* Arguments  : p_err         is a pointer to a variable that will contain an error code returned by this function.
*
*                                OS_ERR_NONE    Initialization was successful
*                                Other          Other OS_ERR_xxx depending on the sub-functions called by OSInit().
* Returns    : none
************************************************************************************************************************
*/

void  OSInit (OS_ERR  *p_err)
{
#if (OS_CFG_ISR_STK_SIZE > 0u)
    CPU_STK      *p_stk;
    CPU_STK_SIZE  size;
#endif



#ifdef OS_SAFETY_CRITICAL
    if (p_err == DEF_NULL) {
        OS_SAFETY_CRITICAL_EXCEPTION();
        return;
    }
#endif

    OSInitHook();                                               /* Call port specific initialization code               */

    OSIntNestingCtr       = 0u;                                 /* Clear the interrupt nesting counter                  */

    OSRunning             = OS_STATE_OS_STOPPED;                /* Indicate that multitasking not started               */

    OSSchedLockNestingCtr = 0u;                                 /* Clear the scheduling lock counter                    */

    OSTCBCurPtr           = DEF_NULL;                           /* Initialize OS_TCB pointers to a known state          */
    OSTCBHighRdyPtr       = DEF_NULL;

    OSPrioCur             = 0u;                                 /* Initialize priority variables to a known state       */
    OSPrioHighRdy         = 0u;
#if (OS_CFG_ISR_POST_DEFERRED_EN == DEF_ENABLED)
    OSPrioSaved           = 0u;
#endif

#if (OS_CFG_S
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32H750是意法半导体(STMicroelectronics)推出的一款高性能微控制器系列,它采用了Cortex-M7内核,主频高达480MHz,配备了丰富的外设和功能,适用于各种应用场景。UCOS(μC/OS)是一款开的实时操作系统(RTOS),它提供了一种可靠和高效的多任务处理方式,可用于嵌入式系统中。 STM32H750的UCOS码指的就是针对STM32H750系列微控制器的UCOS操作系统的代码。由于UCOS是开的,因此可以通过一些渠道获取到UCOS代码。通过研究UCOS码,我们可以了解UCOS操作系统的内部实现和工作原理,以及如何在STM32H750上进行移植和使用。 UCOS码包含了各个组件和模块的实现,比如任务管理、时间管理、内存管理、中断管理等,同时还包括了一些设备驱动和通信协议的支持。我们可以通过查看代码来了解UCOS的任务调度算法、任务间的通信机制、内存管理策略等。 使用STM32H750的UCOS码,我们可以基于UCOS构建自己的嵌入式系统,或者根据需求进行定制和优化。同时也可以通过阅读UCOS码,学习和理解实时操作系统的设计和实现原理,提高自己在嵌入式系统开发领域的能力。 总之,STM32H750的UCOS码提供了我们研究和应用UCOS操作系统的基础,通过深入学习和理解码,我们可以更好地使用和定制UCOS,应用在我们的嵌入式系统开发中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值