1. 环境准备:搭建你的专属“厨房”
想把LVGL v9这盘“好菜”端上IMX6ULL开发板的“餐桌”,第一步得先把“厨房”——也就是你的开发环境——给收拾利索了。我自己的主力机是Windows 11,但我强烈推荐你和我一样,使用WSL2(Windows Subsystem for Linux 2)来作为开发环境。为啥呢?因为它既保留了Windows的易用性,又让你能在一个原生的Linux命令行里干活,编译、调试、版本管理这些嵌入式开发的常规操作,用起来那叫一个顺手,比在虚拟机里折腾效率高多了。
首先,确保你的Windows 10/11已经开启了WSL2功能。打开PowerShell(管理员身份),运行 wsl --install -d Ubuntu,系统会自动帮你安装Ubuntu发行版。安装完成后,从开始菜单打开Ubuntu,它会完成初始设置,让你创建用户名和密码。这个Ubuntu子系统,就是咱们后续所有操作的大本营。
接下来,是准备“厨具”——交叉编译工具链。IMX6ULL是ARM Cortex-A7内核,我们需要针对ARM架构的GCC编译器。我实测下来,gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf 这个版本与Linux 4.9内核配合非常稳定,韦东山、正点原子、野火的官方资料也大多基于此。你可以在Linaro官网或开发板提供的资料包里找到它。在WSL2的Ubuntu里,我习惯把它解压到 /opt 目录下,比如 /opt/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf。然后,别忘了把工具链的路径加到系统环境变量里,这样在任何目录下都能直接调用 arm-linux-gnueabihf-gcc。编辑你的 ~/.bashrc 文件,在末尾加上一行:
export PATH=$PATH:/opt/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin
保存后,执行 source ~/.bashrc 让它生效。最后,敲一下 arm-linux-gnueabihf-gcc -v,如果能看到版本信息,恭喜你,“厨具”备好了。
除了编译器,我们还需要一些基础的开发库。在Ubuntu终端里运行下面这条命令,一次性安装好CMake、Git以及一些可能需要的依赖:
sudo apt update && sudo apt install -y cmake git build-essential libibus-1.0-dev libxkbcommon-dev
确保你的CMake版本在3.12.4以上,用 cmake --version 检查一下。版本太低的话,后续编译LVGL v9可能会报错。这些准备工作看似琐碎,但就像炒菜前洗菜、切菜一样,做好了后面才能一气呵成,避免做到一半发现少这少那,那才叫一个头疼。
1.1 获取“食材”:LVGL源码与Linux框架
“厨具”齐了,该准备“食材”了。LVGL官方为Linux帧缓冲(Framebuffer)环境提供了一个非常好的移植框架仓库,叫 lv_port_linux。这个仓库已经帮我们搭好了基本的工程结构,我们只需要在其基础上进行适配即可,这比自己从头搭建要省心太多。
打开WSL2的终端,找一个你喜欢的目录,比如 ~/workspace,然后执行克隆命令:
git clone https://github.com/lvgl/lv_port_linux.git
cd lv_port_linux/lv_port_linux_frame_buffer/
注意,我们直接进入 lv_port_linux_frame_buffer 这个子目录,它是专门为帧缓冲设备准备的。进去之后,你会发现里面有个 lvgl 子目录,但此时它是空的。这是因为LVGL的源码是以子模块(submodule)的形式管理的。我们需要初始化并更新子模块:
git submodule update --init --recursive
这个过程会从GitHub拉取LVGL核心库、演示demo、示例部件等所有相关代码。如果你的网络环境不太理想,这个过程可能会比较慢甚至失败。别急,我踩过这个坑。一个解决办法是使用国内的镜像源,或者像我一样,提前把配置好的仓库放在国内的代码托管平台(如Gitee)上,你直接克隆我准备好的仓库也是一样的效果,能节省大量时间。
拉取完成后,用 ls -la 看看目录结构。你会发现,相比LVGL v8版本,这里少了一个 lvgl_driver 目录。这是LVGL v9的一个重要变化:许多显示和输入设备的驱动已经内置到LVGL核心库里了。这意味着对于像Framebuffer、evdev(Linux标准输入事件)这样的标准Linux接口,我们不再需要额外寻找和移植驱动代


1202

被折叠的 条评论
为什么被折叠?



