UCOSIII章节介绍

ops/2024/9/24 0:24:25/

COSIII.html" title=UCOSIII>UCOSIII章节介绍

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

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

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

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

1、整体介绍

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

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

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

2、单章介绍

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

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

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

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

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

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

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

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

C_30">第八章:C++函数指针

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

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

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

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

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

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

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

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

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

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

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

二十八、COSIII.html" title=UCOSIII>UCOSIII:时基列表

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

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

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

三十、COSIII.html" title=UCOSIII>UCOSIII:时间片
三十一、COSIII.html" title=UCOSIII>UCOSIII:任务的挂起和恢复
三十二、COSIII.html" title=UCOSIII>UCOSIII:任务的删除




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

1、整体介绍

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

2、单章介绍

COSIII.html" title=UCOSIII>UCOSIII_83">第三十三章:准备工作,下载COSIII.html" title=UCOSIII>UCOSIII源码

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

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

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

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

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

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

三十六、COSIII.html" title=UCOSIII>UCOSIII:系统启动流程详解

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

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

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

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

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

三十九、COSIII.html" title=UCOSIII>UCOSIII:常见任务管理函数

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

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

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

四十一、COSIII.html" title=UCOSIII>UCOSIII:消息队列
四十二、COSIII.html" title=UCOSIII>UCOSIII:消息队列常用函数
四十三、COSIII.html" title=UCOSIII>UCOSIII:消息队列实验
四十四、COSIII.html" title=UCOSIII>UCOSIII:信号量
四十五、COSIII.html" title=UCOSIII>UCOSIII:信号量函数接口讲解
四十六、COSIII.html" title=UCOSIII>UCOSIII:计数信号量实验
四十七、COSIII.html" title=UCOSIII>UCOSIII:互斥量
四十八、COSIII.html" title=UCOSIII>UCOSIII:互斥量函数接口讲解
四十九、COSIII.html" title=UCOSIII>UCOSIII:互斥量实验
五十、COSIII.html" title=UCOSIII>UCOSIII:事件
五十一、COSIII.html" title=UCOSIII>UCOSIII:事件函数接口
五十二、COSIII.html" title=UCOSIII>UCOSIII:事件实验
五十三、COSIII.html" title=UCOSIII>UCOSIII:软件定时器
五十四、COSIII.html" title=UCOSIII>UCOSIII:软件定时器函数接口讲解
五十五、COSIII.html" title=UCOSIII>UCOSIII:软件定时器实验
五十六、COSIII.html" title=UCOSIII>UCOSIII:任务信号量
五十七、COSIII.html" title=UCOSIII>UCOSIII:任务消息队列
五十八、COSIII.html" title=UCOSIII>UCOSIII:内存管理
五十九、COSIII.html" title=UCOSIII>UCOSIII:中断管理
六十、COSIII.html" title=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.ppmy.cn/ops/22850.html

相关文章

探索洗牌算法的魅力与杨辉三角的奥秘:顺序表的实际运用

目录 目录 前言~🥳🎉🎉🎉 洗牌算法 准备工作 买一副牌 洗牌 发牌 测试整体 🎯🎯很重要的一点 杨辉三角 总结 前言~🥳🎉🎉🎉 Hello, Hello~ …

打破求职困局:定制化帮助,让毕业生远离“大水漫灌”陷阱

​ ​近年来,高校离校未就业毕业生人数的持续增加,使得做好这一群体的跟踪帮扶和不断线服务成为相关部门的工作重点之一。这一现象的出现,既受高校扩招、经济发展速度、人力资源市场需求增长放缓等客观因素影响,也与毕业生就业…

ZISUOJ 数据结构--队列及其应用

说明: 基本都是bfs的常见模板题型,思路都很直接,不过后面有两道题很搞心态,它们给的坐标x、y是反的,导致刚开始一直错。题目还是要看仔细,不能先入为主。 题目列表: 问题 A: 围圈报数(完善程序…

Spark核心名词解释与编程

Spark核心概念 名词解释 1)ClusterManager:在Standalone(上述安装的模式,也就是依托于spark集群本身)模式中即为Master(主节点),控制整个集群,监控Worker。在YARN模式中为资源管理器ResourceManager(国内…

Elasticsearch文本分析深度解析

在Elasticsearch的世界里,文本分析是数据索引和检索过程的核心环节,它决定了如何将原始文本转换为可搜索的词汇单元。这一过程不仅关乎索引的效率,更直接影响到搜索结果的相关性和准确性。本文将深入探讨Elasticsearch中的文本分析机制&#…

SpringMVC进阶(自定义拦截器以及异常处理)

文章目录 1.自定义拦截器1.基本介绍1.说明2.自定义拦截器的三个方法3.流程图 2.快速入门1.Myinterceptor01.java2.FurnHandler.java3.springDispatcherServlet-servlet.xml配置拦截器4.单元测试 3.拦截特定路径1.拦截指定路径2.通配符配置路径 4.细节说明5.多个拦截器1.执行流程…

图片转excel,免费、在线、软件,用哪个好?

在现代办公场景中,我们经常需要将一些图片中的数据或信息转化为Excel表格以便进行进一步的数据分析。虽然这个过程可能看起来有些复杂,但其实有一些简单的小窍门可以帮助我们快速高效地完成这一任务。 **一. 使用QQ免费将图片转为excel服务** 如果您的图…

什么是podman?

Podman是一个无守护程序的容器引擎,主要用于在Linux系统上管理Open Container Initiative (OCI)容器。它可以被视为Pod Manager工具的简称,并且可以直接取代Docker。Podman的主要特点包括无需守护进程、兼容Docker、支持Rootless模式以及多容器管理。 具…