单片机/MCU论坛
直播中

tr4578

9年用户 1018经验值
擅长:模拟技术
私信 关注

modustoolbox在正常编译中通过工程下增强了全局变量数组的长度后报错了怎么解决?

客户使用modustoolboxdevelpcy8c6245azi-s3D72,在正常编译中通过工程下增强了全局变量数组的长度,结果编译报导不错,初始化是内存超越了。通过对比发现.bss的大小最小是25292,如附件描述,请帮忙确认识别本原因并提供解决方案,谢谢谢谢!

回帖(2)

刘丹芹

2024-1-25 14:11:14
有两种方法可以解决这个问题:
第一种:自己去看工程中那个大的 bipratter vopendensave 的数组,如果是常量,建议定义成常量类型(定义成常量类类型就放在 flash 中),这样可以节省内存空间
第二种:可以适应修复 fependimphempm0和M4内存的大小,m0的ramspacepace 改小一些,m4的ramspacepaceminmapience 放大一些(m0的链接文件中ram的长度适时小改小一点)
建建议第一种方法,因为第二种方法中途法能挪威给M4B的存档也没有多少
举报

丁冬芹

2024-1-26 09:52:27
首先,您可以尝试以下解决方案:

1. 检查代码中全局变量数组的定义和使用,确保没有错误的访问或越界操作。确保数组长度的增加是必要的,并且没有其他地方的问题导致内存溢出。

2. 检查工程的配置文件,确认编译器的设置和参数是否正确。特别注意编译器选项中关于内存布局和优化的设置,可能需要调整这些参数以适应新添加的全局变量数组。

3. 对比修改之前的编译器报错和修改后的报错,看看具体是哪一部分导致了内存溢出。可能是其他地方的代码或数据也参与了内存分配,需要对这些部分进行优化或调整。

4. 如果您确定是全局变量数组的长度增加导致的内存溢出问题,可以考虑以下解决方案:
   - 尝试优化全局变量数组的使用,避免不必要的内存占用。
   - 考虑使用动态内存分配,例如使用堆上的变量或动态数组,以减少全局数组的内存占用。
   - 如果可能,尝试分割全局数组为多个较小的数组,以便更好地利用内存。

5. 如果以上方法都无效,您可以尝试与ModusToolbox的支持团队联系,寻求他们的帮助和指导。他们可能会提供与您的特定硬件和工具链相关的解决方案。

请注意,这些是一般的解决方案,根据具体情况可能会有所不同。建议您根据具体问题进行调整和尝试。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分