stm32移植u8g2库内存不足解决办法

2023-10-24 23:20

本文主要是介绍stm32移植u8g2库内存不足解决办法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.现象

跟着视频教程移植完u8g2库到stm32f103c8t6后,进行编译,报了100多个空间不足的问题,如下图。

..\Output\Output.axf: Error: L6406E: No space in execution regions with .ANY selector matching u8g2_fonts.o(.constdata).
..\Output\Output.axf: Error: L6406E: No space in execution regions with .ANY selector matching u8g2_font.o(i.u8g2_font_decode_glyph).
..\Output\Output.axf: Error: L6406E: No space in execution regions with .ANY selector matching u8x8_d_ssd1306_128x64_noname.o(.constdata).
..\Output\Output.axf: Error: L6406E: No space in execution regions with .ANY selector matching stm32f10x_gpio.o(i.GPIO_Init).
..\Output\Output.axf: Error: L6406E: No space in execution regions with .ANY selector matching u8x8_d_ssd1306_128x64_noname.o(i.u8x8_d_ssd1306_sh1106_generic).
..\Output\Output.axf: Error: L6406E: No space in execution regions with .ANY selector matching u8g2_ll_hvline.o(i.u8g2_ll_hvline_vertical_top_lsb).
……

2.原因

直接打开u8g2的csrc移植程序的文件夹,将所有文件按照大小进行排列。如下图:
在这里插入图片描述
可以看到两个字库文件都特别大。然后打开这两个.c文件可知,每一个字库都是const定义的全局常量,这些在编译时会占用大量的内存。而我们常用的字库不过是那一两个,或者某几个特定的字库,所以需要对这两个字库进行瘦身(删除那些不常用的,保留一两个常用的)。

但需要注意,当我们以后需要使用其他字库时,就要将其从移植的源文件中添加进来。

3.解决方法

直接打开u8g2_fonts.c文件,暂时只保留了u8g2_font_inb24_mf和u8g2_font_wqy12_t_chinese1两个字库。文件大小直接变成52KB。如下图:在这里插入图片描述
在这里,再次进行编译,已经不会再报内存不足的错误了。另一个u8x8_fonts.c的修改方法也是大同小异的,由于没有内存不足的报错,我也没再去修改它了,可能以后再发生内存不足时我就要对它下手了。

这篇关于stm32移植u8g2库内存不足解决办法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/278438

相关文章

解决docker目录内存不足扩容处理方案

《解决docker目录内存不足扩容处理方案》文章介绍了Docker存储目录迁移方法:因系统盘空间不足,需将Docker数据迁移到更大磁盘(如/home/docker),通过修改daemon.json配... 目录1、查看服务器所有磁盘的使用情况2、查看docker镜像和容器存储目录的空间大小3、停止dock

前端导出Excel文件出现乱码或文件损坏问题的解决办法

《前端导出Excel文件出现乱码或文件损坏问题的解决办法》在现代网页应用程序中,前端有时需要与后端进行数据交互,包括下载文件,:本文主要介绍前端导出Excel文件出现乱码或文件损坏问题的解决办法,... 目录1. 检查后端返回的数据格式2. 前端正确处理二进制数据方案 1:直接下载(推荐)方案 2:手动构造

javacv依赖太大导致jar包也大的解决办法

《javacv依赖太大导致jar包也大的解决办法》随着项目的复杂度和依赖关系的增加,打包后的JAR包可能会变得很大,:本文主要介绍javacv依赖太大导致jar包也大的解决办法,文中通过代码介绍的... 目录前言1.检查依赖2.更改依赖3.检查副依赖总结 前言最近在写项目时,用到了Javacv里的获取视频

vscode不能打开终端问题的解决办法

《vscode不能打开终端问题的解决办法》:本文主要介绍vscode不能打开终端问题的解决办法,问题的根源是Windows的安全软件限制了PowerShell的运行,而VSCode默认使用Powe... 遇到vscode不能打开终端问题,一直以为是安全软件限制问题,也没搜到解决方案,因为影响也不大,就没有管

Spring Boot中JSON数值溢出问题从报错到优雅解决办法

《SpringBoot中JSON数值溢出问题从报错到优雅解决办法》:本文主要介绍SpringBoot中JSON数值溢出问题从报错到优雅的解决办法,通过修改字段类型为Long、添加全局异常处理和... 目录一、问题背景:为什么我的接口突然报错了?二、为什么会发生这个错误?1. Java 数据类型的“容量”限制

Python运行中频繁出现Restart提示的解决办法

《Python运行中频繁出现Restart提示的解决办法》在编程的世界里,遇到各种奇怪的问题是家常便饭,但是,当你的Python程序在运行过程中频繁出现“Restart”提示时,这可能不仅仅是令人头疼... 目录问题描述代码示例无限循环递归调用内存泄漏解决方案1. 检查代码逻辑无限循环递归调用内存泄漏2.

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

MySQL错误代码2058和2059的解决办法

《MySQL错误代码2058和2059的解决办法》:本文主要介绍MySQL错误代码2058和2059的解决办法,2058和2059的错误码核心都是你用的客户端工具和mysql版本的密码插件不匹配,... 目录1. 前置理解2.报错现象3.解决办法(敲重点!!!)1. php前置理解2058和2059的错误

Docker镜像pull失败两种解决办法小结

《Docker镜像pull失败两种解决办法小结》有时候我们在拉取Docker镜像的过程中会遇到一些问题,:本文主要介绍Docker镜像pull失败两种解决办法的相关资料,文中通过代码介绍的非常详细... 目录docker 镜像 pull 失败解决办法1DrQwWCocker 镜像 pull 失败解决方法2总