uC/OS-II之入门与介绍20160525
说一下刚学习uCOS的心得
1)首先强调一下实时操作系统(RTOS)的特点,最明显的是提供及时响应和高可靠性
2)基于实施操作系统的应用程序设计中,其中很重要的一个概念是"任务",任务设计也就是任务函数的设计是整个整
个应用程序的基础,其他软件设计工作都是围绕来展开的
3)用户任务函数中,必须包含至少一次的系统服务函数(一般是等待类的函数以便其他函数有机会得以运行),否则优
先级更低的任务将无法得到运行的机会,中断服务程序不能调用该类函数即一些等待函数,防止中断服务程序被打断
4)任务函数分为三类:
单次执行,即执行一次就退出的任务。
周期性执行,即到一定时间就执行的任务,当没到时间时该任务休眠,以便CPU去执行其他的任务。
事件触发执行,即当特定的事件发生时就执行任务,当没有对应的事件发生时,该任务会休眠,CPU可以去执行其他任
务。
5)使用ucos-II时,要注意在Main函数中,加入两个初始化函数:OSInit(),OSStart()。OSInit()初始化ucosII中内部
变量,OSStart()函数启动多任务环境
6)OSTaskCreateExt,创建一个任务,第一个参数为函数指针,即创建好后,就执行该函数指针指向的函数体:
INT8U OSTaskCreateExt (void (*task)(void *pd), //建立扩展任务(任务代码指针,函数指针)
void *pdata, //传递参数指针
OS_STK *ptos, //分配任务堆栈栈顶指针
INT8U prio, //分配任务优先级
INT16U id, //(未来的)优先级标识(与优先级相同)
OS_STK *pbos, //分配任务堆栈栈底指针
INT32U stk_size, //指定堆栈的容量(检验用)
void *pext, //指向用户附加的数据域的指针
INT16U opt) //建立任务设定选项
例:OSTaskCreateExt(TaskRxProc,
NULL,
&TaskStkRxProc[128 - 1],
3,
3,
TaskStkRxProc,
TASK_STK_LEN_RX_PROC,
NULL,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);//Enable stack checking for the task|Clearthe stack when the task is create
其他相关的系统函数后续再讲诉
7)操作系统中的共享区也就是临界区,各个任务访问必须互斥,保证互斥的常见方法主要有:
第一,进入然后就退出临界区,第二,使用信号量与互斥信号量
另外,注意处理临界段代码需要禁止中断,处理完毕再允许中断,避免其他任务或者中断服务同时进入临界区
uCOS提供了两个宏来实现,其中
OS_ENTER_CRITICAL()进入临界区,禁止中断
OS_EXIT_CRITICAL() 退出临界区,允许中断
8)除了互斥外,资源同步也就是任务间的通信,主要的(同步)方式有:
信号量,事件标志组,消息邮箱,消息队列这几种方法
具体后续再介绍
uC/OS-II之入门与介绍20160525的更多相关文章
- 【小梅哥SOPC学习笔记】NIOS II处理器运行UC/OS II
SOPC开发流程之NIOS II 处理器运行 UC/OS II 这里以在芯航线FPGA学习套件的核心板上搭建 NIOS II 软核并运行 UCOS II操作系统为例介绍SOPC的开发流程. 第一步:建 ...
- uC/OS II原理分析及源码阅读(一)
uC/OS II(Micro Control Operation System Two)是一个可以基于ROM运行的.可裁减的.抢占式.实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,是和 ...
- 【原创】uC/OS II 任务切换原理
今天学习了uC/OS II的任务切换,知道要实现任务的切换,要将原先任务的寄存器压入任务堆栈,再将新任务中任务堆栈的寄存器内容弹出到CPU的寄存器,其中的CS.IP寄存器没有出栈和入栈指令,所以只能引 ...
- uC/OS II 函数说明 之–OSTaskCreate()与OSTaskCreateExt()
1. OSTaskCreate() OSTaskCreate()建立一个新任务,能够在多任务环境启动之前,或者执行任务中建立任务.注意,ISR中禁止建立任务,一个任务必须为无限循环结构. ...
- uc/os iii移植到STM32F4---IAR开发环境
也许是先入为主的原因,时钟用不惯Keil环境,大多数的教程都是拿keil写的,尝试将官方的uc/os iii 移植到IAR环境. 1.首先尝试从官网上下载的官方移植的代码,编译通过,但是执行会报堆栈溢 ...
- uc/os 任务删除
问题描述: uc/os 任务删除 问题解决: uc/os任务删除流程图 具体代码 注: 如上是关中断,以及取消优先级对应的就绪标志 关中断代码为: 取消就绪标志,实际上是将就绪表中指定 ...
- uc/os任务创建
问题描述: uc/os中任务创建 问题解决: 创建一个任务,任务从无到有.任务创建函数分两种, 一种是基本的创建函数OSTaskCreate, 另一种是扩展的任务创建函数OSTaskCrea ...
- uC/OS 的任务调度解析 (转)
uC/OS 的任务调度解析 1.任务调度器启动之后(初始化,主要是TCB的初始化),就可以创建任务,开始任务调度了,实际上第一个任务准确的说不是进行任务切换,而是进行启动当前最高优先级任务.uC/OS ...
- 关于uC/OS的简单学习(转)
1.微内核 与Linux的首要区别是,它是一个微内核,内核所实现的功能非常简单,主要包括: 一些通用函数,如TaskCreate(),OSMutexPend(),OSQPost()等. 中断处理函数, ...
随机推荐
- Jenkins配置 管理
Jenkins配置 你可能已经看了前面几次练习了,其中我们不得不在Jenkins配置选项.下表列出了Jenkins 的各种配置选项. 因此,可以通过点击左侧菜单侧的 “Manage Jenkins”选 ...
- python-map, reduce, filter, lambda
目录 lambda表达式 reduce()函数 map()函数 filter()函数 tips:以下使用到的迭代器,可迭代对象,生成器等概念可以参见我的另一篇博客 lambda表达式 主要用于一行写完 ...
- 《Cocos2d-x游戏开发实战精解》学习笔记3--在Cocos2d-x中播放声音
<Cocos2d-x游戏开发实战精解>学习笔记1--在Cocos2d中显示图像 <Cocos2d-x游戏开发实战精解>学习笔记2--在Cocos2d-x中显示一行文字 之前的内 ...
- 基于kcp,consul的service mesh实现
名字kmesh 技术:proxy,kcp,consul proxy proxy分为前端和后端 前端代理服务层,包括外部的service 后端实现负债均衡 kcp kcp 基于udp,能够实现快速的传输 ...
- hbase Problem binding to node1/192.168.1.13:16020 : 地址已在使用
这是hbase 从0.9.x升级到1.x后HMaster与HRegionServer端口冲突问题 在hbase升级到1.0.0版本后,默认端口做了改动.其中16020端口是hmaster服务和hreg ...
- RESTful源码笔记之RESTful Framework的基本组件
快速实例 Quickstart 序列化 创建一个序列化类 简单使用 开发我们的Web API的第一件事是为我们的Web API提供一种将代码片段实例序列化和反序列化为诸如json之类的表示形式的方式. ...
- 常用 php server
php编程中经常需要用到一些服务器的一些资料,我把常用的用高亮的方式贴出来,其余的放在后面.方便以后查阅 复制代码代码如下: $_SERVER['HTTP_ACCEPT_LANGUAGE']/ ...
- 20135313_exp4
实验四 GUI界面的设计和运用 20135313吴子怡 一.实验目的 结合项目,为每个密码学算法设计能够提供使用者用户体验的操作界面,实现加解密.求得消息摘要的功能. 二.代码举例(备注:其 ...
- 求最大子串和以及其中一个子串(java)
public static void getMaxSum(int[] a){ int max = a[0]; int sum = a[0]; int temp = 0; int start = 0; ...
- IE劫持
解析雅虎与百度流氓原理- 为什么“浏览器劫持”能够如此猖狂呢?放眼众多论坛的求助贴,我们不时可以看到诸如“我的IE被主页被改了,我用杀毒工具扫了一遍都没发现病毒,我把主页改回自己的地址,可是一重启它又 ...