UCOSIII章节介绍

UCOSIII章节介绍

  • 一、第一部分(第一章 至 第三十二章)
    • 1、整体介绍
    • 2、单章介绍
      • 第一章 至 第三章:总体概览
      • 第四章 至 第五章:准备工作,配置KEIL工程环境
      • 第六章:准备工作,KEIL仿真介绍
      • 第七章:准备工作,源代码各文件功能
      • 第八章:C++函数指针
      • 第九章 至 第十四章:内核各功能学习
      • 第十五章:前十五章总结:任务切换 PendSV异常
      • 第十六章 至 第二十六章:内核各功能学习
      • 第二十七章:对第二十三章 至 二十六章总结:使用优先级的流程
      • 第二十八章:内核各功能学习
      • 第二十九章:对第二十八章总结:基于时基列表的时延操作
      • 第三十章 至 第三十二章:内核各功能学习
  • 二、第二部分(第三十三章 至 第六十章)
    • 1、整体介绍
    • 2、单章介绍
      • 第三十三章:准备工作,下载UCOSIII源码
      • 第三十四章:准备工作,配置KEIL环境
      • 第三十五章:创建任务:LED红绿蓝切换
      • 第三十六章:内核各应用学习
      • 第三十七章:对第三十六章总结:系统启动流程总结
      • 第三十八章:总结,对任务状态的总结
      • 第三十九章:内核各应用学习
      • 第四十章:总结,对任务的总结
      • 第四十一章 至 第六十章:内核各应用学习
  • 三、第三部分
    • 1、整体介绍
    • 2、单章介绍
      • 第六十一章:各文件夹功能介绍
      • 第六十二章:各文件功能概览
      • 第六十三章 至 第六十七章:User文件夹函数概览
      • 第六十八章 至 第六十七章:常用的结构体(os.h文件)

在嵌入式的学习中,对于较高性能的MCU,不可缺少的一环就是挑选操作系统。
操作系统分为硬实时系统与软实时系统,硬实时系统的代表之一就是μC/OS-III,为了方便命名文件,经常写作UCOSIII

本系列就是针对UCOSIII系统的学习,从配置Keil到移植代码,从内核的讲解到整个系统的功能分析,循序渐进地掌握UCOSIII源码,主要参考野火的UCOSIII的教程。

一、第一部分(第一章 至 第三十二章)

1、整体介绍

第一部分以μC/OS-III为蓝本,针对UCOSIII内核,将内核主要结构从0开始编写。

这一部分着重讲解μC/OS-III实现的过程, 当学完这部分之后,再来重新使用μC/OS-III或者其他RTOS,将会得心应手,做到举一反三。
在源码实现的过程中,涉及的数据类型、变量名称、函数名称、文件名称以及文件的存放目录都会完全按照μC/OS-III的来实现, 一些不必要的代码将会被剔除,但并不会影响理解整个操作系统的功能。

本部分几乎每一章都是前一章的基础,环环相扣。随着每一章的学习,一个内核的模型就会在脑中形成,每一个运行的细节都会在脑中展现。碰到的问题哪怕无法解决,也会在直觉中锁定出现的原因。

2、单章介绍

第一章 至 第三章:总体概览

第一章 至 第三章将系统最重要的三个内容粗略的概览了一下,不需要明白,之后会系统学习

第四章 至 第五章:准备工作,配置KEIL工程环境

第四章 至 第五章开始手把手新建项目,包括资源管理器新建项目 和 KEIL新建项目。

第六章:准备工作,KEIL仿真介绍

第六章 主要介绍KEIL的仿真过程,并对其中常见的错误给出了解决方案

第七章:准备工作,源代码各文件功能

第七章 详细地列举了UCOSIII各文件的作用,在后续代码编写时可以时长回头来看

第八章:C++函数指针

C++指针的一个用法,在新建任务时频繁使用

第九章 至 第十四章:内核各功能学习

九、UCOSIII:创建任务
十、UCOSIII:常用汇编指令
十一、UCOSIII:OS系统初始化
十二、UCOSIII:启动系统
十三、UCOSIII:任务切换
十四、UCOSIII:main()函数

第十五章:前十五章总结:任务切换 PendSV异常

在本系列中,总结是非常重要的一个环节。在笔者觉得必要的情况下,会将一些繁复的知识点整理,从大框架的角度将步骤化繁为简,力求三两句就能让读者明白一个复杂的程序是如何运作的。

第十五章是对前十五章的总结,但其实是对第九章至第十四章程序思路的总结,涉及任务切换以及PendSV异常的实现方法。

第十六章 至 第二十六章:内核各功能学习

十六、UCOSIII:介绍SysTick
十七、UCOSIII:任务时间片运行
十八、UCOSIII:空闲任务
十九、UCOSIII:实现阻塞延时
二十、UCOSIII:修改main()函数
二十一、UCOSIII:时间戳
二十二、UCOSIII:修改main()函数
二十三、UCOSIII:临界段
二十四、UCOSIII:就绪列表
二十五、UCOSIII:多优先级
二十六、UCOSIII:修改main()函数

第二十七章:对第二十三章 至 二十六章总结:使用优先级的流程

本章是对内核中各任务优先级的设置的思路总结,以及基于优先级的任务切换 实现方法的解释。

第二十八章:内核各功能学习

二十八、UCOSIII:时基列表

第二十九章:对第二十八章总结:基于时基列表的时延操作

继就绪列表后,我们又学习了时基列表,本章就是对时基列表的使用方法进行介绍。

第三十章 至 第三十二章:内核各功能学习

三十、UCOSIII:时间片
三十一、UCOSIII:任务的挂起和恢复
三十二、UCOSIII:任务的删除




二、第二部分(第三十三章 至 第六十章)

1、整体介绍

第二部分以野火的指南者为硬件平台,来讲解μC/OS-III的内核应用。
这部分不会再深究源码的实现,着重讲解μC/OS-III各个内核对象的使用,例如任务如何创建、优先级如何分配、 内部IPC通信机制如何使用等RTOS知识点。

2、单章介绍

第三十三章:准备工作,下载UCOSIII源码

本章介绍了源码的下载方法,对源码的文件架构进行了解释,并对常用文件进行了介绍。
建议配合第七章一起学习

第三十四章:准备工作,配置KEIL环境

本章针对指南者硬件环境 对源码进行了一些修改和替换。

第三十五章:创建任务:LED红绿蓝切换

本章主要是对第三十三章至第三十四章的一次验证,如果源码KEIL环境配置没有问题,LED就会正常闪烁。

第三十六章:内核各应用学习

三十六、UCOSIII:系统启动流程详解

第三十七章:对第三十六章总结:系统启动流程总结

本章是对系统启动流程理解明白之后,由复杂的代码总结出的简略版本。

第三十八章:总结,对任务状态的总结

经过之前的学习,我们对于任务这个概念已经相当了解了,本章就是对之前涉及的以及之后即将学习的任务状态进行一次系统的介绍,同时介绍各种状态之间的变化。

第三十九章:内核各应用学习

三十九、UCOSIII:常见任务管理函数

第四十章:总结,对任务的总结

本章是从设计者的角度来思考如何去设计一个任务,并顺便介绍了一下空闲任务。

第四十一章 至 第六十章:内核各应用学习

四十一、UCOSIII:消息队列
四十二、UCOSIII:消息队列常用函数
四十三、UCOSIII:消息队列实验
四十四、UCOSIII:信号量
四十五、UCOSIII:信号量函数接口讲解
四十六、UCOSIII:计数信号量实验
四十七、UCOSIII:互斥量
四十八、UCOSIII:互斥量函数接口讲解
四十九、UCOSIII:互斥量实验
五十、UCOSIII:事件
五十一、UCOSIII:事件函数接口
五十二、UCOSIII:事件实验
五十三、UCOSIII:软件定时器
五十四、UCOSIII:软件定时器函数接口讲解
五十五、UCOSIII:软件定时器实验
五十六、UCOSIII:任务信号量
五十七、UCOSIII:任务消息队列
五十八、UCOSIII:内存管理
五十九、UCOSIII:中断管理
六十、UCOSIII:CPU利用率及栈检测统计

三、第三部分

1、整体介绍

之前的章节都是针对某个或某些知识点进行的专项讲解,重点在功能和代码解释。

回到最初开始学μC/OS-III系统时,当时就定下了一个目标,不仅要读懂,还要读透,改造成更适合中国宝宝体质的使用方式。在学完野火的教程后,经过几经思考,最后决定自己锦上添花,再续上几章。
这几章想达成目的如下:

  • 能够快速的上手
  • 能够控制系统的功能
  • 明白移植的过程
  • 能够根据需要的功能来裁剪源码

接下来的章节都是熟读源码后,根据笔者的整理方法,按照某种逻辑从系统源码中抽出来的专项解释。
笔者整理方法如下

  1. 各文件夹功能介绍(每个文件夹放什么文件,哪些是移植的,哪些不需要改,哪些需要修改)
  2. 各文件功能概览(每个文件都明白有哪些东西,是系统的哪一部分)
  3. 各文件函数概览(每个文件的有什么函数,函数的作用是什么,形参是什么)
  4. 移植的本质与移植的顺序(哪些文件需要了解,哪些文件是移植的时候需要更换的)
  5. 添加与裁剪源码(添功能与删功能怎么上手)
  6. 常用的结构体列表
  7. 常用宏介绍(如何用宏来控制整个系统,启用或关闭某个功能)
  8. main函数常用的结构顺序
  9. 创建任务的流程
  10. 任务在几种队列的变化

每个整理方法会用一章或多章的篇幅来解释。

2、单章介绍

第六十一章:各文件夹功能介绍

对μC/OS-iii源码中各文件夹进行介绍

第六十二章:各文件功能概览

对μC/OS-iii源码中各文件的作用进行介绍,并指出什么类型的代码会存在什么样的文件夹

第六十三章 至 第六十七章:User文件夹函数概览

详细的介绍User文件夹中所有碰到的函数,并指出如何使用它们。

第六十八章 至 第六十七章:常用的结构体(os.h文件)

详细的介绍使用内核功能时,所有常用的结构体,并给出结构体的示意图。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/582203.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

指导网友完成一起Linux服务器系统文件删除导致不能启动情况下的数据恢复案例

昨日有网友在微信群发起救助,Linux系统不能启动,使用救援U盘也无法恢复,协助他进行了数据恢复,本文记录了处置过程。 图片为网友提供,照得歪歪扭扭的,将就着看看吧。 一、问题现象 1、报错信息 Linux服…

335GB,台北地区倾斜摄影OSGB数据V0.2版介绍!

前几天发布了台北地区倾斜摄影OSGB数据第一个版本(139GB,台北倾斜摄影OSGB数据V0.1版),虽然数据还是一个半成品,完全没想到热度很高,很多读者对这份数据都有比较浓厚的兴趣,在这里首先感谢各位读者的大力支持与鼓励,给了我持续更新…

Discuz! X系列版本安装包

源码下载地址:Discuz! X系列版本安装包 很多新老站长跟我说要找Discuz! X以前的版本安装包,我们做Discuz! X开发已经十几年了,这些都是官方原版安装包,方便大家使用(在官网已经找不到这些版本的安装包了) …

NLP发展及其详解

一、RNN(循环神经网络) 在这里附上一个很好的笔记 零基础入门深度学习(5) - 循环神经网络 RNN(循环神经网络)的结构特点在于其循环单元的设计,这种设计允许网络在处理序列数据时保持对之前信息的记忆。下面详细解释RNN的结构: 循环单元:RNN的循环单元是网络的核心,它…

4.Docker本地镜像发布至阿里云仓库、私有仓库、DockerHub

文章目录 0、镜像的生成方法1、本地镜像发布到阿里云仓库2、本地镜像发布到私有仓库3、本地镜像发布到Docker Hub仓库 Docker仓库是集中存放镜像的地方,分为公共仓库和私有仓库。 注册服务器是存放仓库的具体服务器,一个注册服务器上可以有多个仓库&…

Shell脚本入门:编写自动化任务的利器

一、Shell概述 Shell最早产生于20世纪70年代早期的Unix操作系统中。作为一种命令解释器,它位于操作系统的最外层,负责直接与用户进行交互。Shell把用户的输入解释给操作系统,并处理操作系统的输出结果,然后将其反馈给用户。这种交…

你不需要总是在 React 中使用 useState

在我审查的一个拉取请求中,我注意到在许多拉取请求中看到的一种模式。React 组件具有多个 UI 状态,例如 loading、error 和 success。 作者使用了多个 useState 钩子来管理这些状态,这导致代码难以阅读且容易出错,例如&#xff1a…

java案例-读取xml文件

需求 导入依赖 <dependencies><!-- dom4j --><dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version></dependency> </dependencies>代码 SAXReader saxReade…

九_进程关系1+1-终端设备

在Linux操作系统中&#xff0c;/dev/tty、/dev/tty0和/dev/console是三个特殊的设备文件&#xff0c;它们在终端控制和输入/输出过程中扮演着重要的角色。尽管它们看起来很相似&#xff0c;但实际上它们之间存在一些重要的区别。本文将详细介绍这三个设备文件之间的区别以及它们…

支付宝沙盒(java使用支付宝)springboot

目录 前言 注册账号&#xff08;直接搜索支付宝沙盒&#xff09; ​编辑 具体代码编写 Application配置(按自己需求添加) config&#xff08;这里需要亲自添加appid&#xff0c;privateKey&#xff0c;publicKey&#xff09; controller类 Service类 ServiceImpl类 运…

编写你的第一个 golang 的应用程序

进行你的第一个golang的程序 当你把程序都安装好以后 环境变量配置 好 vscode 插件下载好以后 1. 创建一个test.go 的文件 //主包&#xff0c;可执行文件所在包 package main//导入包 import "fmt"//主函数&#xff0c;入口函数 func main() { }2.解释 需要导入包 …

前端入门:HTML(css轮廓,填充,宽高)

1.CSS轮廓 注意&#xff1a; outline中&#xff0c;out-style是必须要设置的&#xff0c;格式为&#xff1a; outline-style一共有以下的几个值&#xff1a; 2.CSS填充属性 这是一个用于在一个元素的内容周围产生空间&#xff0c;也就是边框内到白框外之间的距离&#xff0c;…

FPlan Part1 EP1(MySQL)

今天完成了MySQL的第一部分&#xff0c;计划分为三部分&#xff0c;预计将在五一假期前完成&#xff0c;以及一个Java小游戏。 重点如下

【MySQL 所遇问题】

【MySQL 所遇问题】 总结&#xff1a;Error Code: 1064.You have an error in your SQL syntax报错解释1&#xff1a;报错解释2处理过程 Error Code&#xff1a;1366 - Incorrect string value:报错解释处理过程 总结&#xff1a; Error Code: 1064 不可见字符。 某些文本处理…

java8 Stream流常用方法(持续更新中...)

java8 Stream流常用方法 1.过滤数据中年龄大于等于十八的学生2.获取对象中其中的一个字段并添加到集合(以学生姓名&#xff08;name&#xff09;为例)3.获取对象中其中的一个字段并转为其他数据类型最后添加到集合(以学生性别&#xff08;sex&#xff09;为例&#xff0c;将Str…

解析链动2+1模式:探寻电商新商业契机

大家好&#xff0c;我是微三云周丽 在当今数字化时代&#xff0c;电商行业日新月异&#xff0c;不断涌现出各种创新商业模式。其中&#xff0c;链动2121模式以其独特的商业逻辑和快速裂变的特性&#xff0c;吸引了众多用户和企业家的关注。本文将深入剖析链动2121模式的运作机…

在 Windows 系统上安装 TeamViewer 13

在 Windows 系统上安装 TeamViewer 13 References 默认安装到所有用户 同意协议 安装目录 勾选内容 打开文件位置 打开 rClientID.exe Extras -> Options -> Advanced Show advanced options -> Display language 重新启动TeamViewer 语言可修改为中文简体 …

快团团同城落地配怎么一键开团?免费配送设置教程!

1&#xff09;点击快团团小程序底部的【一键开团】找到【物流方式】 2&#xff09;选择物流方式为【顾客自提】后&#xff0c;点击【设置自提点】 3&#xff09;选择自提点 4&#xff09;可勾选已设置的自提点&#xff0c;或是点击【添加自提点】 5&#xff09;设置好自提点…

自制贪吃蛇小游戏

此片文章涉及到到控制台设置的相关操作&#xff0c;虚拟键码&#xff0c;宽字符输出等&#xff0c;有些地方大家可能会看不懂&#xff0c;可以阅读以下文章来进一步了解&#xff1a; 控制台程序设置-CSDN博客 效果展示&#xff1a; QQ2024428-181932 源码已放在文章结尾 目录 …

【while循环】

目录 什么是循环 while语句的执行过程 编程求1*2*3*...*n 所有不超过1000的数中含有数字3的自然数 求数 求数II 编程求1平方2平方...n平方 什么是循环 循环就是重复做同样的事儿使用while语句循环输出1到100 int i 1; while( i < 100 ){cout <<…
最新文章