
嵌入式实时操作系统
实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,调度一切可利用的资源完成实时任务,并控制所有实时任务协调一致运行的操作系统。提供及时响应和高可靠性是其主要特点
与光同程
如果想拥有从未有过的东西,就去做你从未做过的事
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【UCOSii源码解析】任务间通讯与同步
文章目录(一)信号量1、建立一个信号量2、等待一个信号量3、发出一个信号量4、使用示例没有使用信号量:使用信号量关于优先级反转(二)消息队列1、建立一个消息队列2、等待消息3、发送消息4、使用示例(三)总结(一)信号量µC/OS-II中的信号量由两部分组成:一个是信号量的计数值,它是一个16位的无符号整数(0 到65,535之间);另一个是由等待该信号量的任务组成的等待任务表。用户要在OS_CFG.H中将OS_SEM_EN开关量常数置成1,这样µC/OS-II才能支持信号量。在使用一个信号量之前,首.原创 2020-10-19 20:15:30 · 625 阅读 · 0 评论 -
【UCOSii源码解析】内存管理
文章目录(一)内存管理算法所以说UCOS中的内存管理算法与标准C中有啥区别嘞1、函数原型及说明:2、 C语言malloc算法产生内存碎片的原因3 、核心变量(二)内存控制块(三)源码分析内存管理初始化函数创建内存分区申请内存释放内存(四)程序示例:等待从一个内存分区中分配内存块(五)基于查表法实现的动态内存管理(一)内存管理算法在ANSI C中可以用malloc()和free()两个函数动态地分配内存和释放内存。但是,在嵌入式实时操作系统中,多次这样做会把原来很大的一块连续内存区域,逐渐地分割成许多非常原创 2020-10-19 18:14:47 · 1802 阅读 · 0 评论 -
【UCOSii源码解析】事件控制块
文章目录(一)事件控制块(二)事件控制块的工作模式将一个任务插入一个事件的等待队列中将一个任务从任务链表中删除在等待任务列表中查找最高优先级的任务(三)任务控制块的产生初始化一个事件控制块,OSEventWaitListInit()使一个任务进入就绪态使一个任务进入等待状态(一)事件控制块这个任务控制块指向的任务,用的是位图的数据结构,并非是链表。typedef struct os_event { INT8U OSEventType; /*事件类型原创 2020-10-19 15:41:06 · 1411 阅读 · 0 评论 -
【UCOSii源码解析】时间管理
文章目录(一)UCOS计时系统(一)UCOS计时系统之前就已经讨论过了UCOS主要是依靠system_tick提供系统节拍。void SysTick_Handler(void){ if(delay_osrunning==1) //OS开始跑了,才执行正常的调度处理 { OSIntEnter(); //进入中断 OSTimeTick(); //调用ucos的时钟服务程序 OSIntExit();原创 2020-10-19 14:58:12 · 1024 阅读 · 0 评论 -
【TencentOS】内存管理
三)内存管理腾讯为我们提供了内存管理API动态内存管理模块,提供了一套动态管理系统内存的机制,支持用户动态的申请、释放不定长内存块。堆内存管理tos_mmheap_pool_addk_err_t tos_mmheap_pool_add(void *pool_start, size_t pool_size);• 功能描述向堆内存中添加内存池。• 参数解释IN/OUT 参数名 描述...原创 2019-09-20 18:40:24 · 540 阅读 · 0 评论 -
【TencentOS】事件
3)事件概述事件提供了一种任务间实现同步和信息传递的机制。一般来说,一个事件中包含了一个旗标,这个旗标的每一位表示一个“事件”。一个任务可以等待一个或者多个“事件”的发生,其他任务在一定的业务条件下可以通过写入特定“事件”唤醒等待此“事件”的任务,实现一种类似信号的编程范式事件eventtos_event_createk_err_t tos_event_create(k_event_t...原创 2019-09-20 18:37:47 · 517 阅读 · 0 评论 -
【TencentOS】信号量
2)信号量信号量是一种实现任务间同步的机制,一般用于多个任务间有限资源竞争访问。通常来说,一个信号量中持有一个整形数值,用以表示可用资源的数量。当一个信号量的可用资源数量大于0时,任务尝试获取该信号量成功,信号量的可用资源数减一;当一个信号量的可用资源数等于0时,任务尝试获取该信号量失败或进入阻塞状态。信号量的这一模式,当可用资源数为1时,可将其用于资源的互斥访问;或者解决生产者-消费者问题中...原创 2019-09-20 18:34:05 · 452 阅读 · 0 评论 -
【TencentOS】互斥量
(二)任务间通信1) 互斥量互斥量又称互斥锁,一般用于共享资源的互斥排他性访问保护。互斥量在任意时刻处于且仅会处于解锁或锁定状态,当一个任务获取到一把锁后(互斥量锁定),其他任务再尝试获得这把锁时会失败或进入阻塞状态,当该任务释放持有的锁时(互斥量解锁),会唤醒一个正阻塞等待此互斥量的任务,被唤醒的任务将会获取这把锁。在多任务运行环境中,有些共享资源不具有多线程可重入性,对于这类不希望被多...原创 2019-09-20 18:28:14 · 408 阅读 · 0 评论 -
【TencentOS】任务管理
(一) 任务管理TencentOS tiny内核是单地址空间的可抢占式实时内核,TencentOS tiny内核不提供进程模型,任务对应线程的概念,是最小的调度运行体,也是最小的资源持有单位。任务的本质是一个拥有独立栈空间的可调度运行实体,用户可以在任务的入口函数中编写自己的业务逻辑;多个任务之间可以通过系统提供的任务间通信机制进行同步或者信息传递等操作;每个任务都有优先级,高优先级任务可以抢...原创 2019-09-19 21:25:40 · 1692 阅读 · 1 评论 -
【TencentOS】嵌入式RTOS的新选择
今天在浏览CSDN的推送的时候猛然发现一个消息,说是腾讯开源了新型RTOSTecentOS Tiny!!!github地址:https://github.com/Tencent/TencentOS-tiny看到这个消息自己顿时就就不淡定了,当即放下了手中所有的活,开始着手移植这个今天刚刚开源的国产RTOS。在仔细看完了一些关于TecentOS的一些介绍后,我更不淡定了,我顿时就产生了一个想...原创 2019-09-19 19:43:58 · 5627 阅读 · 1 评论 -
【UCOSii源码解析】任务管理
文章目录前言(一)重提任务(二)核心API源码分析1.建立任务,OSTaskCreate()(三)创建任务堆栈的两种方式(四)删除任务 OSTaskDel()(五)任务的挂起与恢复OS_TaskSuspend(),OSTaskResume()(六)基于STM32的任务管理实验前言在前面的两篇文章中,我重点分析了内核部分的实现以及原理,现在开始看一看外部的一些实现。本章所讲的内容包括如何在用户的应用程序中建立任务、删除任务、改变任务的优先级、挂起和恢复任务,以及获得有关任务的信息。µC/OS-Ⅱ可以原创 2020-10-13 00:43:54 · 1796 阅读 · 0 评论 -
【UCOSii源码解读】优先级算法及内核源码分析
/* * @Descripttion: * @version: * @Author: Yueyang * @email: [email protected] * @Date: 2020-09-10 13:20:54 * @LastEditors: Yueyang * @LastEditTime: 2020-09-30 02:10:26 */#include "sys.h" #include "delay.h" #include "led.h"#include "usart.h"原创 2020-10-13 00:03:30 · 1136 阅读 · 0 评论 -
【UCOSii源码解读】UCOSii启动流程以及平台相关文件分析
文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言其实在一年多以前我就已经萌生了去写一下UCOSii的源码解析的想法,但是无奈当时水平有限,就算写了恐怕也只是表面上API的应用而已,这一次我向写一些对于UCOS更深层次的理解。其实在我看来所有的RTOS都具有十分类似的框架结构,只是其中填入的算法不同而已。其中最为核心的也就是一个优先级算法,以及调度算法。一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二.原创 2020-10-12 22:38:40 · 1799 阅读 · 0 评论