
ucos
文章平均质量分 77
Fred-XU
https://www.zhihu.com/people/fredric-96
展开
-
ucos-II 任务调度源码分析(一)
ucos-II 源码概述操作系统最原始的功能在于对上层应用提供统一的硬件资源管理,这里的硬件资源包括CPU、内存、存储(文件系统)、外设(驱动管理)等等。从这个角度讲,ucos-II操作系统(针对v2.0版本的源码)只管理了两个资源:CPU的计算能力和内存。因此,个人理解可以把ucos-II的内核代码从功能角度分成以下几块:针对CPU计算能力的管理:主要是任务调度和中断的支持;在ucos-...原创 2013-01-23 11:28:00 · 782 阅读 · 0 评论 -
ucos-II 时间管理源码分析
ucos-II 的时间管理非常简单,其的核心主要在于理解两个变量和一个函数。一个是全局变量 OS_EXT volatile INT32U OSTime 表示系统时间;另外一个是每个任务的OS_TCB变量中的成员OSTCBDly用来处理任务的延时;函数OSTimeTick被定义在core.c文件中,它需要在系统启动时被挂载在一个定时器里(根据CPU的不同,在操作系统的移植代码里实现),...原创 2013-01-27 20:51:00 · 412 阅读 · 0 评论 -
ucos-II 任务间通信源码分析
ucos-II 2.0版本的任务间通信提供消息邮箱和消息队列两种机制,都基于内核的事件控制块机制实现。消息邮箱消息邮箱主要函数分析:建立一个邮箱 OSMboxCreate:初始化一个OS_EVENT_TYPE_MBOX类型的事件块; 向邮箱发送一个消息 INT8U OSMboxPost (OS_EVENT *pevent, void *msg),该函数调用OS_EventTaskR...原创 2013-01-25 16:57:00 · 582 阅读 · 0 评论 -
ucos-II 任务间同步源码分析(二)
事件标志组也是任务同步的一种机制,它实现的同步机制是针对多个条件,因此类似Event但引入了一个flag变量,假设这个flag是个INT8U,那么其0x00010010每个bit位的1或者0表示一个条件的满足或不满足。事件标志组管理的全局变量(下述变量在OS_FlagInit中初始化):typedef struct {/* Event Flag Group ...原创 2013-01-25 15:46:00 · 522 阅读 · 0 评论 -
ucos-II 任务间同步源码分析(一)
ucos-II 任务间的同步主要有三个部分,信号量、互斥性信号量和事件标志组,前两者都基于事件机制完成(见ucos-II 事件控制块)。本文主要记录信号量和互斥信号量的分析。1. 信号量SEM的主要接口函数建立一个信号量:OS_EVENT *OSSemCreate(INT16U cnt);创建一个OS_EVENT_TYPE_SEM类型的事件块,将cnt赋值给OSEventCnt,可表...原创 2013-01-25 11:39:00 · 618 阅读 · 0 评论 -
ucos-II 内存管理源码分析
ucos-II的内存管理提供了对某块完整内存的修改,功能非常简单NBNC的代码大概只有200多行,在整个内核中也基本是独立的。它通过如下方式对内存块进行管理:OS_MEM *mem;INT8U buff[16][128];void main(void){ INT8U err; mem = OSMemCreate(&buff[0][0],16,128,&...原创 2013-01-24 11:36:00 · 394 阅读 · 0 评论 -
ucos-II 事件控制块源码分析
ucos-II 采用了事件控制块(ECB)的机制完成任务与任务、中断与任务之间的交互。并在此基础上扩展实现了信号量、互斥信号量、消息邮箱和消息队列。理解ucos-II的ECB主要看以下几方面的代码(包含在core.c中):1. EVENT的定义:typedef struct { INT8U OSEventType; //事件控制块类型(见OS_EVENT_TYPE) ...原创 2013-01-24 10:49:00 · 509 阅读 · 0 评论 -
ucos-II 任务调度源码分析(三)
ucos-II并不像linux等操作系统一样提供中断程序处理的框架,更合理的说法是用户必须在自己的中断服务程序中适配ucos的任务调度机制。这个适配就是在OSIntEnter和OSIntExit。ucos-II在中断机制中考虑如下两点设计:中断是可以嵌套的,但所有嵌套的中断必须一次处理完; 当所有嵌套的中断处理完成后,选择优先级最高的任务执行,而非被中断的任务;ucos-II中中断的例子(...原创 2013-01-24 09:13:00 · 566 阅读 · 0 评论 -
ucos-II 任务调度源码分析(二)
在ucos-II中最主要的函数是:INT8U OSTaskCreate (void (*task)(void *p_arg),void *p_arg,OS_STK *ptos, INT8U prio)*task:任务函数的钩子;*p_arg:任务的参数;ptos:指向任务的堆栈;prio:任务的优先级。在OSTaskCreate中主要完成了以下工作:OSTCBPrioTbl[pr...原创 2013-01-23 22:06:00 · 675 阅读 · 0 评论 -
ucos-II 移植
本文主要记录ucos-II的移植,目标芯片为STC12C5A60S2.参考文献《增强型8051单片机使用开发技术》、《嵌入式实时操作系统 uc/os-II》。编译环境为keil uV4,注:编译ucos需要用破解版的keil,否则提示代码长度限制。这边破解成功后仍然提示代码限制,问题在于工程需要重新创建!!移植ucos-II 涉及三个文件OS_CPU.H、OS_CPU_A.ASM、OS...原创 2013-02-19 22:21:00 · 443 阅读 · 0 评论