当前位置: 首页 > news >正文

通州个人做网站/公司网站建设推广

通州个人做网站,公司网站建设推广,wordpress静态缓存,wordpress 主题 avadaSTM32F1HAL库FreeTOTS学习1——FreeRTOS入门 裸机开发与操作系统嵌入式操作系统简介FreeRTOS简介FreeRTOS的几个重要概念任务调度器任务状态状态列表 裸机开发与操作系统 在以往的嵌入式学习中,我们最常用的就是裸机开发,所谓裸机开发就是指在没有操作系…

STM32F1+HAL库+FreeTOTS学习1——FreeRTOS入门

  • 裸机开发与操作系统
  • 嵌入式操作系统简介
  • FreeRTOS简介
  • FreeRTOS的几个重要概念
    • 任务调度器
    • 任务状态
    • 状态列表

裸机开发与操作系统

在以往的嵌入式学习中,我们最常用的就是裸机开发,所谓裸机开发就是指在没有操作系统支持的情况下,直接使用裸机硬件的一种开发方式。在裸机开发中,我们往往会定义一个循环,比如while(1)来控制单片机循环内的代码,实现特定的功能;但是这样的方法存在一些问题:单片机始终受困于循环之中,虽说有各种各样的中断,让裸机开发能够应对一些较为复杂的场合,但是单片机始终无法摆脱单任务,简单应用的场合。
而操作系统的出现,则是准确的解决了裸机开发的痛点。最显著的就是让单片机不再局限于单任务,能够同时运行多个任务,处理更为复杂的任务,实现单片机芯片性能的释放。

以上为个人总结的出,操作系统具体介绍看下面:

嵌入式操作系统简介

嵌入式操作系统(Embedded Operating System)是专门设计用于嵌入式系统的操作系统,它通常运行在资源有限、功耗低、特定功能的硬件平台上,如微控制器、传感器节点、嵌入式设备等。与桌面计算机或服务器操作系统不同,嵌入式操作系统需要考虑更多的实时性、稳定性和功耗优化。

嵌入式操作系统的主要特点和功能包括:

  • 实时性:对于许多嵌入式应用来说,时间的准确性和响应速度至关重要。因此,嵌入式操作系统通常提供实时调度器,能够确保任务在指定的时间内完成。

  • 资源管理:由于嵌入式系统资源有限,嵌入式操作系统需要有效地管理内存、处理器时间、外设等资源。它们提供了资源分配和调度的机制,以便多个任务能够协同工作而不互相干扰。

  • 低功耗设计:嵌入式操作系统通常优化了功耗管理,能够有效控制设备在不同运行状态下的能耗,延长电池寿命或者减少能源消耗。

  • 实时操作:针对需要处理实时数据流或事件的应用,嵌入式操作系统能够确保及时响应和处理,如控制系统、传感器数据采集等。

  • 驱动程序支持:嵌入式操作系统提供了通用的设备驱动程序接口,简化了与硬件的交互,开发者可以通过API调用来访问和控制各种硬件设备。

  • 任务调度:多任务管理是嵌入式操作系统的一个重要功能。它能够管理多个任务的优先级、调度顺序以及任务之间的通信和同步。

  • 通信支持:许多嵌入式系统需要与外部设备或网络进行通信。嵌入式操作系统提供了通信协议和接口支持,如串口通信、网络协议栈等。

FreeRTOS是嵌入式操作系统的一种,也是我们要学习的内容:

FreeRTOS简介

FreeRTOS(Real-Time Operating System)是一个开源的实时操作系统内核,专为嵌入式系统设计。它提供了轻量级的多任务管理、任务调度、定时器、信号量、消息队列等功能,使得开发者能够在嵌入式设备上轻松实现复杂的应用程序。
主要特点:

  1. 开源和免费:FreeRTOS是开源项目,采用MIT许可证,可以免费用于商业和个人项目。这使得开发者可以自由地使用、修改和分发它,同时享受开源社区的支持和贡献。

  2. 轻量级和高效:FreeRTOS的内核设计非常精简,占用资源少,适合运行在内存和处理器能力有限的嵌入式设备上。其任务切换速度快,响应时间短,适用于对实时性要求高的应用场景。

  3. 多任务管理:FreeRTOS支持多任务管理,可以同时运行多个任务,每个任务有独立的任务优先级。开发者可以利用任务调度器(scheduler)来控制任务执行的顺序和时间片分配,实现复杂的并发控制和协同工作。

  4. 实时调度器:内置的实时调度器确保任务能按照优先级和预定时间执行,满足实时数据处理和响应的需求。这使得FreeRTOS特别适合需要及时处理事件或数据的应用,如工业控制、汽车电子等领域。

  5. 资源管理:FreeRTOS提供了丰富的资源管理功能,包括内存管理、任务间通信(如信号量、消息队列、邮箱等)、定时器和事件控制等。这些功能能够有效地管理和分配设备的有限资源,提高系统的效率和稳定性。

  6. 可移植性:FreeRTOS支持多种架构和开发板,如ARM、AVR、PIC等,以及多种编译器,如GCC、Keil、IAR等。这种广泛的支持使得开发者可以轻松在不同硬件平台上移植和使用FreeRTOS。

  7. 社区支持和生态系统:FreeRTOS拥有活跃的开发社区和生态系统,提供了丰富的文档、示例代码和技术支持。开发者可以通过社区获取技术支持、交流经验,加速开发过程。

总结下来就是:免费开源、简单好用、可移植性高、可裁剪、轻量级、使用广泛

FreeRTOS的几个重要概念

任务调度器

调度器就是使用相关的调度算法来决定当前需要执行的哪个任务,FreeRTOS 一共支持三种任务调度方式:

  • 抢占式调度:主要是针对优先级不同的任务,每个任务都有一个优先级,优先级高的任务可以抢占优先级低的任务。
  1. 高优先级任务,优先执行。
  2. 高优先级任务不停止(或者说是阻塞:任务内部在延时或者等待系统信号量等操作叫阻塞),低优先级任务无法执行。
  3. 被抢占的任务会进入就绪状态。
  • 时间片调度:主要针对优先级相同的任务,当多个任务的优先级相同时, 任务调度器会在每一次系统时钟节拍到的时候切换任务。
  1. 同等优先级任务轮流地享有相同的 CPU 时间(可设置), 叫时间片,在FreeRTOS中,一个时间片就等于SysTick 中断周期
  2. 同等优先级任务,轮流执行;时间片流转
  3. 一个时间片大小,取决为滴答定时器中断周期
  4. 当一个任务进入阻塞,但是时间片还没用完时,会直接进入下一个任务,且下一个任务的时间片长短不变。
  • 协程式调度:当前执行任务将会一直运行,同时高优先级的任务不会抢占低优先级任务,FreeRTOS现在虽然还支持,但是官方已经表示不再更新协程式调度,基本上不使用了。

任务状态

在FreeRTOS中任务一共有以下四种状态:

  • 运行态:正在执行的任务处于运行态,在STM32中,同一时刻只有一个任务处于运行态,之所以说FreeRTOS能够实现多任务,是因为单片机在很短时间内依次执行多个任务,由于一个时间片间隔很短,导致好像同时在运行多个任务。
  • 就绪态:表示该任务已经可以被执行,但是还没轮到它,处于就绪态
  • 阻塞态:如果一个任务因延时或等待外部事件发生,那么这个任务就处于阻塞态
  • 挂起态:类似暂停,调用函数 vTaskSuspend() 进入挂起态,需要调用解挂函数vTaskResume()才可以进入就绪态
    在这里插入图片描述

只有就绪态的任务可以变成运行态!!!

状态列表

除了运行态之外,其他状态的任务都有一个任务列表

  • 就绪列表:pxReadyTasksLists[x] ,X表示优先级
  • 阻塞列表:pxDelayedTaskList
  • 挂起列表:xSuspendedTaskList

调度器总是在所有处于就绪列表的任务中,选择具有最高优先级的任务来执行 ,当所有任务处于同一个优先级时,会都在同一个就绪列表上

相关文章:

STM32F1+HAL库+FreeTOTS学习1——FreeRTOS入门

STM32F1HAL库FreeTOTS学习1——FreeRTOS入门 裸机开发与操作系统嵌入式操作系统简介FreeRTOS简介FreeRTOS的几个重要概念任务调度器任务状态状态列表 裸机开发与操作系统 在以往的嵌入式学习中,我们最常用的就是裸机开发,所谓裸机开发就是指在没有操作系…...

杭州代理记账报税全程托管专业实力全面指南

杭州代理记税报税服务可以为企业提供全程托管财务管理解决方案,确保企业的财务工作专业、高效、合规。以下是杭州代理记税报税服务全面指南: https://www.9733.cn/news/detail/185.html 一、代理记账报税服务的内容 基础服务: 每日记&#xf…...

PHP 界的扛把子 Swoole 异步通信利器

大家好,我是码农先森。 引言 我今天主要介绍的内容是包括但不仅限于 Swoole ,也有一部分 Go 语言的内容。 为什么要介绍 Swoole ? 先说一说背景吧,我们项目组之前要为《香港 01》开发一个积分系统的项目,这个系统的主要功能包…...

40.连接假死-空闲检测-发送心跳

连接假死情况 1.网络设备出现故障,例如网卡,机房等。底层的TCP连接已经断开,但应用程序没有感知到,仍然占着资源。 2.公网网络不稳定,出现丢包。若果连续出现丢包,这时现象就是客户端数据发不出去,服务端也一直收不到数据,就这么一直耗着。 3.应用程序线程阻塞,无法…...

hdfs高可用文件系统架构

1、整体架构 2、角色简介 2.1、namenode NameNode 是 HDFS 集群中的核心组件,负责管理文件系统的元数据、处理客户端请求、管理数据块、确保数据完整性和高可用性。由于其重要性,NameNode 的性能和可靠性直接影响整个 HDFS 集群的性能和可靠性。在生产…...

从官方源码精简出第1个FreeRTOS程序

一、下载官方源码 1、打开百度搜索freerots,找到官网:FreeRTOS官网 2、将源码解压到没有中文目录的路径下 二、删减目录 1、删除FreeRTOS-Plus和tools 2、删除FreeRTOS/Demo下除CORTEX_STM32F103_Keil外的所有文件 3、删除FreeRTOS\Source\portable下除RVDS和MemM…...

谷歌上搞下来的,无需付费,可以收藏!

在数字化时代,我们越来越依赖于智能设备来获取信息和知识。中国智谋App正是这样一款应用,它将中国古代的智慧与谋略书籍带入了我们的移动设备,让我们能够随时随地学习和领悟。而且提供文言文的原文和译文。 软件下载方式:谷歌上搞…...

宿主机无法通过ip连接wsl2解决方案

文章目录 原因排查网络模式win11防火墙关闭wsl ubuntu防火墙 如果之前能连接现在连接不上可以参考该方案 原因排查 网络模式win11防火墙(win11新增了Hyper-V防火墙)wsl2 ubuntu防火墙 网络模式 wsl2的默认网络模式是NAT&#xff0c;建议修改为镜像模式。在C:\Users\<User…...

Ruby编程语言学习

学习Ruby编程语言&#xff0c;你可以按照以下步骤进行&#xff1a; ### 1. 基础知识入门 #### 安装Ruby - 访问Ruby官网&#xff08;https://www.ruby-lang.org/&#xff09;下载适合你操作系统的版本。 - 对于Linux用户&#xff0c;可以使用包管理器安装。 #### 学习资源 -…...

Redis实战—基于setnx的分布式锁与Redisson

本博客为个人学习笔记&#xff0c;学习网站与详细见&#xff1a;黑马程序员Redis入门到实战 P56 - P63 目录 分布式锁介绍 基于SETNX的分布式锁 SETNX锁代码实现 修改业务代码 SETNX锁误删问题 SETNX锁原子性问题 Lua脚本 编写脚本 代码优化 总结 Redisson 前言…...

ARM功耗管理框架之LPI

安全之安全(security)博客目录导读 思考&#xff1a;功耗管理框架&#xff1f;SCP&#xff1f;PPU&#xff1f;LPI&#xff1f;之间的关系&#xff1f;如何配合&#xff1f; 目录 一、功耗管理框架中的LPI 二、LPI分类 三、Q-Channel和P-Channel对比 四、Q-Channel和P-Ch…...

Unity太空避障Demo总结

太空避障&#xff1a;主要是实现飞机躲避子弹 面板基类、音乐类、排行榜类、json等等都和上一篇Unity坦克迷宫Demo总结一样&#xff0c;太空避障主要是对四元数的练习和使用 1.选择飞机面板 &#xff08;1&#xff09;通过左右按钮对显示的模型进行切换 &#xff08;2&#xff…...

SpringSecurity-重写默认配置

重写UserDetailService组件 1.注入Bean的方式 /*** author: coffee* date: 2024/6/22 21:22* description: 重写springsecurity默认组件&#xff1a;注入Bean的方式*/Configuration public class ProjectConfig {/*** 重写userDetailsService组件*/Beanpublic UserDetailsSer…...

C# 判断值是否在枚举里

你还在代码里面通篇通过数字的定义类型。比如type为1 表示xx,type为2 表示yy吗&#xff1f;然后程序里面通过数字1和2来判断吗&#xff1f;比如下面类似的代码&#xff1a; if(type1){ //.... } else if(type2){ //... } else if(type3){ //... } 老鸟们一般都会用枚举来定义…...

Interview preparation--elasticSearch倒排索引原理

搜索引擎应该具备哪些要求 查询速度快 优秀的索引结构设计高效率的压缩算法快速的编码和解码速度 结果准确 ElasiticSearch 中7.0 版本之后默认使用BM25 评分算法ElasticSearch 中 7.0 版本之前使用 TP-IDF算法 倒排索引原理 当我们有如下列表数据信息&#xff0c;并且系统…...

银河麒麟高级服务器操作系统V10SP2(X86)配置bond0的mac地址为指定子网卡的mac地址

银河麒麟高级服务器操作系统V10SP2&#xff08;X86&#xff09;配置bond0的mac地址为指定子网卡的mac地址 一 系统环境二 删除和备份原有配置2.1 down掉bond02.2 备份之前的bond配置到/root/bak2.3 删除bond配置&#xff08;网卡文件根据实际情况变化&#xff09; 三 新建bond0…...

python中不同维度的Tensor向量为何可以直接相加——广播机制

文章目录 广播机制示例解释广播机制如何工作代码示例输出解释广播机制的本质 在矩阵加法中&#xff0c;如果两个张量的形状不同&#xff0c;但其中一个张量的形状可以通过广播机制扩展到与另一个张量的形状相同&#xff0c;则可以进行加法操作。广播机制在深度学习框架&#xf…...

38.MessageToMessageCodec线程安全可被共享Handler

handler被注解@Sharable修饰的。 这样的handler,创建一个实例就够了。例如: ByteToMessageCodec的子类不能被@Sharable修饰 如果自定义类是MessageToMessageCodec的子类就是线程共享的,可以被@Sharable修饰的 package com.xkj.protocol;import com.xkj.message.Message; i…...

Linux中的全局环境变量和局部环境变量

Linux中的全局环境变量和局部环境变量 一、全局环境变量二、局部环境变量三、 设置全局环境变量 bash shell用一个叫作环境变量 &#xff08;environment variable&#xff09;的特性来存储有关shell会话和工作环境的信息&#xff08;这也是它们被称作环境变量的原 因&#xff…...

【研究】AI大模型需要什么样的硬件?

关注AI大模型 x 硬件的两条思路 从22年11月OpenAI推出ChatGPT至今&#xff0c;我们看到Chatbot应用的能力不断增强&#xff0c;从最初的文字问答&#xff0c;迅速向具有自主记忆、推理、规划和执行的全自动能力的AI Agent发展。我们认为端侧智能是大模型发展的重要分支。建议投…...

人工智能--自然语言处理NLP概述

欢迎来到 Papicatch的博客 目录 &#x1f349;引言 &#x1f348;基本概念 &#x1f348;核心技术 &#x1f348;常用模型和方法 &#x1f348;应用领域 &#x1f348;挑战和未来发展 &#x1f349;案例分析 &#x1f348;机器翻译中的BERT模型 &#x1f348;情感分析在…...

基于Java微信小程序火锅店点餐系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f;感兴趣的可以先收藏起来&#xff0c;还…...

SpringCloud_GateWay服务网关

网关作用 Gateway网关是我们服务的守门神&#xff0c;所有微服务的统一入口。 网关的核心功能特性&#xff1a; 请求路由和负载均衡&#xff1a;一切请求都必须先经过gateway&#xff0c;但网关不处理业务&#xff0c;而是根据某种规则&#xff0c;把请求转发到某个微服务&a…...

使用Dropout大幅优化PyTorch模型,实现图像识别

大家好&#xff0c;在机器学习模型中&#xff0c;如果模型的参数太多&#xff0c;而训练样本又太少&#xff0c;训练出来的模型很容易产生过拟合的现象。在训练神经网络时&#xff0c;过拟合具体表现在模型训练数据损失函数较小&#xff0c;预测准确率较高&#xff0c;但是在测…...

Vue3中的常见组件通信(超详细版)

Vue3中的常见组件通信 概述 ​ 在vue3中常见的组件通信有props、mitt、v-model、 r e f s 、 refs、 refs、parent、provide、inject、pinia、slot等。不同的组件关系用不同的传递方式。常见的撘配形式如下表所示。 组件关系传递方式父传子1. props2. v-model3. $refs4. 默认…...

Stm32的DMA的学习

一&#xff0c;介绍 二&#xff0c;DMA框图 三&#xff0c;DMA通道 四&#xff0c;相关HAL库函数 五&#xff0c;配置DMA 六&#xff0c;Stm32CubeMX配置 【13.1】减少CPU传输负载 DMA直接存储器访问—Kevin带你读《STM32Cube高效开发教程基础篇》_哔哩哔哩_bilibili...

应用安全(补充)

Nessus是目前全世界最多人使用的系统漏洞扫描与分析软件。NMAP是一个网络连接端扫描软件&#xff0c;用来扫描网上电脑开放的网络连接端。X-SCAN安全漏洞扫描工具AppScan是IBM的一款web安全扫描工具&#xff0c;可以利用爬虫技术进行网站安全渗透测试&#xff0c;根据网站入口自…...

鸿蒙开发Ability Kit(程序框架服务):【FA模型切换Stage模型指导】 app和deviceConfig的切换

app和deviceConfig的切换 为了便于开发者维护应用级别的属性配置&#xff0c;Stage模型将config.json中的app和deviceConfig标签提取到了app.json5中进行配置&#xff0c;并对部分标签名称进行了修改&#xff0c;具体差异见下表。 表1 配置文件app标签差异对比 配置项FA模型…...

通过命令行配置调整KVM的虚拟网络

正文共&#xff1a;1234 字 20 图&#xff0c;预估阅读时间&#xff1a;2 分钟 在上篇文章中&#xff08;最小化安装的CentOS7部署KVM虚拟机&#xff09;&#xff0c;我们介绍了如何在最小化安装的CentOS 7系统中部署KVM组件和相关软件包。因为没有GUI图形界面&#xff0c;我们…...

Apache POI操作excel

第1部分&#xff1a;引言 1.1 Apache POI简介 Apache POI是一个开源的Java库&#xff0c;用于处理Microsoft Office文档。自2001年首次发布以来&#xff0c;它已经成为Java社区中处理Office文档事实上的标准。Apache POI支持HSSF&#xff08;用于旧版本的Excel格式&#xff0…...