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

相关文章

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总

关于Docker Desktop的WSL报错问题解决办法

《关于DockerDesktop的WSL报错问题解决办法》:本文主要介绍关于DockerDesktop的WSL报错问题解决办法的相关资料,排查发现是因清理%temp%文件夹误删关键WSL文件,... 目录发现问题排查过程:解决方法其实很简单:重装之后再看就能够查到了:最后分享几个排查这类问题的小www.cp

电脑开机提示krpt.dll丢失怎么解决? krpt.dll文件缺失的多种解决办法

《电脑开机提示krpt.dll丢失怎么解决?krpt.dll文件缺失的多种解决办法》krpt.dll是Windows操作系统中的一个动态链接库文件,它对于系统的正常运行起着重要的作用,本文将详细介绍... 在使用 Windows 操作系统的过程中,用户有时会遇到各种错误提示,其中“找不到 krpt.dll”

QT移植到RK3568开发板的方法步骤

《QT移植到RK3568开发板的方法步骤》本文主要介绍了QT移植到RK3568开发板的方法步骤,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录前言一、获取SDK1. 安装依赖2. 获取SDK资源包3. SDK工程目录介绍4. 获取补丁包二