SquareLine Studio 导出 ui 图片资源和固件分离解决方案

发布于 2024-10-16 16: 13: 39

一. 通过 SquareLine Studio lvgl 界面开发, 编译程序固件

1. 创建 lvgl ui project

1. create_project. png

2. 保存 lvgl ui project

2. save_project. png

3. 创建 lvgl ui 导出 c 代码文件夹

3. create_ui_folder. png

4. project 设置

4. project_settings. png

5. 设置路径

5. project_settings. png

6. 设置图片资源存在方式

Source code 该方式会把图片资源生成 C 数组, 以代码方式呈现.

Binary raw 该方式会把图片资源生成图片解压后的 raw 格式 . bin 文件, 不带 img 头标识, 这种方式导出的 c 代码, 会把所有 bin 资源加载到 ram 空间, 不实用.

Binary compressed 该方式把图片资源生成压缩的 png 格式 . bin 文件, 图片是 png 格式的, 需要用的 lvgl 的解码库, lvgl 自带的解码库解压图片需要的 ram 资源巨大, 解压一直图片需要 widthheight3 byte ram 资源, 也不实用.

Binary LVGL 该方式是生成的代码, 直接访问文件路径, "E: image. png", 目前我们用这种方式, 生成代码需要修改的地方最少.

6. project_settings. png

7. 设置盘符为 E: (w80x_lcd_sdk 中, 盘符 E 为 inner flash 文件系统)

7. project_settings. png

8. 把图片资源放置到 project/assets 文件夹下, 目前工具只支持 png 格式图片.

9. 屏幕放置一个 image 对象

8. ui_designed. png

10. 创建动画

9. create_animation. png

11. 创建屏幕载入事件

10. create_event. png

12. 导出 UI

11. export_ui. png

13. 把 projec/ui 文件夹中生成的代码替换到到 SDK/APP/solutions 目录下 (文件夹原有的内容删除) , cdk 工程中也需要删除并重新添加 solutions 文件夹.

14. 把生成 ui 中的. png 全部改为. bin

12. replace. png

15. 按照所用的开发板情况和所需功能, 在 SDK/components/user_config. h 配置对应 fatfs 在 flash 地址, 屏幕驱动, IO . . .

13. user_config. png

16. 在 SDK/app/lvgl_task. c 中打开ui_init () ; (注意, 同一时间只能打开一个 ui 工程应用, 所以其他 demo 函数入口需要注释掉)

14. lvgl_task. png

17. 编译生成固件并下载到开发板 (如果编译报错, Clean all 再 Build all) , 此时固件中不包含图片资源文件, 屏幕还不能正常显示动画.

二. PNG 转 BIN 文件, 并打包生成包含图片素材资源和文件系统的固件

1. 通过烧录工具/设置/扩展面板中 lvgl tools 把 project/drive/assets/目录下资源, png 格式格式图片, 解压成二进制 raw. bin, lvgl 访问文件系统资源路径即可.

15. png_to_bin. png

3. 将生成的. bin 文件, 拷贝替换 lvgl ui project/drive/assets 文件夹中的. png 图片

4. 使用 Fat16 磁盘镜像工具把上一步生成的图片资源 bin 文件和 fatfs 文件系统打包成可直接烧录的固件 (需要注意文件夹路径和 lvgl ui project 生成代码中的文件资源路径一致, 否则无法正常访问到图片资源, 就无法正常显示. )

16. create_image_bin. png

5. 下载生成的 fat16_image. img (包含 fatfs 文件系统和图片资源的固件) , 此时开发板就可以正常播放动画效果了.

play. gif

三. 文中用的 SDK 以及配套工具

lvgl_ui_spaceman. zip
w80x-sdk-lcd
Upgrade_Tools_V1. 5. 9. exe
Fat16 磁盘镜像工具. exe

1 条评论

发布
问题