Edit online

常见问题

UI 图片未加载

现象

UI 界面未显示要加载的图片。

原因分析

逐步排除以下原因:

  1. Using File System Image 0 与 Using File System Image 1 中打包的资源文件路径是否正确。
  2. Using File System Image 0 与 Using File System Image 1 在 image_cfg.json 中对应的分区表配置是否正确。
  3. 所需要的文件系统的编译选项是否打开,例如:Using File System Image 0 使用 fatfs。

LVGL 线程 TIMEOUT

现象

通过 ps 命令查看线程运行状况, LVGL 显示 TIMEOUT,但 UI 依然在正常运行。

原因分析

TIMEOUT 的显示通常由查看线程状态时触发,因 LVGL 恰好处于休眠状态,多次执行 ps 命令可捕获 LVGL 线程恢复正常(OK)的状态。

图片生成的.c 数组超过内存大小导致编译失败

问题现象:SDK 编译的时候报.rodata 段超过了 SRAM_SO 大小。

问题原因:通过其他 GUI 工具生成的代码,全部图片转换成了数组.c 文件,导致.rodata 段过大。

处理方法:图片不使用.c 格式数组形式加载,使用资源文件加载方式。

资源文件路径不对

问题现象:添加 demo 应用后画面白屏,只能看到部分图标。

问题原因:资源路径配置错误。

处理方法:正确配置资源路径。

图片显示”No data”

问题现象:界面多次切换后图片显示 No data。

问题原因:图片解码申请内存失败,反复切换界面内存出现泄漏或者碎片化,导致解码器申请内存失败。

处理方法:找到内存泄漏或内存碎片化的根本原因并解决。(free,memheaptrace)

https://aicdoc.artinchip.com/topics/sdk/mem/memory-faq-lite.html

图片格式不支持

问题现象:图片显示白屏或者黑屏,串口提示不支持的格式。

问题原因:jpeg 图片支持 baseline 格式,不支持 progressive 格式。

问题解决对策:更换支持的格式图片。

字体显示方框

问题现象:显示中文文字的时候没有正确显示文字而是显示方框。

问题原因:从字库中索引不到需要的文字,或者传入的数据不准确。

处理方法:确认是否导入正确的字库,字库是否包含需要显示的文字,查看字库的软件 FontForge。

字体显示虚化

问题现象:字体显示虚化、错乱。

问题原因:framebuffer 和 LVGL color depth 没有对应上。

处理方法:调整配置让两者匹配:argb8888 对应 32,rgb565 对应 16。

字体造成 cpu crash

问题现象:使用一款 ttf 字库,出现打印 CPU crash,换一款字库文件没有问题。

问题原因:部分字体需要调大 LVGL 栈空间。

处理方法:尝试调大 LVGL 栈空间。

内存泄漏导致死机

问题现象:应用界面反复切换后出现卡死不动,系统堆空间只剩 50 K。

问题原因:应用使用了矢量字体,界面切换有反复初始化矢量字体,初始化矢量字体伴随有内存申请,但是并没有注销字体也就是没有释放内存。

处理方法:全局初始化矢量字体,不要反复初始化。

操作未初始化的控件

问题现象:应用运行到某个界面后会出现卡死,代码看不出明显异常。

问题原因:局部控件和全局控件同名,全局控件没有被初始化就进行了操作。

处理方法:留意控件名,确认控件被初始化以后再操作。

操作已经销毁的控件

问题现象:界面退出的时候出现卡死。

问题原因:界面退出后,定时器没有及时删除,还再操作相关控件。

处理方法:留意界面退出的操作,确保已销毁的控件不会被操作到。

错误调用 lvgl 接口导致内存泄露

问题现象:持续切换界面超过 1 小时,动画出现卡顿甚至停滞,但系统未死机。

问题原因:客户手动删除页面的时候调用的是 lv_obj_clean,这个函数只删除页面的子控件并没有删除页面本身。后续不断切换界面,不断产生页面,并没有删除页面本身。

处理方法:增加 lv_obj_del 函数,删除掉界面本身。