You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将8位AVR项目迁移至STM32G030C8时遭遇RAM不足问题求助

STM32G030C8移植FreeRTOS+LCD时RAM不足问题排查

背景与问题

  • 原有项目:基于ATmega4809(6KiB RAM),运行FreeRTOS+128×128点阵显示屏,开启-O1优化后,程序内存占用46114字节(93.8%),数据内存占用4789字节(77.9%),可正常运行。
  • 新移植项目:采用STM32G030C8(8KiB RAM),遇到以下问题:
    • 基于HAL/CMSIS_V2部署FreeRTOS时无法适配,已关闭所有未用功能、选择与原项目一致的heap_1内存管理方案,仅CMSIS_V1能成功烧录基础FreeRTOS项目。
    • 加入LCD显示代码后立即出现RAM不足,尚未完成AVR代码的完整迁移就触发该问题。

细节疑问

  • 字库存储:AVR项目用PROGMEM将字库表存于Flash,STM32项目用const修饰字库表以放入Flash,确认该部分未占用RAM。
  • LCD帧缓冲区:定义为uint8_t buffer[2048],怀疑编译器是否错误将其编译为2048个32位值,导致RAM占用翻倍。

更新信息

移除FreeRTOS仅保留LCD代码时,执行arm-none-eabi-size命令得到以下输出:

arm-none-eabi-size  STM32G030C8-48pin.elf 
   text    data     bss     dec     hex filename
  33136     180    6804   40120    9cb8 STM32G030C8-48pin.elf
  • 从输出可见2KB的LCD帧缓冲区已正常分配,但存在1.5KB的.user_heap_stack段,疑问FreeRTOS的heap_1是否已经接管了堆栈管理,为何仍存在这个默认的堆栈段占用RAM。

内容的提问来源于stack exchange,提问作者user3411864

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 18:53:33