自己组装过游戏主机的应该都有看到过,进入BIOS设置,酷炫的界面便呈现在眼前,而很多BIOS,使用的还是标准的界面。现在有个趋势,phoenix和insyde也在慢慢朝这种GUI界面发展,而AMI的使用C++编写的界面已经非常完善,之前一直想自己动手试试,现在刚好成行。

先拿LVGL动手,其实我一直想拿GUILite开刀,所以后面如果有这方面的更新,基本就是GUILite了,LVGL只是移植而已,移植完就不打算深入研究下去了。(LVGL开源的,并且可以免费商用,貌似只要你给开源做点贡献就行,哪怕写写移植文档)

爱影博客 - UEFI开发学习8 – LVGL GUI库的移植

可以看看这篇文章,这篇文章讲了很多,这篇文章讲的很好,只是最后讲的输入设备有点出入,让人有些难以理解,在移植的过程中,我直接使用LVGL8.2的版本进行了移植。

移植过程中,主要遇到的就是导入StdLib遇到的编译问题以及导入LVGL遇到的编译问题,这些问题已经全部解决,我使用的是OvmfPkg,在Linux环境下使用GCC/X64进行编译,编译完成后在Windows下通过Qemu模拟器运行。

关于编译的问题,我会将代码暂时通过网盘上传,基础代码是我的仓库里面的代码,对上述两套代码进行比较即可,还是更改了比较多的内容的(OvmfPkg里面导入了Redfish的内容,不用管,别打开定义就行,不然不开机,可能redfish代码不能通过Ovmf运行)。

输入设备前的内容我就不重复造轮子了,代码以及APP也有了,有编译环境的可以下载自己尝试一下。首先我们先实现界面的内容:

这里serial打开,代码中DEBUG_ON_SERIAL_PORT是要打开的,进入fs0,打开LvglTest.efi

可以看到界面:

这个界面的代码在Lvgl8.2代码的demos下的keypad_encoder,我直接给他放进C文件中了,LVGL的移植没问题,编译是能通过的,但是按键输入没反应,如果按键没反应,这界面就少了很多乐趣,经过我的研究,发现这个键盘输入还需要初始化才行。

GitHub - lvgl/lv_drivers at dev这里面的indev下面有个keyboad.C和H文件,都拿出来,放到src/indev下面,keyboard.c文件里面的keyboard_init函数本来是个空的,我加入了一些代码:

bool keyboard_read(lv_indev_drv_t * indev_drv, lv_indev_data_t * data);void keyboard_init(void)
{lv_indev_drv_t indev_drv;lv_indev_drv_init(&indev_drv);      /*Basic initialization*/indev_drv.type =LV_INDEV_TYPE_KEYPAD ;               /*See below.*/indev_drv.read_cb =keyboard_read; lv_indev_t * my_indev = lv_indev_drv_register(&indev_drv);
}

其他的函数与爱影博客描述的一样不变,这个代码是我在文档中找到的:

Input device interface(输入设备接口) — 百问网LVGL中文教程文档 文档

他是这么说的:

最后我将这个keyboard_init函数在App的C文件中进行调用,便完美的实现了键盘的输入问题:

可以看到,界面已经与前面的不同了,因为已经可以正常操作界面了,移植LVGL,界面元素能正常使用,输入也能正常输入,基本上问题不大了,当然还有个鼠标,原理是一样的,看一参看文档手册。完成了上述的内容,咱们就可以写一些自己的界面程序了,比如更新BIOS,你可以设置一个酷炫界面,整个酷炫的进度条,完全是没问题的。

整体的代码:

链接:https://pan.baidu.com/s/1G6Ck342ns7w7RH9pp4qOTw 
提取码:c79h

UEFI移植LVGL相关推荐

  1. MCUXpresso开发NXP RT1060(3)——移植LVGL到NXP RT1060

    目录 开发环境 目录 一.开发环境 二.准备工作 三.移植步骤 1.修改lv_conf.h 2.显示功能移植 3.触摸功能移植 4.tick及timer 四.结果展示 五.参考资料 一.开发环境 1. ...

  2. 乐鑫ESP32移植LVGL 7.10

    零. 声明 本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下: 第一篇:ESP-IDF基本介绍,主要会涉及模组,芯片,开发板的介绍,环境搭建,程序编译下载,启动流程等一些基本的操作,让你对 ...

  3. linux笔记(8):东山哪吒D1H移植lvgl(HDMI输出)

    文章目录 1. 下载,修改,编译源码 1.1下载源码 1.1.1新建一个`lvgl`目录,在该目录下下载源码 1.1.2 在`lvgl`目录下再建一个`myspace/lvgl_demo`目录,把参与 ...

  4. IMX6ULL移植LVGL

    IMX6ULL移植LVGL 话不多说,直接开干!!! 1.移植准备 1.1.源码克隆 文件名 克隆命令 描述 lvgl git clone https://github.com/lvgl/lvgl.g ...

  5. STM32移植LVGL(LittleVGL)

    STM32移植LVGL(LittleVGL) 一.什么是LVGL https://lvgl.io/ 这是LVGL的官网, http://lvgl.100ask.org/8.2/intro/index. ...

  6. STM32移植LVGL+旋转编码器接口对接

    写在前面:本菜鸟结合了许多大佬的文章,成功实现了基于LVGL的GUI设计,小开心~浅浅记录一下!~ 本文以单片机STM32F103VET6为核心,利用ST7796芯片驱动分辨率为480*320的LCD ...

  7. 【LVGL】学习笔记--(1)Keil中嵌入式系统移植LVGL

    一 LVGL简介 最近emwin用的比较烦躁,同时被LVGL酷炫的界面吸引到了,所以准备换用LVGL试试水. LVGL(轻量级和通用图形库)是一个免费和开源的图形库,它提供了创建嵌入式GUI所需的一切 ...

  8. TFT-LCD移植LVGL详细过程记录

    TFT-LCD移植LVGL LVGL(轻量级和通用图形库)是一个免费和开源的图形库,它提供了创建嵌入式GUI所需的一切,具有易于使用的图形元素,美丽的视觉效果和低内存占用. LVGL更多介绍:http ...

  9. arduino tft 方向_ESP32在Arduino环境下玩转 LVGL,ESP32移植LVGL详细教程

    微信关注 "DLGG创客DIY"设为"星标",重磅干货,第一时间送达. ❝ 转载自慕容流年 https://me.csdn.net/qq_41868901 ❞ ...

最新文章

  1. 2022-2028年中国塑料人造革行业市场研究及前瞻分析报告
  2. 5.matlab 中的sort
  3. c语言中错误executing,C语言编程中常见问题解读.doc
  4. Spring IoC(一)IoC容器的设计与实现:BeanFactory与ApplicationContext
  5. 象棋中常用的最小值最大值算法及剪枝算法
  6. 【Python】Matplotlib绘制各式各样的圆形
  7. python3 缺少PIP解决办法
  8. Python calendar日历模块的常用方法
  9. 【uoj#174】新年的破栈 贪心
  10. jsp需要多少java基础_Java Web基础面试题你知道多少?
  11. 数据结构严蔚敏(c语言版)课后算法题答案-栈和队列
  12. 将Excel列表数据转换成html代码
  13. 计算机打印错误,打印机错误正在打印处理方法,教您电脑打印机错误正在打印处理方法...
  14. 如何快速输出产品的用户故事地图
  15. 新年,未知的开始---Created by 思贤泪自潸
  16. Dev Express Report 动态表头设置
  17. 关于阿里云服务器购买和域名购买的相关流程
  18. 再逼自己一把,把项目做出来....
  19. 位列腾讯网易后面,三七互娱要页游“赚”云游戏?
  20. Wish封店的原因有哪些?

热门文章

  1. MAC 版QQ如何多开
  2. windows系统日志查看
  3. MacBook Pro 14/16英寸2021款 扬声器 爆音问题 噼啪声
  4. SpeedFan 4.20
  5. IE浏览器打不开网页解决方法之一
  6. SRS_Audio_Sandbox1904计算机的终极音频增强软件
  7. Hulu推荐 | 传奇嘻哈音乐组合的美国梦:《武当帮成名录》
  8. 基于微金字塔结构的压阻传感器的优化设计
  9. 用酒精Alcohol 120%刻WI-IC的OS简单教程
  10. 语音处理:Python实现pcm文件声道合并