gpt4 book ai didi

c - freeRTOS环境下公共(public)变量的存储区

转载 作者:太空宇宙 更新时间:2023-11-04 06:12:59 26 4
gpt4 key购买 nike

全局公共(public)变量(未在任务主体内声明)存储在 FreeRTOS 环境中的什么位置?

系统中的内存大小配置将确保它们获得足够(非重叠)的存储空间,例如:

  1. configTOTAL_HEAP_SIZE 在 FreeRTOSConfig.h 中定义,或者

  2. 链接描述文件中定义的这些参数:
    _Min_Heap_Size = 0x200;/* 所需的堆数量 */
    _Min_Stack_Size = 0x400;/* 所需的堆栈数量 */

最佳答案

它们存储在全局内存中,但不是“堆上”,因为 C 编译器不会生成对 FreeRTOS heap_x.c 的调用(其中 x 是堆实现编号之一)来分配此内存,它会简单地将其填充到正确的部分,并且链接器会将该部分定位在内存中的某个位置。

用作堆后备存储的内存通常也是相同的形式,即我们在 heap_2.c 中有这个:

static uint8_t ucHeap[ configTOTAL_HEAP_SIZE ];

这只是声明一个全局变量,它是一个指定大小的数组;然后链接器会将其定位在实际内存中,就像任何其他变量一样。

这是假设一个基于闪存的平台,即不是 FreeRTOS 程序在运行时由某些代码动态加载的平台,在这种情况下,当然该代码必须适合所有部分程序进入内存,并且可能确实为此分配堆内存。

关于c - freeRTOS环境下公共(public)变量的存储区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52400875/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com