UCOS
UCOS学习记录
Shijia Yin
这个作者很懒,什么都没留下…
展开
-
UCOSIII中系统时钟的移植
文章目录序言CM3滴答定时器介绍将滴答定时器用作UCOSIII的系统时钟序言FreeRTOS的代码写得真的像是一坨坨的shit,我一点看的欲望都没有。相比之下,UCOSIII的代码写得就好看多了,我看着看着就看回了UCOSIII,今天我重点看了移植部分与滴答定时器有关的内容,下面我就来表达一下我是如何理解这个部分内容的,本篇文章主要分为如下两个部分CM3的滴答定时器介绍将滴答定时器用作...原创 2019-11-12 19:18:32 · 621 阅读 · 0 评论 -
UCOSIII中上下文切换的汇编分析
文章目录序言CM3内核介绍上下文切换源码分析序言前天学习FreeRTOS,想着通过对比着UCOSIII来理解,会更容易一点,在这对比的过程中,发现自己对UCOSIII还不是很熟悉,不仅如此,对CM3内核也不是很熟悉(学操作系统竟然不熟悉芯片内核,真是有点搞笑)。因此我打算重新复习一下UCOSIII,但又不能像刚开始学习UCOSIII那样从头撸起,于是我把UCOSIII的文件理了一下,我打算先...原创 2019-11-11 20:53:28 · 610 阅读 · 1 评论 -
UCOSIII中的节拍列表更新
文章目录序言源码解释总结序言上一篇博客中我介绍到,单片机使用一个与内核绑定的定时器产生固定频率的中断,这个中断所对应的ISR会调用OSTimeTick(),OSTimeTick()会使用OS_IntQPost来向一个IntQ队列中放一个Post过程信息,之后让OS_IntQTask就绪,来向OS_TickTask发送信号量,OS_TickTask收到这个信号量之后就会调用OS_TickLis...原创 2019-10-19 20:01:11 · 308 阅读 · 0 评论 -
UCOSIII中延迟Post的理解
文章目录序言打开OS_IntQPostOS_IntQTask总结序言今天我们一起来看看延迟Post的具体实现机制,我会按照我的学习过程来介绍。打开OS_IntQPost函数参数的理解,可以看源码注释,说得很清楚了,我这里主要介绍一些我的疑惑void OS_IntQPost (OS_OBJ_TYPE type, void *p_...原创 2019-10-18 13:01:56 · 539 阅读 · 0 评论 -
UCOSIII中的时基系统
吾日三省吾身:为人谋而不忠乎?与朋友交而不信乎?传不习乎?文章目录序言曾经的理解在CM3中这个定时器是怎样的中断服务函数是怎样的序言UCOSIII中有一个模块可以向我们提供系统运行时的各种统计信息,这极大地方便我们实现系统的白盒管理,但是我觉得只会把那几个统计参数打出来看根本不叫白盒管理,我们应当清楚地知道每一个参数值是怎么被统计出来的。今天我就CPU运行速率这个统计参数进行了白盒探究,...原创 2019-10-17 22:29:32 · 722 阅读 · 0 评论 -
为什么不能在ISR中进行任务切换
每日三省吾身:未来思否,身体健否,虚荣去否在学习UCOSIII的时候时常遇到下面的一段代码,能看懂,它的意思就是不允许在中断中进行任务调度,但是就是不知道为什么要这样设置,今天仔细想了一下,同时上网搜了一下,得到答案:如果我们在中断中切换到别的地方去执行,由于ISR并没有向操作系统内核报道(也就是并没有属于自己的控制块被加到受OS内核控制的任务就续表中),所以当切换到别的任务中去了以后,当前...原创 2019-10-15 19:41:49 · 495 阅读 · 0 评论 -
STM32F103启动文件解析
文章目录序言启动文件概述开辟堆栈区定义中断向量表编写启动函数定义默认中断函数堆栈初始化序言上篇文章MDK链接脚本解析中我介绍了程序在汇编完成后是如何最终形成镜像文件的,以及镜像文件在FLASH中的存储状态、加载状态、运行状态。今天我们就要进入更深入,更细节,更具体的源码分析阶段,首先从启动文件开始。注:手边最好有一本ARM汇编手册,查指令方便点,这是我用的汇编手册ARM汇编手册 百度盘密码...原创 2019-09-27 13:11:04 · 1318 阅读 · 0 评论 -
MDK链接脚本解析
文章目录序言一些基本概念的建立链接脚本的作用具体链接脚本分析序言我的上一篇文章程序是在FLASH中运行中介绍了单片机中的一种奇特现象:程序不需要加载到SRAM中,而是可以直接在FLASH中运行。在我们知道了这件事情之后,我们趁热打铁,继续探讨程序在FLASH中的静态布局与运行时动态布局。链接脚本文件对这两种布局有着重要影响。我们下面的主要探究对象就是这个链接脚本文件。一些基本概念的建立段...原创 2019-09-26 21:05:57 · 1895 阅读 · 0 评论 -
单片机中的代码是运行在FLASH中还是RAM中
文章目录序言CM3存储器映射STM32中的闪存调试时候的现象现象解释序言马上就要国庆了,今年是2019年,又是十年一次的大阅兵。时间过得真快,仿佛上次大阅兵还是昨天,原来十年是如此短暂。最近工作也确定了,估计以后就干工控嵌入式了,感谢这么多年来父母、祖国、老师、以及身边所有陪伴我一路走来的朋友们。今天早上,我和往常一样打开电脑,开始看代码,我准备好好研究一下CM3的内核架构,在看完它的整体架...原创 2019-09-26 13:15:21 · 3023 阅读 · 1 评论 -
thumb-2如何判断指令宽度
thumb2指令同时支持16位和32位,判断方式如下:Bit[15:11]0b111010b111100b11111如果指令的15到11位是如上三种值的话就是32位,相邻两个半字组成一条指令,否则就是16位。...转载 2019-09-26 08:13:45 · 587 阅读 · 0 评论 -
5个层级带你看清一颗芯片的内部结构
在我们阐明半导体芯片之前,我们先应该了解两点。其一半导体是什么,其二芯片是什么。半导体半导体( semiconductor),指常温下导电性能介于绝缘体(insulator)与导体(conductor)之间的材料。人们通常把导电性差的材料,如煤、人工晶体、琥珀、陶瓷等称为绝缘体。而把导电性比较好的金属如金、银、铜、铁、锡、铝等称为导体。与导体和绝缘体相比,半导体材料的发现是最晚的,直到20世纪...转载 2019-09-25 22:57:32 · 10915 阅读 · 0 评论 -
UCOSIII中的内存管理
文章目录序言UCOSIII中的存储管理是什么相关数据结构与函数OS_MEMOSMemCreateOSMemGetOSMemPut存储管理实验实验概述具体实验序言在UCOSIII中有内存管理模块,使用内存管理模块可以动态地分配和释放内存,这样可以高效的使用内存资源,本篇文章,我们将会介绍一下UCOSIII中的内存管理功能。首先我会介绍UCOSIII中的内存管理是什么,然后介绍相关的函数,最后...原创 2019-09-19 10:41:49 · 1800 阅读 · 0 评论 -
UCOSIII概述
又给自己挖了一个小坑,今天开始学习UCOS文章目录序言序言在开始这篇文章之前,我已经调查UCOS好几天了,也尝试了几种学习方法,大概浏览了好几本书,我先来说说到现在为止的学习感受吧。一开始我是跟着正点原子的教学视频边看边做,但是越看越难受,感觉自己什么也不知道,就好像一个没有任何思想的机器一样,视频让怎么做,就怎么做,而且视频里面讲得着实有点枯燥。后来我就转而去找一些源码级别的书看,...原创 2019-09-06 09:57:42 · 525 阅读 · 0 评论 -
UCOSIII的任务管理
文章目录序言序言原创 2019-09-08 11:05:54 · 304 阅读 · 0 评论 -
UCOSIII中的中断和时间管理
文章目录序言在STM32中使用外部中断中断配置编写中断函数在UCOSIII中使用中断时间管理OSTimeDly()函数OSTimeDlyHMSM()函数OSTimeDlyResume()函数序言本篇文章主要是介绍一下在UCOSIII中是如何使用的中断的,以及UCOSIII中的时间管理在STM32中使用外部中断我们先来复习一下在STM32中如何使用外部中断中断配置STM32中的中断配置...原创 2019-09-09 23:12:21 · 549 阅读 · 0 评论 -
UCOSIII中的软件定时器
文章目录序言相关函数介绍OSTmrCreate()几种定时模式介绍一次性定时模式无初始定时周期模式有初始定时周期模式核心数据结构介绍一个小实验定义定时器控制块与声明回调函数编写回调函数利用OSTmrCreate()创建定时器利用OSTmrStart()开启定时器总结序言UCOSIII为我们提供了一个十分强大的工具:软件定时器。有了它,我们便有了原生STM32定时器的替代品。下面我将会简要介绍...原创 2019-09-10 15:30:48 · 659 阅读 · 0 评论 -
UCOSIII中的互斥信号量
文章目录序言优先级反转优先级反转实验互斥信号量互斥信号量实验任务内嵌信号量任务内嵌信号量实验序言我的上一篇文章介绍了信号量的基础知识并利用这些基础知识进行了一个小实验以此来增进对信号量这个概念的感性认识。下面我们要介绍一种特殊得信号量:互斥信号量在介绍互斥信号量之前,我们先来谈谈一种现象:优先级反转。优先级反转在可剥夺型内核中是比较常见的,在实时系统中不允许出现这种现象,因为这样会破坏任务...原创 2019-09-14 11:13:41 · 331 阅读 · 0 评论 -
UCOSIII中的消息传递
文章目录序言什么是消息队列消息队列相关函数OSQCreate()OSQPend()OSQPost()消息队列实验总结序言前面我们介绍了信号量,通过信号量我们能够解决优先级反转,资源共享冲突等问题,但是我们不难发现,信号量无法携带具体的数据信息。消息队列就是这样一种具体数据信息传递的有效工具。本篇文章的主题也就是消息队列。本篇文章的结构大概是这样的,我先介绍一下什么是消息队列,然后介绍消息队...原创 2019-09-15 19:42:40 · 1468 阅读 · 0 评论 -
UCOSIII中的事件标志组
文章目录序言什么是事件标志组相关函数创建事件标志组OSFlagCreateOSFlagPost事件标志组实验实验概述实验代码序言前面,我们了解到可以使用信号量来完成任务同步,这里我们再讲解一下另一种任务同步的方法:事件标志组。再本篇文章中,我会首先介绍一下什么是是事件标志组,它是一种什么样的实现思想,然后我会介绍相关的API,最后会有一个小实验。什么是事件标志组有时候一个任务可能需要和...原创 2019-09-18 16:42:45 · 733 阅读 · 0 评论 -
UCOSIII中同时等待多个内核对象
文章目录序言什么是同时等待多个内核对象相关函数OSPendMulti同时等待多个内核对象实验实验概述具体实验序言在前面的几篇博客中我介绍了任务如何等待单个对象,比如信号量、互斥信号量、消息队列和时间标志组。本篇文章我们就继续学习UCOSIII中的是如何同时等待多个内核对象的,在UCOSIII中只支持同时等待多个信号量和消息队列,不支持同时等待多个事件标志组和互斥信号量。首先我会介绍什么是同...原创 2019-09-18 20:03:56 · 447 阅读 · 0 评论 -
UCOSIII中的信号量
文章目录序言原理介绍二值信号量计数型信号量相关函数介绍OSSemCreateOSSemDelOSSemPendOSSemPendAbortOSSemPostOSSemSet实验案例介绍直接访问共享资源区使用信号量访问共享资源区总结序言本篇文章的主题是信号量和互斥信号量,学过操作系统原理的人对信号量这个词应该是不陌生的。在一个多任务系统中,有可能会有多个任务同时想要访问某个资源,如果允许这种行...原创 2019-09-12 20:51:13 · 1401 阅读 · 0 评论