uC/OS-II源码分析(一)

简介: 下载地址:http://www.micrium.com/它的特点:1)开源,2)可移植性,绝大部分代码用C写,硬件相关部分用汇编写,3可固化,4)可剪裁,这通过条件编译实现,使用#define语句定义所需要的功能。

下载地址:http://www.micrium.com/

它的特点:

1)开源,

2)可移植性,绝大部分代码用C写,硬件相关部分用汇编写,

3可固化,

4)可剪裁,这通过条件编译实现,使用#define语句定义所需要的功能。

5)可剥夺性(总是运行就绪条件下优先级最高的任务),

6)多任务(可以管理64个任务,其中保留8个给uC/OS-II,因此用户最多可有56个任务,每个任务优先级不同,也就意味着不支持时间片轮转调度法,因为这种方法适合于优先级平等的任务)。

7)可确定性。函数调度和服务执行时间具有确定性,除了OSTimeTick()和某些事件标志服务,系统服务执行时间不依赖用户应用程序任务数目的多少。

8)任务栈。允许每个任务自己单独的栈空间不同,可以使用栈空间检验函数确定所需要的栈空间大小。

9)系统服务。提供信号量,互斥型信号量,事件标志,消息邮箱,消息队列,块大小固定的内存申请与释放,时间管理函数等服务。

10)中断管理。中断嵌套层数最多可达到255层。

11)稳定性和可靠性。

 

OSInit()函数用来初始化内核,必须首先调用。建立两个任务:空闲任务(其他任务都未就绪时运行),统计任务(计算CPU的利用率).

 

*****************************************************************

* Description: This function is used to initialize the internals of uC/OS-II and MUST be called prior to creating any uC/OS-II object and, prior to calling OSStart().

*****************************************************************

 

OSInit

 

********************************************************************************************

* Description: This function is called by OSInit() to initialize miscellaneous variables.

********************************************************************************************

 

 OS_InitMisc

 

 

空闲任务和统计任务建立的代码基本一样,只是统计任务的优先级比空闲任务大1,

********************************************************************************************

* Description: This function creates the Idle Task.

********************************************************************************************

 

CodeOS_InitTaskIdle

 

 

其他初始化代码放到后面具体的每一个子模块中再分析。

 

作者:洞庭散人

出处:http://phinecos.cnblogs.com/    

本博客遵从 Creative Commons Attribution 3.0 License,若用于非商业目的,您可以自由转载,但请保留原作者信息和文章链接URL。
目录
相关文章
|
C语言 索引
09-iOS之load和initialize底层调用原理分析
09-iOS之load和initialize底层调用原理分析
94 0
|
6月前
|
移动开发 监控 小程序
mPaaS 常见问题之Android 14uc内核不生效如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
|
存储 算法 安全
iOS-底层原理 02:alloc & init & new 源码分析
iOS-底层原理 02:alloc & init & new 源码分析
142 0
iOS-底层原理 02:alloc & init & new 源码分析
|
iOS开发
iOS - +load 和 + initialize的区别
iOS - +load 和 + initialize的区别
|
存储 缓存 Go
iOS原理分析之从源码看load与initialize方法(一)
iOS原理分析之从源码看load与initialize方法
242 0
iOS原理分析之从源码看load与initialize方法(一)
|
安全 iOS开发
iOS原理分析之从源码看load与initialize方法(二)
iOS原理分析之从源码看load与initialize方法
142 0
|
Web App开发 调度 消息中间件
uC/OS-II源码分析(一)
下载地址:http://www.micrium.com/ 它的特点: 1)开源, 2)可移植性,绝大部分代码用C写,硬件相关部分用汇编写, 3可固化, 4)可剪裁,这通过条件编译实现,使用#define语句定义所需要的功能。
787 0
|
Web App开发
uC/OS-II源码分析(四)
内核结构 1,  临界区,OS_ENTER_CRITICAL和OS_EXIT_CRITICAL 为了处理临界区代码,必须关中断,等处理完毕后,再开中断。关中断可以避免其他任务或中断进入临界区代码。uC/OS-II定义了这两个宏来实现,但注意一条:调用uC/OS-II功能函数时,中断应该总是开着的。
950 0
|
Web App开发 消息中间件 存储
uC/OS-II源码分析(二)
在真正开始分析源代码前,先来看使用uC/OS-II的三个例子 1)使用信号量   #define  TASK_STK_SIZE                 512       /* 每个任务堆栈的大小(以字计算)*/#define  N_TASKS                        ...
1669 0
|
Web App开发 调度 消息中间件
uC/OS-II源码分析(三)
首先来了解下实时系统的基本概念: 1) 临界区,共享资源,任务(类似于进程),任务切换,任务调度,可剥夺型内核,可重入函数,动态优先级调度, 2) 如何处理优先级反转问题。这个问题描述如下:有三个任务,优先级1高于2,2高于3,一开始1和2处于挂起,3在运行,3要使用某个共享资源,就P它的互斥信号量,3得到信号量后开始使用这个共享资源。
838 0