uC/OS-II内核架构解析(1)---嵌入式RTOS(转)
uC/OS-II内核架构解析(1)---嵌入式RTOS 1. 嵌入式系统基本模型 2. RTOS设计原则 采用各种算法和策略,始终保持系统行为的可预测性。即在任何情况下,在系统运行的任何时刻,OS的资源配置策略都能为争夺资源(包括CPU、内存、网络带宽等)的多个实时任务合理地分配资源,使每个实时任务的实时性要求都能得到满足。 3. GPOS与RTOS GPOS:注重每次执行的平均响应时间,而不是某次特定执行的响应时间。 RTOS:除满足应用功能需求外,还要满足实时性要求,始终保证系统行为的可预测性(predictability)。 与GPOS不同,RTOS注重的不是系统的平均表现,而是要满足每个实时任务在最坏情况下的实时性要求。也就是说,RTOS注重的是个体表现,更准确地说是个体最坏情况表现。 RTOS与GPOS的差别主要表现在: a) 任务调度策略不同; b) 内存管理方式不同; c) 中断处理方式不同; d) 系统管理方式不同; 4. 嵌入式开发模式 单片机系统的前后台程序:不使用OS,将应用程序设计成死循环,系统轮流处理各事件,对时间响应要求高的异步事件采用中断进行处理。 基于任务(进程)的软件设计方法:使用OS,由OS管理硬件资源,任务只是在需要资源时申请即可,至于when/which,完全由OS决定。 5.(不)可重入 (1) 可重入函数:指函数代码在运行过程中可以被中断,中断返回后仍能够恢复到原来的状态,并能准确无误执行的函数。 可重入函数可以被一个以上的任务调用,而不必担心数据被破坏。可重入函数或者只使用局部变量,即变量保存在CPU寄存器或堆栈中;或者使用全局变量,则要对全局变量予以保护。 (2) 不可重入函数:函数在运行过程中不可以被中断。 6. 互斥条件 实现任务间通信最简便的办法是使用共享数据,但要保证任务在处理共享数据时的排它性。使共享资源满足互斥条件,最一般的方法有: (1) 关中断 使用某种实时内核,一般情况下关中断的时间最长不超过内核本身的关中断时间,这样就不会影响系统中断延迟。 (2) 使用测试并置位指令 Test&Set操作可能是微处理器一条不会被中断的指令,否则应该在程序中关中断做TAS操作再开中断。 (3) 禁止做任务切换 此时任务切换虽然是禁止的,但仍允许中断。如果这时中断来了,ISR会在这一临界区内立即执行。 (4) 利用信号量; 7. 临界状态 临界状态指当前程序处于不可中断状态。一般情况下,在调用不可重入函数前或在修改全局变量数据时,都需要先进入临界状态。进入临界状态的主要操作是关闭所有可以屏蔽的中断;而退出临界状态的主要操作是恢复到上次进入临界状态时前中断管理的状态。 在uC/OS-II中,宏OS_ENTER_CRITICAL()描述进入临界状态所完成的操作,宏OS_EXIT_CRITICAL()描述退出临界状态的操作。uC/OS-II提供了3种进入和退出临界状态的办法,可以根据CPU类型由宏OS_CRITICAL_MOTHOD指定具体的临界状态处理办法。
uC/OS-II内核架构解析(1)---嵌入式RTOS(转)的更多相关文章
- uC/OS-II内核架构解析(2)---uC/OS-II基本介绍(转)
1. uC/OS-II文件结构 2. uC/OS-II组成部分 uC/OS-II大致可以分成系统核心(包含任务调度).任务管理.时间管理.多任务同步与通信.内存管理.CPU移植等部分. (1) 核心部 ...
- uC/OS II原理分析及源码阅读(一)
uC/OS II(Micro Control Operation System Two)是一个可以基于ROM运行的.可裁减的.抢占式.实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,是和 ...
- 【原创】uC/OS II 任务切换原理
今天学习了uC/OS II的任务切换,知道要实现任务的切换,要将原先任务的寄存器压入任务堆栈,再将新任务中任务堆栈的寄存器内容弹出到CPU的寄存器,其中的CS.IP寄存器没有出栈和入栈指令,所以只能引 ...
- 【小梅哥SOPC学习笔记】NIOS II处理器运行UC/OS II
SOPC开发流程之NIOS II 处理器运行 UC/OS II 这里以在芯航线FPGA学习套件的核心板上搭建 NIOS II 软核并运行 UCOS II操作系统为例介绍SOPC的开发流程. 第一步:建 ...
- uC/OS II 函数说明 之–OSTaskCreate()与OSTaskCreateExt()
1. OSTaskCreate() OSTaskCreate()建立一个新任务,能够在多任务环境启动之前,或者执行任务中建立任务.注意,ISR中禁止建立任务,一个任务必须为无限循环结构. ...
- 关于uC/OS的简单学习(转)
1.微内核 与Linux的首要区别是,它是一个微内核,内核所实现的功能非常简单,主要包括: 一些通用函数,如TaskCreate(),OSMutexPend(),OSQPost()等. 中断处理函数, ...
- uc/os iii移植到STM32F4---IAR开发环境
也许是先入为主的原因,时钟用不惯Keil环境,大多数的教程都是拿keil写的,尝试将官方的uc/os iii 移植到IAR环境. 1.首先尝试从官网上下载的官方移植的代码,编译通过,但是执行会报堆栈溢 ...
- 豹哥嵌入式讲堂:ARM知识概要杂辑(1)- 内核架构编年史
众所周知,ARM公司是一家微处理器行业的知名企业,ARM公司本身并不靠自有的设计来制造或出售CPU,而是将处理器架构授权给有兴趣的厂家.这些厂家基本涵盖了全球领先的知名半导体企业.软件和OEM厂商:T ...
- 痞子衡嵌入式:ARM Cortex-M内核那些事(1)- 内核架构编年史
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是ARM内核架构历史. 众所周知,ARM公司是一家微处理器行业的知名企业,ARM公司本身并不靠自有的设计来制造或出售CPU,而是将处理器架 ...
随机推荐
- 转:VC中MessageBox的常见用法
一.关于MessageBox 消息框是个很常用的控件,属性比较多,本文列出了它的一些常用方法,及指出了它的一些应用场合. 1.MessageBox("这是一个最简单的 ...
- MetaData元数据
一.基础 定义:数据库.表.列相关信息的描述. 何时使用:想取得对数据库的信息时使用. 一]数据库元数据——通过DataBaseMetaData DataBaseMe ...
- android传送照片到FTP服务器
package com.photo; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundE ...
- Storm测试报告
http://blog.csdn.net/jmppok/article/details/17614431
- android项目中各个文件的介绍
src:java源码gen:自动生成 R.javaandroid.jarandroid Dependenvies 支持jar包assets:资产目录 小的数据库 网页 bin:编译生成的临时文件lib ...
- 单网卡多IP导致的socket connect 10060超时错误
问题: 接管别人代码时遗留的一个bug,在win7下,给一个网卡设置多个ip时,发现无法连接上服务器了.XP下就不会,这多个ip为192.168.1.127,172.1.1.13,10.0.0.1. ...
- 消除JavaScript闭包的一般方法
JavaScript 的闭包是一个其主动发展的特性, 也是一个被动发展的特性. 也就是说, 一方面, JS 有了闭包能更好解决一些问题. 另一方面, JS 为了解决某些问题, 而不得不使用闭包勉强来解 ...
- Storm概念介绍
Storm核心概念如下: 1.Tuple:元组 Tuple即元组,是一个拓扑Topology中的Spout和Bolt组件之间数据传递的基本单元.元组中的字段可以是任何类 ...
- struts2.1.*中再实现了一个servlet的方法
学习Struts2也有一段时间了,今天用Servlet写了一个验证码,然后搬到Struts2中,惊奇地发现Servlet无法访问,出现404错误!后来折腾了半天,终于找出原因了.这也算我学习中的一个重 ...
- 数据库VIEW(视图)
视图是基于 SQL 语句的结果集的可视化的表. 视图包括行和列,就像一个真实的表.视图中的字段就是来自一个或多个数据库中的真实的表中的字段. 我们能够向视图加入 SQL 函数.WHERE 以及 JOI ...