COSIII.html" title=UCOSIII>UCOSIII章节介绍
- 一、第一部分(第一章 至 第三十二章)
- 二、第二部分(第三十三章 至 第六十章)
- 三、第三部分
- 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系统时,当时就定下了一个目标,不仅要读懂,还要读透,改造成更适合中国宝宝体质的使用方式。在学完野火的教程后,经过几经思考,最后决定自己锦上添花,再续上几章。
这几章想达成目的如下:
- 能够快速的上手
- 能够控制系统的功能
- 明白移植的过程
- 能够根据需要的功能来裁剪源码
接下来的章节都是熟读源码后,根据笔者的整理方法,按照某种逻辑从系统源码中抽出来的专项解释。
笔者整理方法如下
- 各文件夹功能介绍(每个文件夹放什么文件,哪些是移植的,哪些不需要改,哪些需要修改)
- 各文件功能概览(每个文件都明白有哪些东西,是系统的哪一部分)
- 各文件函数概览(每个文件的有什么函数,函数的作用是什么,形参是什么)
- 移植的本质与移植的顺序(哪些文件需要了解,哪些文件是移植的时候需要更换的)
- 添加与裁剪源码(添功能与删功能怎么上手)
- 常用的结构体列表
- 常用宏介绍(如何用宏来控制整个系统,启用或关闭某个功能)
- main函数常用的结构顺序
- 创建任务的流程
- 任务在几种队列的变化
每个整理方法会用一章或多章的篇幅来解释。
2、单章介绍
第六十一章:各文件夹功能介绍
对μC/OS-iii源码中各文件夹进行介绍
第六十二章:各文件功能概览
对μC/OS-iii源码中各文件的作用进行介绍,并指出什么类型的代码会存在什么样的文件夹
第六十三章 至 第六十七章:User文件夹函数概览
详细的介绍User文件夹中所有碰到的函数,并指出如何使用它们。
第六十八章 至 第六十七章:常用的结构体(os.h文件)
详细的介绍使用内核功能时,所有常用的结构体,并给出结构体的示意图。