您尚未登录。

#1 Re: 工业芯 匠芯创 » D13CBS LVGL+FreeType多次显示不同汉字导致内存增加 » 2025-06-13 00:06:46

这种问题也是随机出现;
环境:从SPI NAND文件系统中加载了3个不同的矢量字库,其中出问题的字库都是包含有中文汉字(思源和阿里数黑)且文件在1MB和8MB左右
现象:通过lvgl的字库函数创建了不同大小字号font(创建了10组不同字号)引用,在渲染一个页面的时候在加载某些汉字时,freetype在读取字库文件时就会报错。
分析:我跟踪了错误点,很多错误都是读取字库文件数据是,seek偏移就报错。
解决方案:临时解决方案是增加重试可以解决此问题
结论:最终还是没有找到具体是什么原因,线程的stack已经开了很大,也观察了使用量,没有完全占用,系统的内存也还有充裕,不确定是否是文件系统有异常或者坏块导致

#2 Re: 工业芯 匠芯创 » D13CBS LVGL+FreeType多次显示不同汉字导致内存增加 » 2025-05-24 15:03:10

@AICxia
能否帮忙分析下,是什么原因会导致读取文件失败

#3 Re: 工业芯 匠芯创 » D13CBS LVGL+FreeType多次显示不同汉字导致内存增加 » 2025-05-23 20:57:06

@skyfy
通过继续分析,最终是在f_lseek这个函数中,这个位置返回
if (clst <= 1 || clst >= fs->n_fatent)  ABORT(fs, FR_INT_ERR);

#4 Re: 工业芯 匠芯创 » D13CBS LVGL+FreeType多次显示不同汉字导致内存增加 » 2025-05-23 19:49:50

修改为使用LVGL 的内部MEM,可以避免系统的heap内存占用增加。
但是目前遇到一个另外一个问题,当多次显示汉字之后,Freetype会报读取字库。换了字库文件依然存在,错误信息如下:

kernel\rt-thread\components\dfs\filesystems\elmfat\dfs_elm.c dfs_elm_read rc:2
kernel\rt-thread\components\dfs\src\dfs_file.c dfs_file_read rc:-5 name:/lvgl_data/fonts/test.ttf
elm
FT_Stream_EnterFrame: invalid read; expected 120 bytes, got 0
[Error] (34.506, +33)    freetype_glyph_create_cb: FT_Load_Glyph error(0x55) lv_freetype_glyph.c:138
[Error] (34.515, +9)     freetype_get_glyph_dsc_cb: glyph lookup failed for unicode = 0x4f2f lv_freetype_glyph.c:104
kernel\rt-thread\components\dfs\filesystems\elmfat\dfs_elm.c dfs_elm_read rc:2
kernel\rt-thread\components\dfs\src\dfs_file.c dfs_file_read rc:-5 name:/lvgl_data/fonts/test.ttf
elm
FT_Stream_EnterFrame: invalid read; expected 84 bytes, got 0
[Error] (34.680, +165)   freetype_image_create_cb: FT_Load_Glyph error(0x55) lv_freetype_image.c:130
[Error] (34.689, +9)     lv_cache_entry_get_data: Asserted at expression: entry != NULL (NULL pointer) lv_cache_entry.c:94
CPU Exception: NO.5
x1: 4013e670    x2: 300762c0    x3: 401f0c78    x4: deadbeef
x5: 4005e2e4    x6: 0000a000    x7: 00018937    x8: 00000000
x9: 3007636c    x10: ffffffff   x11: 0000000a   x12: 00000001
x13: 18710000   x14: 00000000   x15: 00000000   x16: 00000000
x17: 30076164   x18: 0000767d   x19: 000000ca   x20: 0000ffff
x21: 00000003   x22: 00000003   x23: 0000767d   x24: 00000018
x25: 40215ba4   x26: 4023764c   x27: 402376a4   x28: fffffffd
x29: 40058568   x30: 00000000   x31: 00000000
mcause : 0x38000005
mtval  : 0x00000008
mepc   : 0x401500f2
mstatus: 0x80007880

跟踪分析:
看报错信息,是打开FatFS的文件系统读取文件时  dfs_elm_read -> f_read  接口返回2  FR_INT_ERR
字库信息:
目前的字库都是8M以上存在SPI NAND中

我也尝试将LVGL的线程栈空间加到120KB,依然没有改善

这种是不是因为字库文件太大导致还是和内存相关? 麻烦大神帮忙分析下

#5 工业芯 匠芯创 » D13CBS LVGL+FreeType多次显示不同汉字导致内存增加 » 2025-05-23 00:25:19

skyfy
回复: 6

如题,在D13CBS上使用最新Luban-Lite SDK 采用LVGL移植了中文输入法,使用Freetype显示汉字有如下问题:
1、显示同一批汉字时,占用内存没有增加
2、显示不同汉字时,占用内存会一直增加

以上内存状态是通过free指令查询heap sys的值。

也曾开启了FreeType配置选项下使用PSRAM SW的内存,但是依然没有解决这个,

请问这个是不是LVGL的FreeType Cache一直在吃内存,且没有释放?

#6 Re: 工业芯 匠芯创 » D133CBV开发板以太网插着重启不正常 » 2024-11-13 17:17:12

已经解决,由于设置MAC使用的总线参考时钟,错选择了internal 导致不稳定

#7 工业芯 匠芯创 » D133CBV开发板以太网插着重启不正常 » 2024-11-13 15:34:47

skyfy
回复: 2

使用D133CBV带屏的开发板,在其板子上基于lvgl_demo的工程开启了以太网功能,遇到点问题:
1、当断电之后上电,以太网可以正常使用;
2、当上电之后,插着网线无论硬件重启还是软件重启,都会出现原本可用的网络无法使用,具体现象是DHCP工程中 ethernetif.c 内的input函数一次都没有触发过,导致无法获取到IP,此时我们用示波器也测试了PHY的TXD引进没有数据,这种故障概率比较高
请问有遇到过这种问题吗?
附件是我们的工程配置
project.txt

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn