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。
目录
相关文章
|
5月前
|
移动开发 监控 小程序
mPaaS 常见问题之Android 14uc内核不生效如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
|
5月前
|
Web App开发 JSON 移动开发
mPaaS常见问题之加载不到uc 内核如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
|
网络协议 Linux API
Android C++ 系列:Linux Socket 编程(三)CS 模型示例
服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待,处于 监听端口的状态,客户端调用socket()初始化后,调用connect()发出SYN段并阻塞等待服 务器应答,服务器应答一个SYN-ACK段,客户端收到后从connect()返回,同时应答一个ACK 段,服务器收到后从accept()返回。
157 0
|
Web App开发 调度
uC/OS-II源码分析(五)
每个任务被赋予不同的优先级等级,从0 级到最低优先级OS_LOWEST_PR1O,包括0 和 OS_LOWEST_PR1O 在内。当μC/OS-Ⅱ初始化的时候,最低优先级OS_LOWEST_PR1O 总是被赋给空闲任务idle task 。
724 0
|
Web App开发
uC/OS-II源码分析(四)
内核结构 1,  临界区,OS_ENTER_CRITICAL和OS_EXIT_CRITICAL 为了处理临界区代码,必须关中断,等处理完毕后,再开中断。关中断可以避免其他任务或中断进入临界区代码。uC/OS-II定义了这两个宏来实现,但注意一条:调用uC/OS-II功能函数时,中断应该总是开着的。
943 0
|
Web App开发 消息中间件 存储
uC/OS-II源码分析(二)
在真正开始分析源代码前,先来看使用uC/OS-II的三个例子 1)使用信号量   #define  TASK_STK_SIZE                 512       /* 每个任务堆栈的大小(以字计算)*/#define  N_TASKS                        ...
1662 0
|
Web App开发 调度 消息中间件
uC/OS-II源码分析(六)
μC/OS-Ⅱ总是运行进入就绪态任务中优先级最高的那一个。确定哪个任务优先级最高, 下面该哪个任务运行了的工作是由调度器(Scheduler)完成的。任务级的调度是由函数 OSSched()完成的。中断级的调度是由另一个函数OSIntExt() 完成的,这个函数将在以后描 述。
890 0
|
Web App开发 调度 消息中间件
uC/OS-II源码分析(三)
首先来了解下实时系统的基本概念: 1) 临界区,共享资源,任务(类似于进程),任务切换,任务调度,可剥夺型内核,可重入函数,动态优先级调度, 2) 如何处理优先级反转问题。这个问题描述如下:有三个任务,优先级1高于2,2高于3,一开始1和2处于挂起,3在运行,3要使用某个共享资源,就P它的互斥信号量,3得到信号量后开始使用这个共享资源。
830 0
|
Web App开发 调度 消息中间件
uC/OS-II源码分析(一)
下载地址:http://www.micrium.com/ 它的特点: 1)开源, 2)可移植性,绝大部分代码用C写,硬件相关部分用汇编写, 3可固化, 4)可剪裁,这通过条件编译实现,使用#define语句定义所需要的功能。
783 0
下一篇
无影云桌面