https://www.bilibili.com/video/BV1rt411u7bv?p=21
uCOS早有耳闻,第一次看相关视频。
能看到C源码在STM32上运行,对操作系统的理解就能更深入一点
1 前言
1 如何学习本书:从零开始写内核,学会应用内核
2 为什么要学习RTOS:项目复杂,需要;学习需要
3 初识uCOS:安全验证最多、商业化成功、历史悠久
2 新建工程--软件仿真
1 新建本地工程文件夹:文件夹作用
2 使用KEIL新建工程:步骤演示、新建文件组、添加文件
3 调试配置:软件仿真、时钟配置、头文件路径
3 裸机系统与多任务系统
1 裸机系统:轮询系统--初始化、死循环;前后台系统--有中断的轮询系统、前台中断、后台main
2 多任务系统:中断实现事件响应;任务实现事件处理;任务有优先级
轮询 前后台 多任务 表格对比
4 任务的定义与任务切换的实现
1 本章目标:2个变量翻转延时--裸机与操作系统的区别
2 什么是任务:多任务=多线程;
3 创建任务:操作系统需要定义多个任务栈、代码编写;任务函数代码编写;任务控制块TCB、代码编写、任务栈指针+任务栈大小;任务创建函数
4 OS系统初始化
5 启动任务
6 任务切换
7 试验
5 任务的定义与任务切换的实现1
1 本章目标:
2 什么是任务:
3 创建任务:任务创建函数--形参、任务栈初始化;创建2个任务;将任务插入就绪列表
4 OS系统初始化:全局变量初始化、就绪列表初始化
5 启动任务:启动系统、启动任务
6 任务切换:汇编
7 试验
6 任务的定义与任务切换的实现2
1 本章目标:
2 什么是任务:
3 创建任务:
4 OS系统初始化:
5 启动任务:
6 任务切换:汇编代码讲解--很重要、保存上文、切换下文、R4-R11手动操作、R0-R3 R12 R14 R15自动加载;
7 试验:Logic Analyzer看波形
7 任务时间片运行
1 SysTick简介:时基驱动;递减内核定时器,为0中断;CTRL LOAD VAL COUNTFLAG RELOAD寄存器
2 初始化SysTick:几行配置代码
3 编写SysTick中断服务函数:产生PendSV,切换任务
4 main函数:加入SysTick相关代码
5 实验现象:分时复用
8 阻塞延时与空闲任务
1 实现空闲任务:os_cfg_app.c配置空闲任务栈、os.h定义空闲任务TCB、空闲任务函数死循环、空闲任务初始化
2 实现阻塞延时:任务块加入任务延时周期个数;编写任务调度代码--寻找阻塞延时时间到的任务执行
3 main函数:将for延时改为阻塞延时--设置任务控制块的延时时间(定时中断时自减)
4 实验现象:相当于2个线程同步运行,脉冲间隔6us以内
9 时间戳
1 简介:内核 数据观察点与跟踪DWT外设、时间点、32位内核时钟计数器 约60s
2 实现:CPU_Init包含初始化时间戳--DEMCR第24位写1使能DWT、清零CYCCNT、DWT_CTRL第0位写1使能CYCCNT
3 代码讲解:获取时钟、获取计数器值
4 main:初始化时间戳、读取2次时间戳
5 实验现象:软件模拟无法实现
18 移植uCOS III到STM32
1 获取STM32的裸机工程模板:使用配套固件库例程
2 下载uCOS III源码:micrium.com/Download/STMicroelectronics STM32F107
3 源码文件介绍:EvalBoards/uCOS III 源码复制、BSP;uC-CPU文件夹拷贝、硬件接口;uC-LIB拷贝;uCOS-III 核心代码、文件功能介绍
4 移植到STM32工程:
5 按需配置最适工程
6 修改app.c
19 移植uCOS III到STM32 1
1 获取STM32的裸机工程模板:
2 下载uCOS III源码:
3 源码文件介绍:
4 移植到STM32工程:工程文件分组、添加之前复制的文件、添加头文件路径、修改代码、编译成功
5 按需配置最适工程:os_cfg.h操作系统各项功能(之前视频各个章节)配置;cup_cfg.h时间戳、统计信息;os_cfg_app.h任务配置 基本不改--消息个数、任务栈大小、时钟节拍
6 修改app.c:空函数main