技术分享:FreeRTOS实时内核使用指南

最近找这个资料的人比较多,好心的小编就来分享一些关于FreeRTOS的详解和开发资料比较多,文件比较多,分享部分RTOS低功耗设计原理和实现的部分,有兴趣的小伙伴可以到闯客网技术论坛下载,或者到群获取:813238832

图一
资料共享链接:https://bbs.usoftchina.com/thread-203500-1-1.html

RTOS 低功耗设计原理及实现

目前,越来越多的嵌入式产品在开发中使用 RTOS 作为软件平台,同时,开发中对低功耗的要求也越来越高,这篇文档会讨论一下如何在 RTOS 中处理微控制器的低功耗特性。应用中使用的 RTOS 一般采用基于时间片轮转的抢占式任务调度机制。

一般的低功耗设计思路如下:

  1. 当 Idle 任务运行时,进入低功耗模式;
  2. 在适当的条件下,通过中断或者外部事件唤醒 MCU。
    但是,从第二点可以看出,每次当 OS 系统定时器产生中断时,也会将 MCU 从低功耗模式中唤醒,而频繁的进入低功耗模式/从低功耗模式中唤醒会使得 MCU 无法进入深度睡眠,对低功耗设计而言也是不合理的。在 FreeRTOS 中给出了一种低功耗设计模式 ——Tickless Idle Mode,这个方法可以让 MCU 更长时间的处于低功耗模式。

二.Tickless Idle Mode 的原理 及实现

  1. 情景分析

    图二

上图是任务调度示意图,横轴是时间轴,T1,T2,T3,T4 是 RTOS 的时间片基准,有四个任务分别
是 TaskA,B,C,D,
Task A: 周期性任务
Task B: 周期性任务
Task C: 突发性任务
Task D: 周期性任务
从图中可以看出在四个任务进行调度之间,会有四次空闲期间(此时 RTOS 会调度 Idle 任务运行,软件设计的目标应该是尽可能使 MCU 在 Idle 任务运行时处于低功耗模式)。

Idle1: Idle 任务运行期间,会产生一次系统时钟滴答,此时会唤醒 MCU,唤醒后 MCU 又会进入低功耗模式,这次唤醒是无意义的。期望使 MCU 在 Idle1 期间一直处于低功耗模式,因此适当调整系统定时器中断使得 T1 时不触发系统时钟中断,中断触发点设置为 Task B 到来时;

Idle2:Task C 在系统滴答到达前唤醒 MCU(外部事件),MCU 可以在 Idle2 中可以一直处于低功耗模式;

Idle3: 与 Idle2 情况相同,但 Idle3 时间很短,如果这个时间很短,那么进入低功耗模式的意义并不大,
因此在进入低功耗模式时软件应该添加策略;
Idle4: 与 Idle1 情况相同。

写在最后的话
STM32 家族中拥有不同的系列,特别是专为低功耗应用设计的 L 系列,为其设计 RTOS 低功耗特性实现时可以有更多的实现方式(例,某种模式下内核停止运行,此时可以使用外部定时器或者 RTC 来代替 Systick 作为系统定时器)。

原文地址:http://blog.51cto.com/13992459/2309000

时间: 2024-10-14 13:42:20

技术分享:FreeRTOS实时内核使用指南的相关文章

【华为云技术分享】Linux内核发展史 (1)

openEuler是基于Linux 内核的企业级Linux 服务器操作系统平台的开源社区发行版.openEuler支持鲲鹏架构,可运行在TaiShan服务器上.本技术连载将会从理论基础.源码分析和实操方法三个方面来比较全面地介绍内核编程与应用编程的基础知识,到2020年8月之前主要介绍内核编程部分.通过本连载的介绍,您将对openEuler内核编程和应用编程的理论和实践知识有一个基本的了解.本小节将从Linux内核发展史出发,带您走进openEuler的世界,一起学习操作系统的基础知识和open

【华为云技术分享】Linux内核发展史 (2)

Linux是由赫尔辛基大学的Linus Torvalds开发的,在系统开发期间得到了因特网上广大UNIX程序员的帮助.它最初只是受Andy Tanenbaum教授的Minix(—个小型的类UNIX系统)启发而开发的一个程序,纯属个人爱好,但后来它逐步发展成为一个完整的系统.Linux的成功来源于其之前操作系统和应用软件的已有工作,主要是UNIX和GNU.本小结我们将介绍一下UNIX的发展简史. 一.UNIX操作系统发展历史 UNIX操作系统最初是由贝尔实验室开发的,当时的贝尔实验室是电信业巨头A

【华为云技术分享】Linux内核的分布式编译(1)

上一期中我们介绍了Linux内核模块依赖图的绘制方法,这一期中我们将介绍Linux内核的分布式编译方法和分布式编译工具distcc的安装过程. 一.Linux内核的分布式编译 分布式编译是指将源程序通过网络中的多台计算机的协同编译过程编译成目标程序的技术.分布式编译一般通过TCP或SSH等协议将编译任务分配至网络中不同的计算机上,使这些计算机协同完成编译工作.Linux内核可以使用distcc[1]进行分布式编译. distcc是一个通过网络中的多台计算机对C.C++.Objective C或O

开源技术分享:Linux 内核参数 swappiness细解

本篇文章主要是就swappiness的一个源码上的解析(基于kernel版本 v4.14-13151-g5a787756b809),仅为个人见解,有不足欢迎相互交流. 关于Swap和swappiness Swap(交换分区)是操作系统就内存不足的一个缓解.当内存紧张时候,会适当的根据一些配置值和当前的统计值进行一次判断,会把一些anon内存(分配出去的内存)交换到Swap分区中. Swappiness是系统的一个参数,可以调节swap的使用优先级.Linux文档描述如下: swappiness

【华为云技术分享】漫谈LIteOS-物联网操作系统介绍

[摘要] 本文主要对于目前物联网操作系统的定义以及主要特点进行了分析,最后介绍了几个常见的物联网操作系统. 1简介 提到操作系统,可能首先想到的就是苹果操作系统,windows,Linux,Unix,Android,IOS等,显然目前比较为人熟知的操作系统基本都是一些手机或者电脑端的操作系统.而随着互联网技术的不断发展,硬件的体积越来越小,物联网技术也迎来了爆棚式的发展.物理网不同于 互联网的不同在于后者更关注的是人与人的互联,而前者是更加强调人与物,物与物的连接,从而实现万物互联(IOT).显

Linux Kernel - Debug Guide (Linux内核调试指南 )

http://blog.csdn.net/blizmax6/article/details/6747601 linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 建立调试环境 发行版的选择和安装 安装交叉编译工具 bin工具集的使用 qemu的使用 initrd.img的原理与制作 x86虚拟调试环境的建立 arm虚拟调试环境的建立 arm开发板调试环

linux内核调试指南

linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 建立调试环境 发行版的选择和安装 安装交叉编译工具 bin工具集的使用 qemu的使用 initrd.img的原理与制作 x86虚拟调试环境的建立 arm虚拟调试环境的建立 arm开发板调试环境的建立 gdb基础 基本命令 gdb之gui gdb技巧 gdb宏 汇编基础--X86篇 用户手册 AT&

2016年12月27日 阿里云内部技术分享

Spark机器学习· 实时机器学习http://click.aliyun.com/m/8713/Redis与KV存储(RocksDB)融合之编码方式http://click.aliyun.com/m/8714/阿里技术总监郭东白:创新之歌该如何唱http://click.aliyun.com/m/8715/页面以及全站性能损耗计算http://click.aliyun.com/m/8716/三年0故障总结,提升代码质量的秘诀http://click.aliyun.com/m/8717/pytho

知乎技术分享:从单机到2000万QPS并发的Redis高性能缓存实践之路

本文来自知乎官方技术团队的"知乎技术专栏",感谢原作者陈鹏的无私分享. 1.引言 知乎存储平台团队基于开源Redis 组件打造的知乎 Redis 平台,经过不断的研发迭代,目前已经形成了一整套完整自动化运维服务体系,提供很多强大的功能.本文作者陈鹏是该系统的负责人,本次文章深入介绍了该系统的方方面面,值得互联网后端程序员仔细研究. (本文同步发布于:http://www.52im.net/thread-1968-1-1.html) 2.关于作者 陈鹏:现任知乎存储平台组 Redis 平