电子发烧友网 > 可编程逻辑 > FPGA/ASIC技术 > 正文

关于FreeRTOS配置项操作解读

2017年11月18日 01:27 次阅读

FreeRTOS 是高度可配置的。所有的可配置项都在FreeRTOSConfig.h 文件中。每一个Demo 程序中都包含了一个配置好的FreeRTOSConfig.h 文件,可以以Demo程序中的FreeRTOSConfig.h 文件作为模板,在其基础上加以修改。

下面先给出一个典型的FreeRTOSConfig.h 文件,然后再逐项加以说明。
#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H

/* Here is a good place to include header files that are required across
your applicaTIon. */
#include "something.h"

#define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0
#define configCPU_CLOCK_HZ 58982400
#define configTICK_RATE_HZ 250
#define configMAX_PRIORITIES 5
#define configMINIMAL_STACK_SIZE 128
#define configTOTAL_HEAP_SIZE 10240
#define configMAX_TASK_NAME_LEN 16
#define configUSE_TRACE_FACILITY 0
#define configUSE_16_BIT_TICKS 0
#define configIDLE_SHOULD_YIELD 1
#define configUSE_MUTEXES 0
#define configUSE_RECURSIVE_MUTEXES 0
#define configUSE_COUNTING_SEMAPHORES 0
#define configUSE_ALTERNATIVE_API 0
#define configCHECK_FOR_STACK_OVERFLOW 0
#define configQUEUE_REGISTRY_SIZE 10
#define configGENERATE_RUN_TIME_STATS 0

#define configUSE_CO_ROUTINES 0
#define configMAX_CO_ROUTINE_PRIORITIES 1

#define configUSE_TIMERS 1
#define configTIMER_TASK_PRIORITY 3
#define configTIMER_QUEUE_LENGTH 10
#define configTIMER_TASK_STACK_DEPTH configMINIMAL_STACK_SIZE

#define configKERNEL_INTERRUPT_PRIORITY [dependent of processor]
#define configMAX_SYSCALL_INTERRUPT_PRIORITY [dependent on processor and application]

#define configASSERT( ( x ) ) if( ( x ) == 0 ) vCallAssert( __FILE__, __LINE__ )

#define INCLUDE_vTaskPrioritySet 1
#define INCLUDE_uxTaskPriorityGet 1
#define INCLUDE_vTaskDelete 1
#define INCLUDE_vTaskSuspend 1
#define INCLUDE_xResumeFromISR 1
#define INCLUDE_vTaskDelayUntil 1
#define INCLUDE_vTaskDelay 1
#define INCLUDE_xTaskGetSchedulerState 1
#define INCLUDE_xTaskGetCurrentTaskHandle 1
#define INCLUDE_uxTaskGetStackHighWaterMark 0
#define INCLUDE_xTaskGetIdleTaskHandle 0
#define INCLUDE_xTimerGetTimerDaemonTaskHandle 0
#define INCLUDE_pcTaskGetTaskName 0

#endif /* FREERTOS_CONFIG_H */

可配置的参数

configUSE_PREEMPTION

设为 1则采用抢占式调度器, 设为 0则采用协作式调度器。

configUSE_IDLE_HOOK

设为1则使能 idle hook,设为0则禁止idle hook。

configUSE_TICK_HOOK

设为1则使能 tick hook,设为0则禁止tick hook。

configCPU_CLOCK_HZ

设置为 MCU 内核的工作频率,以Hz为单位。配置FreeRTOS的时钟Tick时会用到。对不同的移植代码也可能不使用这个参数。如果确定移植代码中不用它就可以注释掉这行。

configTICK_RATE_HZ

FreeRTOS的时钟Tick的频率,也就是FreeRTOS用到的定时中断的产生频率。这个频率越高则定时的精度越高,但是由此带来的开销也越大。FreeRTOS 自带的Demo 程序中将TickRate 设为了1000Hz只是用来测试内核的性能的。实际的应用程序应该根据需要改为较小的数值。
当多个任务共用一个优先级时,内核调度器回来每次时钟中断到来后轮转切换任务(round robin),因此,更高的Tick Rate 会导致任务的时间片“time slice”变短。

configMAX_PRIORITIES

程序中可以使用的最大优先级。FreeRTOS 会为每个优先级建立一个链表,因此没多一个优先级都会增加些RAM 的开销。所以,要根据程序中需要多少种不同的优先级来设置这个参数。

configMINIMAL_STACK_SIZE

任务堆栈的最小大小,FreeRTOS根据这个参数来给idle task 分配堆栈空间。这个值如果设置的比实际需要的空间小,会导致程序挂掉。因此,最好不要减小Demo 程序中给出的大小。

configTOTAL_HEAP_SIZE

设置堆空间(Heap)的大小。只有当程序中采用FreeRTOS 提供的内存分配算法时才会用到。

configMAX_TASK_NAME_LEN

任务名称最大的长度,这个长度是以字节为单位的,并且包括最后的 NULL 结束字节。

configUSE_TRACE_FACILITY

如果程序中需要用到TRACE功能,则需将这个宏设为1。否则设为0。开启TRACE功能后,RAM占用量会增大许多,因此在设为1之前请三思。

configUSE_16_BIT_TICKS

将 configUSE_16_BIT_TICKS设为 1后portTickType 将被定义为无符号的16位整形类型,configUSE_16_BIT_TICKS 设为0 后portTickType 则被定义为无符号的32位整型。

configIDLE_SHOULD_YIELD

这个参数控制那些优先级与idle 任务相同的任务的行为,并且只有当内核被配置为抢占式任务调度时才有实际作用。

内核对具有同样优先级的任务会采用时间片轮转调度算法。当任务的优先级高于idle任务时,各个任务分到的时间片是同样大小的。

技术专区

关注电子发烧友微信

有趣有料的资讯及技术干货

下载发烧友APP

打造属于您的人脉电子圈

关注发烧友课堂

锁定最新课程活动及技术直播
收藏 人收藏
分享:

评论

相关推荐

本文讨论并演示如何使用 Amazon FreeR...

发表于 2018-03-28 16:41 97次阅读
本文讨论并演示如何使用 Amazon FreeR...

为你的51单片机移植上实时操作系统RTOS吧

发表于 2018-03-04 15:51 450次阅读
为你的51单片机移植上实时操作系统RTOS吧

发一个自制的RTOS,适合学习和极简开发

发表于 2018-03-03 01:29 437次阅读
发一个自制的RTOS,适合学习和极简开发

如何将RTOS添加到ZYNQ SoC设计中

任何开发 ZYNQ SoC 设计有大量的操作系统可供选择,并根据最终应用程序,你可以选择一个实时版本...

发表于 2018-02-15 05:41 290次阅读
如何将RTOS添加到ZYNQ SoC设计中

real6410_android开发板

发表于 2018-02-03 14:20 296次阅读
real6410_android开发板

FreeRTOS实时内核使用指南_中文

发表于 2018-02-03 14:17 243次阅读
FreeRTOS实时内核使用指南_中文

FreeRTOS入门手册_中文

发表于 2018-02-03 14:15 340次阅读
FreeRTOS入门手册_中文

基于LPCXpresso54608 | 第二期FreeRTOS高阶培训震撼来袭!

发表于 2018-02-01 14:13 544次阅读
基于LPCXpresso54608 | 第二期FreeRTOS高阶培训震撼来袭!

寻QNX RTOS高手

发表于 2018-02-01 10:32 421次阅读
寻QNX RTOS高手

基于嵌入式软件开发的裸跑与RTOS的选用时机分析

在嵌入式软件领域,裸跑与RTOS,总是永恒茶余饭后。其实软件编程,就像治国之道,没听说过新加坡这样的...

发表于 2018-01-23 11:50 1117次阅读
基于嵌入式软件开发的裸跑与RTOS的选用时机分析

通过实例的3种方法来告诉你使用RTOS的好处

总而言之,适用的就是最好的,不要拒绝RTOS,在它适用的情况下,它工作得很好。

发表于 2018-01-19 15:07 1378次阅读
通过实例的3种方法来告诉你使用RTOS的好处

FreeRTOS学习及移植笔记之二:在IAR和STM32F103VET上移植FreeRTOS

发表于 2018-01-07 10:56 167次阅读
FreeRTOS学习及移植笔记之二:在IAR和STM32F103VET上移植FreeRTOS

FreeRTOS学习及移植笔记之一:开始FreeRTOS之旅

发表于 2018-01-05 09:32 160次阅读
FreeRTOS学习及移植笔记之一:开始FreeRTOS之旅

如何安装实时操作系统RTOS

要想最大限度地发挥Zynq All Programmable SoC的优势,您需要一款操作系统。本文...

发表于 2017-11-18 10:08 387次阅读
如何安装实时操作系统RTOS

基于FreeRTOS的嵌入式实时操作系统的原理和...

FreeRTOS是一个源码公开的免费的嵌入式实时操作系统,通过研究其内核可以更好地理解嵌入式操作系统...

发表于 2017-11-18 03:34 569次阅读
基于FreeRTOS的嵌入式实时操作系统的原理和...

FreeRTOS嵌入式开源实时操作系统介绍

FreeRTOS是一个嵌入式系统使用的开源实时操作系统。FreeRTOS被设计为“小巧,简单,和易用...

发表于 2017-11-18 03:30 425次阅读
FreeRTOS嵌入式开源实时操作系统介绍

精准解读FreeRTOS的十三大特性

实时性:FreeRTOS “可以”配置成为一个硬(Hard)实时操作系统内核。要注意这里用的是“可以...

发表于 2017-11-18 02:28 142次阅读
精准解读FreeRTOS的十三大特性

freertos使用指南与各类型函数详细说明

FreeRTOS 内核支持优先级调度算法,每个任务可根据重要程度的不同被赋予一定的优先级,下面说明了...

发表于 2017-11-18 02:08 427次阅读
freertos使用指南与各类型函数详细说明

FreeRTOS源代码结构与基本目录

下载的FreeRTOS包含每种处理器体系的源代码以及范例程序。把所有体系的源代码打包可以方便分发,但...

发表于 2017-11-18 02:02 167次阅读
FreeRTOS源代码结构与基本目录

浅析FreeRTOS源代码的编程标准与命名约定

编程标准 (Coding Standard) FreeRTOS 源代码遵守 MISRA (Motor...

发表于 2017-11-18 02:01 141次阅读
浅析FreeRTOS源代码的编程标准与命名约定

FreeRTOS 中的链表和链表元素的定义

FreeRTOS 内核中采用双向循环链表来进行任务调度,对任务总数没有限制,同一优先级的任务数也没有...

发表于 2017-11-18 01:28 94次阅读
FreeRTOS 中的链表和链表元素的定义

FreeRTOS软件定时器编程教程

软件定时器本质上是一个周期性的任务或单次执行任务。

发表于 2017-11-17 13:21 159次阅读
FreeRTOS软件定时器编程教程

在Zynq平台运行SmallRTOS实时操作系统...

SmallRTOS是一个源代码开放的、易于移植的、面向深度嵌入式应用的微内核实时操作系统,主要应用领...

发表于 2017-11-17 10:51 342次阅读
在Zynq平台运行SmallRTOS实时操作系统...

微型嵌入式实时操作系统SmallRTOS常用接口...

微型嵌入式实时操作系统SmallRTOS是一个源代码开放的、易于移植的、面向深度嵌入式应用的微内核实...

发表于 2017-11-17 07:24 111次阅读
微型嵌入式实时操作系统SmallRTOS常用接口...

FreeRTOS-uC-OS-III_Conversion_FL

发表于 2017-10-31 12:37 637次阅读
FreeRTOS-uC-OS-III_Conversion_FL

几位嵌入式技术大牛:嵌入式操作系统那么多,如何选...

物联网、人工智能的发展都离不开嵌入式系统,工程师对嵌入式操作系统的要求也由简单易用上升到既要简单易用...

发表于 2017-09-11 14:57 7887次阅读
几位嵌入式技术大牛:嵌入式操作系统那么多,如何选...

一个十余年历史的国产RTOS,从RT-Threa...

本文将为大家简要介绍一下笔者使用和学习RT-Thread过程中的体会和感悟,希望能帮助初识RT-Th...

发表于 2017-09-05 16:46 3561次阅读
一个十余年历史的国产RTOS,从RT-Threa...

大神告诉你:就这样来学嵌入式系统

网上或书上泛滥成灾的定义是:嵌入式系统是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统...

发表于 2017-06-14 07:33 1493次阅读
大神告诉你:就这样来学嵌入式系统

成功免费学!3天开发一个RTOS挑战

小E掐指一算,端午节是2017年的法定节假日仅剩的两次之一了,还不趁着假期深度学习提升自己一把。小E...

发表于 2017-05-27 11:37 0次阅读
成功免费学!3天开发一个RTOS挑战

TI-RTOS 让电源管理系统设计毫不费劲!

今天,我们推出了TI-RTOS 2.12 我们用来加快开发物联网(IoT)应用的软件平台。对许多Io...

发表于 2017-04-26 17:07 376次阅读
TI-RTOS 让电源管理系统设计毫不费劲!

TI-RTOS 2.12 加快电源管理应用开发

今天,我们推出了TI-RTOS 2.12 我们用来加快开发物联网(IoT)应用的软件平台。对许多Io...

发表于 2017-04-26 17:07 223次阅读
TI-RTOS 2.12 加快电源管理应用开发

MSP432 MCU 提供多个实时操作系统 (R...

当你需要提升产品性能时,你也许会考虑将你现有MSP430 MCU设计移植到TI全新高性能MSP432...

发表于 2017-04-26 16:30 330次阅读
MSP432 MCU 提供多个实时操作系统 (R...

Green Hills Software 和 ...

可为需要即时性能、安全性与可靠度的系统提供超高效率的处理能力 2017年3月20日 ——全球最大的物...

发表于 2017-04-18 11:16 275次阅读
 Green Hills Software 和 ...

Imagination 和 Express Lo...

Express Logic 的 ThreadX RTOS 现已支持 MIPS 64 位 I6400 ...

发表于 2017-04-10 10:12 274次阅读
Imagination 和 Express Lo...

从0到1,嵌入式开发就这么简单!

嵌入式技术高速发展的今天,企业对专业的嵌入式开发人才的需求也越来越大,无论是从行业发展前景还是薪资待...

发表于 2017-03-09 18:40 2989次阅读
从0到1,嵌入式开发就这么简单!

Zynq中使用FreeRTOS的空闲钩子函数时在...

本文介绍zynq中使用FreeRTOS的空闲钩子函数时在SDK中的设置和一些说明

发表于 2017-03-09 14:33 484次阅读
Zynq中使用FreeRTOS的空闲钩子函数时在...

优化的Micrium OS和新Platform ...

Micrium OS是最新发展的、通过验证的嵌入式μC/ OS™实时操作系统(RTOS),目前已经...

发表于 2017-03-08 11:14 440次阅读
优化的Micrium OS和新Platform ...

Adam Taylor玩转MicroZed:Fr...

在上一篇博客中成功地演示了FreeRTOS并在基于Zynq的MicroZed板上运行之后,显然我们想...

发表于 2017-02-11 10:03 202次阅读
Adam Taylor玩转MicroZed:Fr...

Adam Taylor玩转MicroZed:Mi...

如何获得FreeRTOS演示并且在MicroZed上运行。FreeRTOS由Real Time En...

发表于 2017-02-11 10:03 208次阅读
Adam Taylor玩转MicroZed:Mi...

国内嵌入式操作系统权威专家驾临苏州,2个小时教你...

随着物联网的发展,未来的嵌入式产品必然更为复杂、连接性更强以及需要更丰富的用户界面。当处理这些任务时...

发表于 2016-11-01 11:59 577次阅读
国内嵌入式操作系统权威专家驾临苏州,2个小时教你...

MicroEJ和Micrium Software...

2016年10月21日 -MicroEJ®与Silicon Labs(亦名“芯科科技”)投资的Mic...

发表于 2016-10-21 15:30 373次阅读
MicroEJ和Micrium Software...

SILICON LABS收购领先RTOS厂商MI...

Silicon Labs(亦名“芯科科技”)今日宣布收购在业界领先的物联网(IoT)实时操作系统(R...

发表于 2016-10-09 10:24 318次阅读
SILICON LABS收购领先RTOS厂商MI...

Zephyr物联网操作系统模块化内核设计带来完美...

为支持最小尺寸的物联网设备,Linux 基金会发布了 Zephyr物联网操作系统,旨在为物联网设备创...

发表于 2016-07-28 11:05 537次阅读
Zephyr物联网操作系统模块化内核设计带来完美...

物联网时代,十岁RT-Thread欲再攀高峰

随着物联网的发展,对RTOS产生了新的需求,对于国内厂商来说,也是一大挑战, 国产的开源嵌入式实时操...

发表于 2016-07-27 15:20 1138次阅读
物联网时代,十岁RT-Thread欲再攀高峰

技术干货:MCU专用RTOS种类盘点

微控制器(MCU)广泛应用在各行各业,如各式家电、工业自动化,即时控制、资料采集等领域,为因应工控所...

发表于 2015-05-08 10:16 5166次阅读
技术干货:MCU专用RTOS种类盘点

麻雀虽小 五脏俱全:MCU专用RTOS简述

微控制器(MCU)广泛应用在各行各业,如各式家电、工业自动化,实时控制、资料采集等领域,为因应工控所...

发表于 2015-05-07 11:01 2219次阅读
麻雀虽小 五脏俱全:MCU专用RTOS简述

TI-RTOS 2.12将高级电源管理能力引入互...

2015年4月10日,北京讯。随着物联网 (IoT) 在日常用品中应用范围的逐步扩大,简化针对互连应...

发表于 2015-04-10 12:03 581次阅读
TI-RTOS 2.12将高级电源管理能力引入互...

市占率超对手两倍,风河领先全球嵌入式市场

全球领先的智能互联系统软件提供商风河®公司宣布,根据VDC Research的最新市场调查结果,风河...

发表于 2014-12-15 15:37 404次阅读
市占率超对手两倍,风河领先全球嵌入式市场

风河推出新一代物联网RTOS集成虚拟化技术

全球领先的智能互联系统嵌入式软件提供商风河®公司近日宣布,针对其市场领先的新一代VxWorks® R...

发表于 2014-08-27 21:26 300次阅读
风河推出新一代物联网RTOS集成虚拟化技术

德州仪器推出实时操作系统TI-RTOS

德州仪器 (TI) 宣布推出面向 MCU平台、基于抢占式多线程内核的完整实时操作系统 TI-RTOS...

发表于 2012-12-17 13:35 1550次阅读
德州仪器推出实时操作系统TI-RTOS

改进型时间触发嵌入式系统编程模式

目前,RTOS特别是抢先式RTOS在嵌入式系统中的应用越来越广泛,但是还有很大一部分产品使用是小型单...

发表于 2012-11-23 11:27 838次阅读
改进型时间触发嵌入式系统编程模式

嵌入式软件技术的缺陷查找方法:三个常见问题

本文将介绍如何避免那些隐蔽然而常见的错误,并介绍的几个技巧帮助工程师发现软件中隐藏的错误。大部分软件...

发表于 2012-10-15 10:54 434次阅读
嵌入式软件技术的缺陷查找方法:三个常见问题

Wind River VxWorks支援Spri...

全球嵌入式及行动应用软体厂商美商温瑞尔(Wind River)近日宣布,Ubee-AirWALK公司...

发表于 2012-09-25 09:41 305次阅读
Wind River VxWorks支援Spri...

基于MSP430的实时多任务操作系统

一般的观点认为,MSP430上使用RTOS是没有意义的这是可以理解的。因为MSP430的硬件资源有限...

发表于 2012-08-10 14:41 2170次阅读
基于MSP430的实时多任务操作系统

NASA好奇号安度“恐怖7分钟” 嵌入式建奇功

在NASA JPL(美国国家航空航天局喷气推进实验室)火星科学实验室(Mars Science La...

发表于 2012-08-08 09:29 1408次阅读
NASA好奇号安度“恐怖7分钟” 嵌入式建奇功

RTX实时操作系统平台拓展IntervalZer...

IntervalZero Inc.的RTX软件将微软Windows改造成了一个实时操作系统(RTOS...

发表于 2012-05-24 10:09 2529次阅读
RTX实时操作系统平台拓展IntervalZer...

RTOS分析:您何时需要实时操作系统?

大部分嵌入式项目还需要实时操作系统吗?这个问题问得好,因为现代高性能处理器和 Linux、Windo...

发表于 2012-05-09 10:43 4227次阅读
RTOS分析:您何时需要实时操作系统?

RT-Thread 1.0.1正式版发布

RT-Thread是一款国产的实时操作系统核心,是一个高效的硬实时核心,它具备非常优异的实时性、稳定...

发表于 2012-04-23 11:27 2000次阅读
RT-Thread 1.0.1正式版发布

基于RTOS的太阳能热水控制系统设计

本方案从如何更好解决小区和楼群内居民的生活用热水问题出发,利用绿色环保的太阳能为主要能量来源,以楼为...

发表于 2011-08-19 14:39 312次阅读
基于RTOS的太阳能热水控制系统设计

基于RTOS与DSPs的微机保护装置

随着微电子和半导体技术的发展,DSPs已运用在了众多领域。由于DSPs的强大数字信号处理能力,越来越...

发表于 2011-08-16 10:51 475次阅读
基于RTOS与DSPs的微机保护装置

FreeRTOS嵌入式实时操作系统

  1 FreeRTOS操作系统功能   作为一个轻量级的操作系统,FreeRTOS提供的功能包括...

发表于 2011-07-06 11:07 4690次阅读
FreeRTOS嵌入式实时操作系统

基于FPGA的μC/OS-II任务管理硬件设计

实时操作系统RTOS(Real Time Operating System)由于具有调度的实时性、响...

发表于 2011-01-07 10:13 222次阅读
基于FPGA的μC/OS-II任务管理硬件设计

自制式嵌入式系统RTOS

  为了维持对软件编码的控制并减少商业操作系统的成本,“自制式”嵌入式系统的设计者们一直努力在他们在...

发表于 2010-09-14 17:48 790次阅读
自制式嵌入式系统RTOS

Linux替代RTOS移植

考虑Linux的种种原因包括:广泛的硬件支持、更高的可靠性、更优异的性能、可扩展性以及更快的响应速度...

发表于 2010-07-14 16:41 942次阅读
Linux替代RTOS移植

基于FPGA及RTOS操作系统的码流分析仪设计

本文提出一种性价比较好的补充设计方案,它以通用的FPGA和RTOS为基础、基于嵌入式硬件平台来实现码...

发表于 2010-07-01 10:57 421次阅读
基于FPGA及RTOS操作系统的码流分析仪设计

建立一个属于自己的AVR的RTOS

  序     自从03...

发表于 2006-04-17 20:04 2631次阅读
建立一个属于自己的AVR的RTOS

Express LogicRTOS支持ARC70...

    Express Logic公司的ThreadX实时操作系统(R...

发表于 2006-03-13 13:09 289次阅读
Express LogicRTOS支持ARC70...