μC/OS-III---I笔记1---概述
在裸板上跑一些程序对于一些电子设计是足够的,所谓裸板上的程序就是传统的前后台系统,而我的理解它应该是一种“过程类”的程序,一个大循环(作为后台)做一些处理,中断程序(作为前台)来处理一些特殊的任务,但是当处理器处理的任务越来越多时,随然中断处理还是可以及时的处理保证及时性,但是对于大循环里面的任务来说,大循环越复杂中断愈多时 一些要求实时性比较高的处理程序就没发保质的完成甚至是“错过“重要的事情而无法完成。比如一些协议栈处理中就是灾难性的。这时前辈人就开始想着一种方法保证在处理更多更复杂的事情时如何去保证实时性的管理该方案,此时各类实时操作系统(RTOS)就开始出现,就以μC/OS这个系统为例,这类系统就是为解决前面提到的问题而被创造出来的。μC/OS是一种可剥夺型的任务管理系统,任务代码随时都可以打断正在执行的任务而去执行及时性要求更高的处理任务从而保证实时性要求更加高的任务可以被先执行。看到这里相信大家肯定也都明白了实时操作系统的任务了。他就是被人创造出来的一个用以高效率管理处理器资源的管理员,让处理器在面对更多更复杂的处理任务时可以更加的智能,接下来我将要记录我自己的μC/OS-III 游记了。
因为C语言的特点所以大部分的系统内核都采用C(很少的ASM)来编写,ASM主要是在涉及CPU的一些操作时为加快处理效率所以常用ASM语言编写,因此我认为学习μC/OS-III之前应该对C及你的CPU相关的简单ASM语句要有一定的了解,同时数据结构也是必不可少的。
μC/OS-III相关文件结构属性分类:
- OS_cfg_app.c 系统任务配置相关
- OS_type.h 内核对象的数据类型定义相关
- OS_dbg.c 和调试相关的数据类型定义和相关
- OS_flag.c 事件标志组相关
- OS_int.c 中断延迟相关
- OS_mem.c 内存分区相关
- OS_msg.c 消息相关函数
- OS_mutex.c 二值信号相关
- OS_sem.c 多值信号量相关
- OS_task.c 任务相关
- OS_tmr.c 定时器相关
- OS_var.c 变量定义相关
- OS_time.c 时间管理相关
- OS _stat.c 统计信息相关
- OS_q.c 队列相关
- OS_pend_multi.c 等待多个内核对象相关
- OS_prio.c 优先组相关
- OS_tick,c 时钟节拍相关
- OS_core.c 内核底层相关
- OS.h 相关数据结构的定义
以上这些都是与CPU无关的文件。
- CPU_cfg.h 定义CPU相关指令
- lib.cfg.h 库的相关配置
- OS_cfg.h 系统配置相关,比如内核的裁剪
- OS_cfg_app.h 系统配置相关,比时钟节拍频率的配置
以上这些都是OS配置相关的代文件。
- OS_cup_a.asm CPU相关的汇编函数的定义及声明
- OS_cpu_c.c CPU相关的C语言函数的定义及声明
- OS_cpu.h CPU相关的配置及文件函数的声明
- OS_def.h CPU先关的宏定义
- cpu_c.c CPU相关的C语言配置代码
- cpu_a.asm CPU相关的汇编代码
- cpu_core.c CPU核心相关的配置函数
- cpu_core.h CPU核心相关的配置
以上这些都是CPU配置相关的文件。其中前三个为移植相关的配置文件。
除此之外还有些相关的库比如lib.ascii等。具体看图
对于不同的环境下相关的库还有少许差别。
一个任务他的状态是确定的共有一下9种状态保存在任务控制块里的TaskState变量中:
- OS_TASK_STATE_RDY 就绪状态,优先级最高时会执行
- OS_TASK_STATE_DLY 延时状态,用延时函数将其加入延时列表延时一段时间时的状态
- OS_TASK_STATE_PEND 任务在等待信号
- OS_TASK_STATE_PEND_TIMEOUT 任务在等待信号,不过这里是有超时检测的
- OS_TASK_STATE_SUSPENDED 任务处于挂起状态,可以理解为强行暂停一个任务
- OS_TASK_STATE_DLY_SUSPENDED 任务自己创建了一个延时但延时未完就被挂起了
- OS_TASK_STATE_PEND_SUSPENDED 等待事件过程被挂起
- OS_TASK_STATE_PEND_TIMEOUT_SUSPENDED 同上加了超时检测
- OS_TASK_STATE_DEL 任务已被删除
μC/OS-III---I笔记1---概述的更多相关文章
- uc/os iii移植到STM32F4---IAR开发环境
也许是先入为主的原因,时钟用不惯Keil环境,大多数的教程都是拿keil写的,尝试将官方的uc/os iii 移植到IAR环境. 1.首先尝试从官网上下载的官方移植的代码,编译通过,但是执行会报堆栈溢 ...
- 基于μC/OS—III的CC1120驱动程序设计
基于μC/OS—III的CC1120驱动程序设计 时间:2014-01-21 来源:电子设计工程 作者:张绍游,张贻雄,石江宏 关键字:CC1120 嵌入式操作系统 STM32F103ZE ...
- μCos-ii学习笔记1_概述
一.μCos-ii _概述 网上关于μCosii的文章多不胜数,本人学习的过程中也参考了很多人的理解和想法,看的是卢有亮老师的<嵌入式实时操作系统-μC/OS原理与实践>(第2版),同时也 ...
- ng-深度学习-课程笔记-0: 概述
课程概述 这是一个专项课程(Specialization),包含5个独立的课程,学习这门课程后做了相关的笔记记录. (1) 神经网络和深度学习 (2) 改善深层神经网络:超参数调试,正则化,优化 ( ...
- OS考研复习笔记——操作系统的定义、目标、作用和发展的主要动力
计算机系统由硬件和软件两部分组成.操作系统(OS,Operating System)是配置在计算机硬件上的第一层软件,是对硬件系统的首次补充. 硬件:计算机物理设备,即各种处理机存储器.输入/输出设备 ...
- os模块常用方法笔记
os模块是程序和系统文件之间的交互接口,可以实现对文件的创建.删除等功能,以下对os模块的功能做一个笔记,方便以后学习和查找. import os os.getcwd() #获取当前工作目录,即当前p ...
- HTTP权威指南笔记-1.概述
1.1 通讯 Web内容是存储在服务器上的,Web服务所使用的是HTTP协议,所以经常称为HTTP服务器.通讯过程为客户端(正常我们所使用的)发出请求,服务端根据客户端的HTTP请求响应相应数据,这就 ...
- XML学习笔记1——概述
我对于XML是很不够重视的,认识也是非常肤浅的,因为在之前的Web经验中,基本上都可以使用JSON来代替XML,JSON网络流量少,解析快,JS支持好等这些特点让我对自己的观点坚信不疑.然而我渐渐地改 ...
- 以太坊区块链Java(EthereumJ)学习笔记:概述
本系列文章介绍以太坊区块链基于Java语言的解决方案.通过介绍EthereumJ定义的主要模块和Class,希望为大家学习和使用EthereumJ提供一些帮助. 整体架构 以太坊的Java解决方案主要 ...
- STM32F40G-EVAL_UC/OS III
micrum官网下载uc/os程序包: 包含文件cotex_M4.h:
随机推荐
- ryu安装
$ python3 -V Python 3.7.2 $ git clone https://github.com/faucetsdn/ryu.git $ cd ryu $ sudo pip3 inst ...
- Failed to start ssh.service: Unit not found.
Failed to start ssh.service: Unit not found. 报错内容: [Centos7@localhost ~]$ service ssh start Redirect ...
- Serverless对研发效能的变革和创新 云托管和Serverless应用差异
https://mp.weixin.qq.com/s/J4RXtKanh3IMr4fY7t0nyQ Serverless对研发效能的变革和创新 杨皓然(不瞋) 阿里巴巴中间件 2020-10-23
- https://stackoverflow.com/questions/3232943/update-value-of-a-nested-dictionary-of-varying-depth
https://stackoverflow.com/questions/3232943/update-value-of-a-nested-dictionary-of-varying-depth p.p ...
- 使用Linux服务器来通过网络安装和激活Windows 7 —— 一些基本原理
使用Linux服务器来通过网络安装和激活Windows 7 -- 一些基本原理 https://www.pufengdu.org/blog/?p=372
- (转载)微软数据挖掘算法:Microsoft 神经网络分析算法(10)
前言 有段时间没有进行我们的微软数据挖掘算法系列了,最近手头有点忙,鉴于上一篇的神经网络分析算法原理篇后,本篇将是一个实操篇,当然前面我们总结了其它的微软一系列算法,为了方便大家阅读,我特地整理了一篇 ...
- super 多重继承 super() function with multilevel inheritance
Python | super() function with multilevel inheritance - GeeksforGeeks https://www.geeksforgeeks.org/ ...
- [Python]编码声明:是coding:utf-8还是coding=utf-8呢
PEP 263 -- Defining Python Source Code Encodings | Python.org https://www.python.org/dev/peps/pep-02 ...
- SO_REUSEPORT 使用
https://www.cnblogs.com/Anker/p/7076537.html
- Prometheus-process exporter-进程监控
Prometheus-process exporter-进程监控 1.下载安装 2.修改配置文件 3.启动 相关内容原文地址: 博客园:落烨无痕:process exporter 配置项解释 huan ...