FreeRTOS学习(七)

7 系统裁剪

  • 7.1 简介
    FreeRTOS中的系统裁剪和配置其实是通过条件编译的方法来实现的,不止FreeRTOS这么干,很多的协议栈、RTOS系统和GUI库都是使用条件编译的方法来完成配置和裁剪的。在第二章使用静态函数的时候,看到在tasks.c文件中会有如下的代码
    在这里插入图片描述
    可以看出当configSUPPORT_STATIC_ALLOCATION的值为1时,静态创建函数才会被编译。条件编译的好处就是节省空间,不需要的功能就不编译。这样就可以根据实际需求来减少系统占用的ROM和RAM大小,根据自己所使用的MCU来调整系统消耗,降低成本。
    FreeRTOS这些宏的定义,即实现配置的过程都是通过FreeRTOSConfig.h和FreeRTOS.h中使用“#define”这样的语句来实现宏定义的。

  • 7.2 “INCLUDE_”开始的宏
    上面介绍的配置文件中以“INCLUDE_”开头的宏,表示的是FreeRTOS中的宏函数的开关,当相对应的开关宏打开的时候,相应的宏函数才能够使用。
    比如,我们要使用vTaskDelay()的话就需要在文件FreeRTOSConfig.h中将宏INCLUDE_vTaskDelay设置为1。
    在这里插入图片描述

一些单功能可以被裁剪的API函数的定义格式都是这样,都是以“INCLUDE_”+函数名称的方式定义。我们使用的类似Source Insight这样的工具,可以直接帮我们跳到API函数定义的地方。但是如果这个函数被裁剪掉了,那么我们使用这个函数的时候,这个函数拼写完成后的名称会是黑色,而且无法跳转到函数定义的地方。这时候就可以根据自己的需求到FreeRTOSConfig.h和FreeRTOS.h文件中打开对应的开关宏,最好在我们使用结束之后关闭对应的宏,下次使用的时候可以节省资源。

  • 7.3 “config”开始的宏
    以“config”开始的宏通常对应某种功能的开关,如我们上面所说的configSUPPORT_STATIC_ALLOCATION表示静态应用的支持设置。这个宏的设置为1或0,和静态创建函数xTaskCreateStatic的定义有关,而且与空闲任务和定时器服务任务的创建函数函数都相关,还可能对应着多个函数或者变量的定义和使用。
    在这里插入图片描述
    在这里插入图片描述
    而且,如果我们搜索这个宏会发现,还有很多地方都和它相关:

使用“INCLUDE_”开始的宏去一一进行条件编译会比较麻烦,所以使用“config”开始的宏统一进行条件编译会比较方便我们的使用,使用这个功能的时候只要把这个宏设置为1,其他对应的变量和函数都会被编译。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值