地瓜patch 发表于 2025-5-6 21:03

全屏显示图片,内存不够?


图片数组如下
const uint8_t gImage_taiyi_800_480 = {...}

编译提示如下,内存不够,找了半天也没找到在哪里定义内存。

qintian0303 发表于 2025-5-6 21:21

N6的内存应该是比较足的吧,而且现在的显示一般都用外挂的显存吧,纯靠内存可放不了多少

地瓜patch 发表于 2025-5-6 22:50

qintian0303 发表于 2025-5-6 21:21
N6的内存应该是比较足的吧,而且现在的显示一般都用外挂的显存吧,纯靠内存可放不了多少 ...

应该是定义了一个图片的空间,没找到在哪里定义的

远山寻你 发表于 2025-5-13 12:55

在嵌入式系统中,内存(RAM和ROM)是有限的资源。如果编译器或链接器脚本中分配的内存不足,可能会导致编译失败。

夜阑风雨 发表于 2025-5-13 13:21

在STM32CubeIDE中生成并查看汇编代码(Assembly)是调试和优化代码的重要手段,尤其是需要分析底层指令执行、性能瓶颈或验证编译器优化效果时

淡漠安然 发表于 2025-5-13 13:25

代码或数据段过大,如果你的代码或数据段(如全局变量、静态变量、数组等)占用了太多内存,可能会导致内存不足。

一秒落纱 发表于 2025-5-13 14:00

链接器脚本配置错误,链接器脚本(Linker Script)用于定义内存布局和分配。如果脚本配置不当,可能导致内存分配错误。

暖了夏天蓝了海 发表于 2025-5-13 14:50

右键项目 → Properties → C/C++ Build → Settings → Tool Settings → MCU GCC Compiler → Miscellaneous。在Other flags中添加以下选项(根据需求选择):生成汇编中间文件(.s):

三生万物 发表于 2025-5-13 16:05

编译器优化不足,未启用编译器优化可能导致生成的代码占用更多内存。

别乱了阵脚 发表于 2025-5-13 16:32

直接输出汇编文件(.s),不进行链接,适合单独分析函数编译结果

夜阑风雨 发表于 2025-5-13 17:00

检查链接器脚本确认链接器脚本(通常是.ld文件)中的内存分配是否合理。确保分配的内存足够容纳代码和数据

淡漠安然 发表于 2025-5-13 17:10

修改配置后,右键项目 → Clean Project → Build Project,确保新配置生效

江河千里 发表于 2025-5-13 17:51

调整内存大小,根据你的芯片内存大小调整LENGTH字段。

远山寻你 发表于 2025-5-13 18:08

st文件:通常位于项目的Debug或Release目录下,与源文件同名但扩展名为.lst。.s文件:若使用-S选项,汇编文件会生成在项目的Debug或Release目录中。

光辉梦境 发表于 2025-5-13 18:10

减少全局变量,尽量减少全局变量和静态变量的使用,尤其是大型数组

光辉梦境 发表于 2025-5-13 18:52

-Wa,-adhln="file.lst" 生成混合C代码与汇编的列表文件,包含行号和地址信息。 调试时关联C代码与汇编指令。-S 仅生成汇编代码(.s文件),不进行链接。 分析特定函数的编译结果。-g 生成调试信息(DWARF格式),支持源码级调试。 调试时需要符号表和行号信息。-O2/-Os 启用编译器优化(-O2平衡速度与大小,-Os最小化代码体积)。 优化后分析汇编代码的实际效果。

冰春彩落下 发表于 2025-5-13 18:59

启用编译器优化,在编译选项中启用优化(如-O2或-Os)以减少代码体积。

一秒落纱 发表于 2025-5-13 19:00

包含C代码行号与汇编指令的对应关系。注释以分号(;)开头,显示源文件和行号。

冰春彩落下 发表于 2025-5-13 19:10

找不到生成的汇编文件主要是未正确配置编译器选项。编译后未清理项目(旧文件可能被覆盖)。

江河千里 发表于 2025-5-13 19:49

Disassembly视图无内容,调试未正确启动或程序未暂停。
页: [1]
查看完整版本: 全屏显示图片,内存不够?