freeRTOS简单学习及协程实现理解

FreeRtos内核源码分析(九)——协程 基于FreeRtos V9.0.0版本分析FreeRtos的协程,包括协程结构、管理方式、调度方式、通信机制等,其中包括原理和源码的分析 阅读详情
freeRtos是开源免费的嵌入式操作系统,其官方网址http://www.freertos.org。最近刚刚看了LiteOS的代码,所以想顺便了解下freeRtos的架构差异。从代码情况上讲,freeRtos的源代码中提供了更多和不同平台相关的代码,为了方便了解,选择基于cortexM4为基础的STM32F407的平台代码来加深了解。
freeRtos提供的功能
作为嵌入式操作系统,freeRtos提供了任务、消息队列、事件、信号量、互斥锁、软件定时器等基础功能,另外为了解决问题方便,freeRtos同样具有越界检查、trace机制、任务耗时统计等辅助功能。在freeRtos的使用手册中有对函数接口、具体事例等实际使用说明。freeRtos提供了协程co-routine。
关于系统启动
在freeRtos代码中,一般启动文件名带有startup或boot字样。在启动代码中进行中断向量服务程序初始化,对于cortexM4的中断向量0-15为内部中断,16-255位外部IRQ,在示例中除了0-15中断服务程序初始化外,外部的FLASH、DMA、I2C等等也做了初始化。在系统初始化后,进入reset_handler函数,然后跳转到main执行。在main函数中进行硬件等初始化,启动操作系统运行。
freeRtos的实现
对于freeRots的使用接口及文件组织形式在其提供的手册中都有简要说明。freeRtos操作系统的文件按照功能划分,task.c实现任务/线程的功能;list.c实现链表功能;queue.c实现消息队列及信号量; timer.c实现了软件定时器的功能;event_goups.c实现了事件;而croutine.c则提供了协程的使用。从代码上看,个人觉得没有liteOS代码看起来舒服,太多的宏编译条件以及对齐问题,可能支持平台功能较多原因?
本质上操作系统的很多实现大同小异,基本都是基于链表调度。在freeRtos中的任务也存在执行、挂起、就绪、阻塞等状态,在具体实现上会存在些差别,如freeRtos中task优先级0表示最低优先级,而在liteOS中是最高优先级等等。
FreeRTOS学习,适用于FreeRTOS初学者,FreeRTOS整体知识框架 一、为什么要学习FreeRTOS逻辑系统与多任务系统2、数据结构-列表与列表项三、任务3.2状态四、机制 阅读详情

相关推荐

FreeRTOS协程玩法:用200行代码实现呼吸灯+串口打印双任务(基于STM32F103)

本文详细介绍了如何在资源受限的STM32F103平台上,利用FreeRTOS协程(Co-routines)这一轻量级并发机制,仅用约200行代码和极低的内存开销,同时实现PWM呼吸灯与周期性串口打印状态的双任务系统。文章通过对比协程与标准任务的资源消耗,阐述了协程共享栈和协作式调度的核心优势,并提供了完整的配置、实现与优化指南,为在64KB RAM的MCU上开发高效多任务应用提供了实用解决方案。

weixin_29165465的博客 116

FreeRTOS基础学习

FreeRTOS基础认识

小王的博客 1090

使用 FreeRTOS 实现简单多任务调度(初识 RTOS)

使用 FreeRTOS 实现简单多任务调度(初识 RTOS)

hoony123的博客 1390

[FreeRTOS入门] 1.CubeMX中FreeRTOS配置参数及理解

1.有关优先级   1.1 Configuration --> FreeRTOS MAX_PRIORITIES   设置任务优先级的数量:配置应用程序有效的优先级数目。任何数量的任务都可以共享一个优先级,使用协程可以单独的给与它们优先权。见MAX_CO_ROUTINE_PRIORITIES。 在RTOS内核中,每个有效优先级都会消耗一定量的RAM,因此这个...

weixin_30908941的博客 2405

详解FreeRTOS:协程(拓展篇—10)

协程是为那些资源很少的MCU准备的,其开销很小,但是FreeRTOS官方已经不再更新协程了,所以本篇博文仅讲解协程的基本特性和使用方法。

不脱发的程序猿 694

FreeRTOS协程

FreeRTOS的协程,实际上是线程并发出来的。从协程控制块中没有栈空间就能够知道,每个线程并发出来的协程共用一个栈空间。 /* 协程控制块 */ typedef struct corCoRoutineControlBlock { crCOROUTINE_CODE pxCoRoutineFunction; /* 协程函数指针 */ ListItem_t xGenericList...

lushoumin的博客 4368

【FreeRTOS】FreeRTOS学习笔记(3)— FreeRTOS任务与协程

一、什么是任务 在裸机系统中,系统的主体就是main函数里面顺序执行的无限循环,这个无限循环里面CPU按照顺序完成各种事情。在多任务系统中,我们根据功能的不同,把整个系统分割成一个个独立的且无法返回的函数,这个函数我们称为任务,也可以称之为线程。 void task1(void *pvParameters) { /* 任务主体,无限循环且不能返回 */ for(;;) { /* 任务主体代码 */ vTaskDelay( 2000 ); } } 二、任务状态 FreeRTOS中的任务永

果果小师弟的博客 1130

基于STM32 F1的携程式操作系统(类似于FreeRTOS)程序可以用于STM32 F4

自创的协程式操作系统,像FreeRTOS那样可以创建、删除、挂起、恢复任务等许多操作,每个任务有自己的独立堆栈空间,底层使用内联汇编方式实现任务切换。自创了简单的消息队列。STM32 F1与F4的CPU寄存器相同所以可以用于F4系列,但不可以直接用于F0。特点:使用SysTick作为任务切换的时钟源,降低功耗。该程序占用空间小,非常适合小容量芯片。

机器学习预测材料性能:从特征工程到SHAP可解释性分析

机器学习在材料科学中的应用,核心在于将复杂的材料性能预测问题转化为数据驱动的建模任务。其基本原理是通过算法从历史数据中学习特征与目标属性之间的映射关系。这项技术的价值在于能够大幅加速新材料的发现与设计周期,降低传统“试错法”的高昂成本。在工程实践中,它广泛应用于预测如形成能、带隙、弹性模量以及居里温度等关键材料性能。具体到磁性材料领域,居里温度的准确预测对于永磁体和自旋电子器件设计至关重要。本项目深入探讨了如何利用特征工程从材料成分与结构中构建有效描述符,并借助SHAP这一可解释性工具,揭示模型决策背后的物

weixin_27155667的博客 650

指导初学者使用Anaconda运行GitHub上One - DM项目的步骤

指导初学者使用Anaconda运行GitHub上One - DM项目的步骤。

AI的内部世界的博客 1485

ollama接入图像识别大模型

ollama接入图像识别大模型

qq_36437991的博客 2075

SAP PP模块MRP控制参数实战指南:从NETCH到NEUPL的深度解析

本文深入解析SAP PP模块中MRP控制参数的配置与应用,涵盖NETCH、NETPL和NEUPL三种运行模式的优化策略。通过实战案例和参数对比,帮助用户提升物料需求计划的效率和准确性,优化库存周转率和生产交付能力。

weixin_28419039的博客 244

Python爬虫实战:高效爬取Vimeo高清视频

在当今数字化时代,视频内容已成为互联网的重要组成部分。Vimeo作为一个高质量的视频分享平台,拥有大量优质视频资源。然而,Vimeo并未提供直接下载视频的选项,因此,我们需要借助Python爬虫技术来获取这些高清视频。(HTTP Live Streaming)格式存储。Vimeo的视频通常不会直接暴露。Vimeo的视频通常以。

2201_76125261的博客 429

【Bug已解决】Codex CLI 报 stream disconnected before completion 解决方案

方案适用场景推荐指数更新根证书库社区验证的最常见根因⭐⭐⭐⭐⭐检查系统时间虚拟机/容器等特殊运行环境⭐⭐⭐⭐核对 base_url 配置排除证书问题后的下一步排查⭐⭐⭐⭐更换网络环境测试怀疑本地网络设备存在干扰⭐⭐⭐升级到最新版本已知版本缺陷的场景⭐⭐⭐⭐报错虽然表现形式很像网络连接问题,但社区排查的多个真实案例表明,很大一部分情况的根因其实是本机系统的 TLS 证书信任链异常或系统时间不准确,而不是单纯的网络质量问题。优先检查并更新系统根证书库,这是社区验证过的高频根因。

一键难忘的博客 8017

【图像超分】论文精读:RepSR: Training Efficient VGG-style Super-Resolution Networks with Structural Re-Paramete

摘要: 本文提出RepSR,一种基于结构重新参数化和批量归一化(BN)的高效VGG式超分辨率网络。针对SR任务中BN易引发伪影的问题,作者通过分析发现训练-测试阶段的不一致性是主因,并提出先使用小批量统计训练、后期切换为总体统计的优化策略。RepSR块设计包含干净的残差路径和带改进BN的扩展-压缩卷积路径,有效平衡了训练非线性与推理效率。实验表明,RepSR在不同模型规模下优于现有重参数化方法,且实际推理速度更快。该工作为SR提供了性能与效率兼优的解决方案,相关代码未开源。 关键词: 超分辨率、结构重参数化

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 304

代码解读:使用Stable Diffusion完成相似图像生成任务

作为内容生产重要的一部分,生成相似图像是一项有意义的工作,例如很多内容创作分享平台单纯依赖用户贡献的图片已经不够了,最省力的方法就是利用已有的图片生成相似的图片作为补充。这篇博客详细解读基于Stable Diffusion生成相似图片的原理和代码。

沉迷单车的追风少年 1393

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

上一篇: LiteOS之任务管理
下一篇: Arduino-uno-rev3基础知识
究理观心
博客等级 码龄10年 184粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值