freertos源码分析(1)--初始篇

2023-05-16

 

代码下载地址:https://www.freertos.org/

部分转载参考

FreeRTOS基础知识:

RTOS全称为:Real Time OS,就是实时操作系统,强调的是:实时性。实时操作系统又分为硬实时和软实时。硬实时要求在规定的时间内必须完成操作 ,硬实时系统不允许超时,在软实时里面处理过程超时的后果就没有那么严格。 在实时操作系统中,我们可以把要实现的功能划分为多个任务,每个任务负责实现其中的一部分,每个任务都是一个很简单的程序,通常是一个死循环。 RTOS操作系统:FreeRTOS,UCOS,RTX,RT-Thread,DJYOS等。 RTOS操作系统的核心内容在于:实时内核。

 

可剥夺型内核:

 

RTOS的内核负责管理所有的任务,内核决定了运行哪个任务,何时停止当前任务切换到其他任务,这个是内核的多任务管理能力。多任务管理给人的感觉就好像芯片有多个CPU,多任务管理实现了CPU资源的最大化利用,多任务管理有助于实现程序的模块化开发,能够实现复杂的实时应用。

 

可剥夺内核顾名思义就是可以剥夺其他任务的CPU使用权,它总是运行就绪任务中的优先级最高的那个任务。

 

https://images2015.cnblogs.com/blog/1100576/201705/1100576-20170518205756744-313403642.png

 

FreeRTOS是一个可裁剪、可剥夺型的多任务内核,而且没有任务数限制。FreeRTOS提供了实时操作系统所需的所有功能,包括资源管理、同步、任务通信等。 FreeRTOS是用C和汇编来写的,其中绝大部分都是用C语言编写的,只有极少数的与处理器密切相关的部分代码才是用汇编写的,FreeRTOS结构简洁,可读性很强!最主要的是非常适合初次接触嵌入式实时操作系统学生、嵌入式系统开发人员和爱好者学习。

 

FreeRTOS系统的优势

1. 协议栈代码完全开源,而且官网相关补充资料也完全免费。

2. FreeRTOS使用广泛,网上各种资料比较多。

3. 协议栈代码整体编码风格统一,逻辑比较清晰。

4. FreeRTOS现在属于Amazon,基本不用担心版本断档问题。

FreeRTOS 系统运行原理

 基于硬件适配层实现跨平台可移植

 基于任务驱动的方式运行整个系统

 基于优先级抢占的方式实现实时性

 基于任务队列的方式实现核心的任务调度

 基于队列、信号量方式实现任务之间的通信和同步

 

FreeRTOS代码结构:

FreeRTos文件夹包含系统实现kernel代码

FreeRtos-Plus包含kernel以外的系统常用功能组件。

List.c动态管理各种task实现任务调度;

Tasks.c任务本身的一些配置。

Queue.c消息队列用于task间通信和同步。

 

FreeRTOS-Plus-IO:提供不同硬件设备I/O引脚的通信接口

FreeRTOS-Plus-TCP:TCP/IP协议组件,对于需要使用IP通信的设备,这个组件非常重要

FreeRTOS-Plus-UDP
WolfSSL:用来对应用层协议添加认证加密组件。

 

IAR工具打开代码列表

使用FreeRTOSv10.2.0\FreeRTOS\Demo\CORTEX_M4F_STM32F407ZG-SK为例

文件列表:

FreeRTOS_Source:freertos源代码。

ST_and_IAR_code:ST和IAR相关代码。

Main.c初始启动代码,任务操作。

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

freertos源码分析(1)--初始篇 的相关文章

随机推荐

  • 一键式AI绘画,让你也能体验当画师的魅力(附原理分析)

    文章目录 讲在前面一 Novel AI1 网站介绍2 AI作画 二 AI绘画的内在原理1 Diffusion Model的基本过程2 扩散模型的兴起 讲在前面 大概在今年10月初期 xff0c AI作画的热潮突然被掀起 xff0c 这股潮流
  • 类与对象:C++编程知识回顾与拓展 第一篇

    类与对象 C 43 43 编程知识回顾与拓展 第一篇 前言 在步入研究生生涯以来 xff0c 痛感自身编程知识与能力的不足 xff0c 亟需重新回顾 xff0c 并重点学习关于C 43 43 中面向对象 类 STL等关键知识 xff0c 提
  • OpenStreetMap:对抗谷歌帝国的共享开源地图

    OpenStreetMap xff1a 对抗谷歌帝国的共享免费地图 讲在前面 在步入自动驾驶的学习之后 xff0c 不可避免地我需要去了解在驾驶领域中选择的地图格式 xff0c 而随着研究的进一步深入 xff0c 我逐步了解到两种较为主流的
  • Copilot:AI自动写代码,人工智能究竟还能取代什么?

    Copilot xff1a AI自动写代码 xff0c 人工智能究竟还能取代什么 xff1f 前言 在AI绘画掀起一阵热潮之后 xff0c AI写代码又逐渐进入了我们的视野 xff0c 似乎这一步我们还没想到就迅速到来了 xff0c 难道说
  • 关于SubSonic3.0生成的表名自动加复数(s)的“用户代码未处理SqlException,对象名‘xxxs‘无效”异常处理

    关于SubSonic3 0生成的表名自动加复数 xff08 s xff09 的 用户代码未处理SqlException xff0c 对象名 39 xxxs 39 无效 异常处理 参考文章 xff1a xff08 1 xff09 关于SubS
  • 互联网金融风控面试算法知识(三)

    资料来源于网络搜集和汇总 xff0c 把算法知识的总结放在业务知识后面也是为了说明实际工作业务落地应用的重要性大于算法创新 面试题依然是适用于3年经验以内的初学者 xff0c 希望大家在学习算法的同时不要一心只研究算法而脱离了业务 xff0
  • wiki树莓派安装ubuntu mate 和 ros

    两大步骤 1 安装ubuntu mate 2 安装ros 一 安装ubuntu mate 下载ubuntu mate 18 04 img 并制作系统盘 首先要说的就是树莓派支持的系统是很多样的 xff0c 但是针对ros xff0c 我们只
  • npm 的工作原理

    包 Package 和模块 Module 如何定义一个Package 满足如下条件都可以称为一个包 xff1a 一个文件夹包含应用程序 xff0c 使用package json来描述它 a 一个用gzip压缩的文件夹 xff0c 满足 a
  • 2023最全Postman安装使用详解

    一 Postman背景介绍 用户在开发或者调试网络程序或者是网页B S模式的程序的时候是需要一些方法来跟踪网页请求的 xff0c 用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具 今天给大家介绍的这款网页调试工具不仅可以
  • cmake 设置 debug release模式

    1 通过命令行的方式 cmake DCMAKE BUILD TYPE 61 Debug 2 set CMAKE BUILD TYPE Debug CACHE STRING 34 set build type to debug 34 或者 s
  • 华为笔试题(4)

    一 计算n x m的棋盘格子 xff08 n为横向的格子数 xff0c m为竖向的格子数 xff09 沿着各自边缘线从左上角走到右下角 xff0c 总共有多少种走法 xff0c 要求不能走回头路 xff0c 即 xff1a 只能往右和往下走
  • 安装RedisBloom插件

    前言 安装RedisBloom模块会遇到很多坑 xff0c 希望你不要和我一样踩的这么全 x1f60f 如果觉得编译麻烦 xff0c 我也上传了我编译的so文件 xff0c 可以直接加载使用 https download csdn net
  • ROS Catkin 教程之 CMakeLists.txt

    1 概览 CMakeLists txt 是用 CMake 构建系统构建 ROS 程序包的输入文件 任何兼容 CMake 的包都包含一个或多个 CMakeLists txt 文件 xff0c 用以描述怎样构建和安装代码 catkin 项目采用
  • Xsens Mti-g-710 IMU driver在Ubuntu18.04 ROS melodic中的安装使用

    Ubuntu18 04下安装的ROS melodic 如何使用Xsens Mti g 710 IMU driver xff1f 这里给出一个详细步骤说明 这里的IMU是USB接口 1安装 首先插入IMU的USB口 命令行运行 gt lsus
  • PYTHON -MYSQLDB安装遇到的问题和解决办法

    PYTHON MYSQLDB安装遇到的问题和解决办法 参考文章 xff1a xff08 1 xff09 PYTHON MYSQLDB安装遇到的问题和解决办法 xff08 2 xff09 https www cnblogs com gaosh
  • 位姿估计Robot_pose_efk的配置和使用

    Robot pose efk 用于融合里程计 xff0c 惯性测量单元和视觉里程计的传感器输出 xff0c 从而减少测量中的总体误差 了解ROS的robot pose ekf软件包中扩展卡尔曼滤波器的用法 xff1a robot pose
  • linux录屏和截图软件

    linux下的录屏和截图软件有很多 xff0c kazam集成了录屏和截图两个功能 xff0c 而且十分轻量级 xff0c 比较好用 如果是在VirtualBox虚拟机中跑linux的话 xff0c virtualbox本身就提供录屏和截图
  • APM 学习 6 --- ArduPilot 线程

    ArduPilot 学习之路 6 xff0c 线程 英文原文地址 xff1a https ardupilot org dev docs learning ardupilot threading html 理解 ArduPilot 线程 线程
  • nginx 配置多个vue,环境部署

    1 最近项目要上线 xff0c 需要通过nginx作为代理 xff0c 要发布2个VUE前端项目 xff0c 记录一下nginx conf配置文件 亲自验证 xff0c 特此记录一下 xff0c 希望能帮助向我一样 小白的人 user ro
  • freertos源码分析(1)--初始篇

    代码下载地址 xff1a https www freertos org 部分转载参考 FreeRTOS基础知识 xff1a RTOS全称为 xff1a Real Time OS xff0c 就是实时操作系统 xff0c 强调的是 xff1a