当前位置: 首页 > news >正文

STM32H723ZGT6-修改内存分布以定义很大的数组

文章目录

  • 问题情境
  • 解决方案

问题情境

L6406E: No space in execution regions with .ANY selector matching以及L6407E: Sections of aggregate size 0x4e0 bytes could not fit into .ANY selector(s)是内存分配不足导致的。程序分配的 .bss 和 .data 段(也就是全局变量、静态变量的未初始化和已初始化部分)超出了链接脚本分配给RAM(SRAM、DTCM、AXI SRAM等)的空间。
例如:

No space in execution regions with .ANY selector matching main.o(.bss.max_idxA)

表示 main.o 文件中的 max_idxA 变量找不到足够的RAM空间来放置。
STM32H7系列有多个RAM区域(如 DTCMRAM, SRAM1, SRAM2, AXI_SRAM),如果链接脚本只分配了很小的一个区域,或者分配不合理,就会导致可用RAM不够。
在这里插入图片描述

解决方案

在项目里搜索到 .sct 文件。
取消勾选以编辑。
在这里插入图片描述
文件内容如下:

LR_IROM1 0x08000000 0x00100000  {    ; load region size_regionER_IROM1 0x08000000 0x00100000  {  ; load address = execution address*.o (RESET, +First)*(InRoot$$Sections).ANY (+RO).ANY (+XO)}RW_IRAM2 0x24000000 0x00020000  {  ; RW data.ANY (+RW +ZI)}
}

LOAD REGION 大小 1MB
Execution Region 大小 1MB
Read Write 128KB: 数据段和未初始化段(变量、数组等)分配到的内存区域——也就是 AXI SRAM,只分配了 128KB。
解决方法:增大 AXI SRAM 分区。STM32H723 的 AXI SRAM 实际上是512KB(0x80000)。

RW_IRAM2 0x24000000 0x00080000  {  ; 512KB AXI SRAM.ANY (+RW +ZI)
}

这样就有 512KB 内存可用。

相关文章:

  • HarmonyOS 公共事件机制介绍以及多进程之间的通信实现(9000字详解)
  • FPGA实现CameraLink视频解码,基于Xilinx ISERDES2原语,提供4套工程源码和技术支持
  • 闲庭信步使用SV搭建图像测试平台:第十九课——YCbCr图像转RGB图像
  • 多模态大语言模型arxiv论文略读(143)
  • python基础23(2025.6.29)分布式爬虫(增量式爬虫去重)redis应用_(未完成!)
  • Vue列表渲染与数据监测原理
  • win上对调ctrl和alt键
  • Gemini cli Quickstart
  • Conda 环境配置之 -- Mamba安装(causal-conv1d、mamba_ssm 最简单配置方法)-- 不需要重新配置CDUA
  • 【FreeRTOS-任务通知】
  • 【Linux高级全栈开发】2.4 自研框架:基于 dpdk 的用户态协议栈的实现
  • 数据结构 哈希表、栈的应用与链式队列 6.29 (尾)
  • 模拟工作队列 - 华为OD机试真题(JavaScript卷)
  • Python 数据分析与可视化 Day 11 - 特征工程基础
  • 从0开始学linux韦东山教程Linux驱动入门实验班(3)
  • python中多线程:线程插队方法join详解、线程停止、通过变量来让线程停止
  • Java面试宝典:基础五
  • 【数据集】中国2016-2022年 城市土地利用数据集 CULU
  • 操作系统学习笔记 | 操作系统常见问题整理
  • AlphaFold3安装报错