说一下刚学习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的更多相关文章

  1. 【小梅哥SOPC学习笔记】NIOS II处理器运行UC/OS II

    SOPC开发流程之NIOS II 处理器运行 UC/OS II 这里以在芯航线FPGA学习套件的核心板上搭建 NIOS II 软核并运行 UCOS II操作系统为例介绍SOPC的开发流程. 第一步:建 ...

  2. uC/OS II原理分析及源码阅读(一)

    uC/OS II(Micro Control Operation System Two)是一个可以基于ROM运行的.可裁减的.抢占式.实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,是和 ...

  3. 【原创】uC/OS II 任务切换原理

    今天学习了uC/OS II的任务切换,知道要实现任务的切换,要将原先任务的寄存器压入任务堆栈,再将新任务中任务堆栈的寄存器内容弹出到CPU的寄存器,其中的CS.IP寄存器没有出栈和入栈指令,所以只能引 ...

  4. uC/OS II 函数说明 之–OSTaskCreate()与OSTaskCreateExt()

    1. OSTaskCreate()    OSTaskCreate()建立一个新任务,能够在多任务环境启动之前,或者执行任务中建立任务.注意,ISR中禁止建立任务,一个任务必须为无限循环结构.    ...

  5. uc/os iii移植到STM32F4---IAR开发环境

    也许是先入为主的原因,时钟用不惯Keil环境,大多数的教程都是拿keil写的,尝试将官方的uc/os iii 移植到IAR环境. 1.首先尝试从官网上下载的官方移植的代码,编译通过,但是执行会报堆栈溢 ...

  6. uc/os 任务删除

    问题描述:     uc/os 任务删除 问题解决: uc/os任务删除流程图 具体代码 注:     如上是关中断,以及取消优先级对应的就绪标志 关中断代码为: 取消就绪标志,实际上是将就绪表中指定 ...

  7. uc/os任务创建

    问题描述:      uc/os中任务创建 问题解决: 创建一个任务,任务从无到有.任务创建函数分两种, 一种是基本的创建函数OSTaskCreate, 另一种是扩展的任务创建函数OSTaskCrea ...

  8. uC/OS 的任务调度解析 (转)

    uC/OS 的任务调度解析 1.任务调度器启动之后(初始化,主要是TCB的初始化),就可以创建任务,开始任务调度了,实际上第一个任务准确的说不是进行任务切换,而是进行启动当前最高优先级任务.uC/OS ...

  9. 关于uC/OS的简单学习(转)

    1.微内核 与Linux的首要区别是,它是一个微内核,内核所实现的功能非常简单,主要包括: 一些通用函数,如TaskCreate(),OSMutexPend(),OSQPost()等. 中断处理函数, ...

随机推荐

  1. Python数据挖掘——基础知识

    Python数据挖掘——基础知识 数据挖掘又称从数据中 挖掘知识.知识提取.数据/模式分析 即为:从数据中发现知识的过程 1.数据清理 (消除噪声,删除不一致数据) 2.数据集成 (多种数据源 组合在 ...

  2. python3 ,AttributeError: module 'tensorflow' has no attribute 'merge_summary'

    error:tensorflow有些方法属性被改了, self.summary_writer = tf.train.SummaryWriter(summary_dir)改为:summary.FileW ...

  3. sqlserver-查阻塞

    模拟阻塞: 打开两个窗口:     窗口一: BEGIN TRANSACTION--开始事务 --等待1分钟 WAITFOR DELAY '00:1'; 窗口二: 查询阻塞:(当前被阻塞的进程id,不 ...

  4. ES6的新特性(2)——let 与 const 增强变量声明

    let 与 const 增强变量声明 ES6 新增了let命令,用来声明局部变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效,而且有暂时性死区的约束. 先看个var的常见 ...

  5. 01慕课网《vue.js2.5入门》——基础知识

    前端框架 Vue.js2.5 2018-05-12 Vue官网:https://cn.vuejs.org/ 基础语法+案例实践+TodoList+Vue-cli构建工具+TodoList Vue基础语 ...

  6. 【每日scrum】NO.9

    (1)这是我们冲刺的最后一天,晚上我们的团队进行了收尾工作:第一阶段的任务基本完成,软件主要实现了校园景点照片以及对应的介绍,查询最短路径,查询涉及相关景点的查询,查询全部路径,基本界面的设计,导航功 ...

  7. 七周七语言之用Io编写领域特定语言

    如果你想获得更好的阅读体验,可以前往我在 github 上的博客进行阅读,http://lcomplete.github.io/blog/2013/06/05/sevenlang-io/. Io 语言 ...

  8. Spring – 缓存注解

    Spring缓存抽象概述 Spring框架自身并没有实现缓存解决方案,但是从3.1开始定义了org.springframework.cache.Cache和org.springframework.ca ...

  9. 爬虫学习之-xpath

    1.XPATH使用方法 使用XPATH有如下几种方法定位元素(相比CSS选择器,方法稍微多一点): a.通过绝对路径定位元素(不推荐!) WebElement ele = driver.findEle ...

  10. Ubuntu 下升级 php

    起因: 在现有的 Apache + PHP 环境下,增加一个 PHP Extension 扩展时,遇到错误: Unable to initialize moduleModule compiled wi ...