资讯详情

Ucos-2学习笔记

现在公司做项目用的是 ucos 系统,之前都在裸奔,现在从零开始,想把学习笔录记录下来。以供日后翻阅。眼前有本书是邵贝贝的,可是一看就有点头大,还是从零开始吧!

为什么要用操作系统?

裸奔程序是由先后顺序的,比如执行程序a时,程序B在等待,等a执行完后才允许B执行。而在操作系统上我们可以理解为多个任务都在执行,两个人物之间可以通过操作系统来协调,当优先级高的紧急任务可以抢占内核优先执行任务。Ucos2适用于小系统小规模的项目,可以提高执行效率。严格地说,uc/OS-II只是一个实时操作系统内核

它仅仅包含了任 务 调度、任务管理、时间管理、内存管理和任务间的通信和同步等基本功能,没有提供输入输出管理、文件系统、网络等额外的服务,我想后者可能是区别于linux的区别吧。但由于uc/OS-II良好的可扩展性和源码开放,这些非必需的功能完全可以由用户自己根据需要分别实现。

几个概念

什么是抢占式任务?

简单地说就是谁的优先级高谁就可以抢占内核或者空间来执行优先级高的任务。

或者这么说,高优先级任务可以在某些时刻抢占了正在上运行的低优先级任务的CPU执行权限。根据抢占时机又可以分为用户空间抢占和内核抢占。

什么是任务调度机制?

首先要创建任务,创建任务的数目有限制,56个以内,创建任务也有优先级,优先级别为0时,优先级最高。系统初始化完毕后,外设驱动初始化完毕后,建立任务,任务中含有一些参数,包括返回值,优先级别,堆栈大小等,然后开始任务调度,也就是程序运行。

Ucos2的运行步骤?(工作原理)

首先进行操作系统初始化,主要完成任务控制块(tcb)初始化,然后开始创建新任务、初始化任务堆栈区,最后调用OSART()函数,开始任务调度。主函数如下:

intmain(void)

{

I8Uret=0;

BspInit();//外设功能初始化

RestoreConfigData();

OSInit();//uCOS-II系统初始化

ret=OSTaskCreate(Start_Task,//初始化任务

(void*)0,//无参数

&Start_TaskStk[APP_TASK_STK_SIZE-1],//任务堆栈大小为128*4Byte

PRIO_START_TASK);//优先级最高2

if(ret!=OS_ERR_NE)

{

DebugOut(0,"Start_Task任务建立失败!error=%d\r\n",ret);

}

OSStar

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台