FreeRTOS简述和移植文档

2023-11-04

FreeRTOS简述和移植文档


1. 前言

目前由于IOT的飞速发展,针对单片机的业务需求也会经常变动,在某些情况下,单片机设备的资源不再是关注的重点,重点是开发效率以及应对业务升级的快速迭代,多任务的场景越来越多,原本的方案无法胜任多多任务的场景(自己在一个进程中控制多个任务的时序很麻烦),因此越来越多的设备会放置rtos来满足多任务以及多变的业务升级需求,rtos简单理解主要就是将一些常用的功能封装成一些库,再对这些库做统一管理并提供接口调用,方便开发任务进行多任务开发等,Free RTOS只是众多RTOS中的一种。

我们目前使用的门禁机目前也是使用的FreeRTOS,因为需要提高安全性,卡信息在某些场景下需要联网做比对,针对一些问题也需要像PC上使用的操作系统一样做OTA升级,搭建系统会将很多原本冗余重复的代码交给操作系统。其实目前公交卡之类的都是联网的,这样才能防止早些年出现的自行给公交卡充值等情况,也才可以实现当你卡内没钱后也可以在一段时间后再自行扣除等功能,设备入网并且可以在网络上做更复杂的交互是IOT很重要的一步。

2. FreeRTOS简述

以下主要来自维基百科:

(1). 概述

FreeRTOS是一个热门的嵌入式设备用即时操作系统核心,它于2003年由Richard Barry设计,并已被经成功移植到35种不同的微控制器上。FreeRTOS采用MIT许可证许可。

(2). 实现

FreeRTOS的设计小巧且简易,整个核心代码只有3到4个C文件,为了让代码容易阅读、移植和维护,大部分的代码都是以C语言编写,只有一些函数(多数是架构特定排班副程序)采用汇编语言编写。

FreeRTOS提供许多方法以实现多线程(threads)、多作业(task)、互斥锁(mutex)、信号量(semaphore)和软件计时器(software timer),有个为低耗电应用程序提供的无嘀嗒(tick-less)模式,线程的优先权管理也有支持,此外,FreeRTOS提供了四种存储器配置的模式:

  • 仅配置(allocate only)
  • 以非常简易但快速的算法进行配置与释放
  • 搭配存储器合并,以较复杂但快速的算法进行配置与释放
  • 搭配互斥保护,以 C 库配置进行配置与释放

FreeRTOS中没有一些像Linux、Microsoft Windows等典型操作系统具有的先进特征,例如设备驱动程序、先进存储器管理机制、用户管理和网络管理,FreeRTOS着重在运行的简洁与速度,FreeRTOS有时会被视为是一个‘线程库’而非‘操作系统’,尽管可以找到命令行接口和类似POSIX I/O 接口的插件。

FreeRTOS实现了多线程,主程序会在规律的短时间区间内调用一个线程时计方法,这个方法会以循环制依照任务的优先级进行任务切换,一般来说,这个短时间区间介于 1/1000 秒与 1/100 秒之间,透过一个硬件时计中断来计时,但这个区间经常随着特定的应用而改变。

从FreeRTOS官网(FreeRTOS.org(页面存档备份,存于互联网档案馆))所下载到的代码包含准备用来移植或编译的配置文件和演示代码,让用户可以快速地进行应用程序设计。

(3). 主要特色

  • 存储器足迹非常小,低负担(overhead)且运行非常快速
  • 提供低电耗应用程序无计时选项
  • 对操作系统新手而言,很适合作为入门教材,对于专业开发者来说则适合用于商业产品开发
  • 调度器可以设置成可抢先(preemptive)或共同运作(cooperative operation)
  • 提供共享副程序(coroutine),在FreeRTOS中,共享副程序是一个存储器堆栈用量非常有限但非常简易轻巧的任务
  • 支持使用(generic trace macros(页面存档备份,存于互联网档案馆). )

(4). 支持平台

3. 移植FreeRTOS

目前移植Free RTOS的资料很多,这里是在亚马逊上找到的一个中文文档,很详细的介绍了Free RTOS的移植,大家可以作为参考:

链接: https://pan.baidu.com/s/18OwIBuIVOdyylvPz_IsA9g

提取码: ccj3

在这里插入图片描述

4. 最后

接下来我会找时间总结在stm32F4的开发板上移植Free RTOS并开发一些简单的例子,比如写一些MQTT、http客户端或者写一些蓝牙相关的程序,让设备和手机或者服务器做一些交互。

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

FreeRTOS简述和移植文档 的相关文章

  • IOS安全测试(资源学习笔记)

    客户端程序安全 位置无关代码 检测客户端是有启用Position Independent Executable PIE 编译选项 采用PIE选项编译的引用程序允许使用地址空间随机分布功能 ASLR Address Space Layout

随机推荐

  • PHPExcel导入导出操作总结

    PHPExcel 是用来操作Office Excel 文档的一个PHP类库 它基于微软的OpenXML标准和PHP语言 可以使用它来读取 写入不同格式的电子表格 如 Excel BIFF xls Excel 2007 OfficeOpenX
  • CocosCreator中TiledMap简单使用

    在开发游戏过程中 有时候会用到TiledMap 瓦片地图 我这边使用的是1 4 3版本的tiledmap 2 3 4版本的CocosCreator 其他版本的tiledmap会有做不了动画的问题 后面会说到 视频参考 B站UP主 阿信OL
  • 【UnityShader】模板Stencil测试

    效果 原理 使用后处理 在后处理阶段先渲染产生一张RenderTexture 包含要被描边的物体 使用描边色渲染 高斯模糊RenderTexture 会产生边缘 用高斯模糊的图片反向剔除未模糊的图 这样只保留模糊多出的部分 此时Render
  • Prim算法 与 Kruskal算法 求最小生成树

    一 Prim算法 普利姆 Prim 算法适用于求解无向图中的最小生成树 Minimum Cost Spanning Tree 下面是Prim算法构造最小生成树的过程图解 选择一个节点开始 比如V1进入集合U 剩下的集合的
  • Spring Boot多线程环境下,解决多个定时任务冲突问题

    问题引入 关于定时任务注解 Scheduled在之前的文章已经讲到 Spring Boot定时器默认的是单线程的 但是问题就来了 如果在线程争夺资源后 某个线程需要比较长时间才能执行完 那其他的定时器怎么办 都只能进入等待状态 时间越久 累
  • cmake 条件判断

    以下内容来自cmake官方文档 传送门 if 语法 if
  • C++11变长模板

    C 11变长模板 文章目录 简介 模板和函数参数包 模板参数包说明 解包 在可变参数模板中使用递归 进阶 不同的包拓展方式 简介 该篇博客主要介绍C 11中的变长模板 对变长模板的原理和使用方法进行介绍 本篇博客参考书籍深入理解C 11新特
  • 再淡spring jdbc 连接池断开重连设置

    先看一段错误日志 Error querying database Cause com mysql jdbc exceptions jdbc4 MySQLNonTransientConnectionException No operation
  • 安装Fortran语言编程环境全流程记录

    本文以Visual Studio 2017 Intel Parallel Studio XE 2019配置Fortran语言编译环境 系统版本Windows10 目录 版本问题 安装VS2017 安装Intel Parallel Studi
  • Win10 Snip & sketch无法保存截图

    如果你看到了我的博客 相信你也遇上了上面这个问题 在一次win10更新后发现 当按下Win Shift S使用截图后无法正常保存的问题 我寻找了很多文章也没有找到解决方案 最后找到了一个替代的软件 感觉挺好用的 微软官网上面找到的答案在 这
  • 【千律】C++基础:计算宽窄字节字符串所占用的字节数

    include
  • 【C ++ 】C++中的double和float区别

    文章目录 一 概述 二 精度的理解 三 存储空间 四 范围 五 运算精度 一 概述 在C 中 double和float是用于表示浮点数的两种数据类型 它们具有以下的详细介绍和区别 精度 double类型的变量具有更高的精度 即它可以表示更多
  • NPM详解

    NPM详解 介绍 命令 执行多个脚本 pre post 错误 静默消息 日志等级 从文件中引用路径 访问环境变量 传递参数 命名规则 前缀 在拿到一个项目之后 如何看入口文件 如何运行项目 我们都会找到 package json 中的 sc
  • 小点dian儿:pandas数据存入文件,行索引处理

    小点dian儿 存入数据的时候 我们希望对数据在系统的行名 保存或者不保存 参数 index None 类似 header False不保存列名 在我们不进行如上的设计的时候 系统或分配默认的行index 0 1 2 在我们将运行结果存入文
  • Python预测糖尿病

    今天给大家讲解一个实战案例 如何根据现有数据预测糖尿病 在这个案例开始之前 希望大家回忆一下大学里讲过的线性回归的知识 这是数据挖掘里非常重要的一部分知识 当然 鉴于大家都学过 本篇就不再赘述 一 数据集介绍 diabetes datase
  • 人工学习之预测2023年考研英语答案分布

    统计了2012 2022年共计11年的英语一完形和阅读答案 除了20年 ABCD四个选项基本都均匀分布 所以大概率是各自5个或者两个5一个4 20年类似13年 不管完形还是阅读 答案都是十分均匀分布 即5555型 至于原因 可能是老师的偏好
  • 计算机网络(第七版)谢希仁1-2章笔记

    笔记基于谢希仁老师的计算机网络笔记 第七版 第1 2章 1章 概述 2章 物理层 第1章 概述 1 1 计算机网络在信息时代的中的作用 1 21世纪的一些重要特征就是数字化 网络化和信息化 是一个以网络为核心的信息时代 2 三类网络 电信网
  • 登录功能的测试点大全

    登录功能的测试点大全 还是比较全面的 有什么考虑不到的 可以补上 功能性用例 1 输入已注册的用户名和正确的密码 验证是否成功登录 2 输入已注册的用户名和不正确的密码 验证是否成功失败 且提示信息正确 3 输入未注册的用户名和任意密码 验
  • [转]QNX_BSP包分析

    如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额0 1元起步 多少随意 声明 本文只用于个人学习交流 若不慎造成侵权 请及时联系我 立即予以改正 锋影 email 174176320 qq com 这篇文章主要分
  • FreeRTOS简述和移植文档

    FreeRTOS简述和移植文档 文章目录 FreeRTOS简述和移植文档 1 前言 2 FreeRTOS简述 1 概述 2 实现 3 主要特色 4 支持平台 3 移植FreeRTOS 4 最后 1 前言 目前由于IOT的飞速发展 针对单片机