This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TM4C123GH6PZ:FreeRTOS 功能使用的 SRAM 多于可用的 SRAM

Guru**** 2466550 points
Other Parts Discussed in Thread: TM4C123GH6PZ

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1468682/tm4c123gh6pz-freertos-functions-use-more-sram-than-is-available

器件型号:TM4C123GH6PZ

工具与软件:

您好!

我正在尝试在 TM4C 线路上使用 FreeRTOS。 我在 Esprsif 微控制器上使用过它、但在 TI 的微控制器上使用过。

我有一个程序、如果没有使用任何 FreeRTOS 函数、则根据.map 文件、该程序仅使用0x614字节的 SRAM。  当我添加一个 FreeRTOS 函数(到目前为止、我已经尝试了 vTaskDelay 和 xTaskCreate)时、我收到一个错误:

"../tm4c123gh6pz.cmd"、第40行:错误#10099-D:程序无法装入可用内存、或者该段包含一个调用站点、该调用站点需要无法为此段生成 trampoline。 针对段".bss"大小0x842b"运行对齐放置失败。

我认为这可能是由于某些工程属性或 FreeRTOS 配置设置不正确所致。 但是、当我编译为 TM4C123GXL Launchpad 提供的示例项目"freertos_demo"时、我注意到它也会使用大量内存、几乎所有可用的32KB SRAM 都用于简单的演示。

这看起来不正确。 如果 FreeRTOS 必须使用大量存储器、则在该微控制器上使用该器件将不切实际、因为没有其他空间。 我的问题是、是否有办法配置 FreeRTOS 和/或工程设置、以便使用较少的 SRAM?

未更改我的.cmd 文件的默认值。 我将使用随示例提供的相同 FreeRTOSConfig.h、但未进行任何修改。 我添加了与示例中所用相同的 FreeRTOS C 文件。

谢谢你

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    FreeRTOS 的 SRAM 使用量很大一部分位于堆中。 堆大小由 MemMang 源的选择部分控制、其中的"heap_N.c"中的一个、其中 N=[1、2、3、或4]。

    看起来 FreeRTOS_DEMO 使用 heap_2.c、该命令仅声明了一个大小数组[configTOTAL_HEAP_SIZE]、该数组在 FreeRTOSConfig.h 中设置为30000 (非常接近32KB)。

    你可能不需要非常多的堆、因此请尝试调整  configTOTAL_HEAP_SIZE。 我想10KB (甚至更少)已经足够了。