谷动谷力

标题: ART Pi Smart 基于RT-Thread Smart系统的LVGL移植 [打印本页]

作者: 鸣涧    时间: 2022-7-31 23:30
标题: ART Pi Smart 基于RT-Thread Smart系统的LVGL移植
ART Pi Smart 基于RT-Thread Smart系统的LVGL移植
感谢RT-Thread社区发起了ART-Pi Smart 开发板评测活动,我有幸成为其中一员。
ART-Pi Smart开发板为RT-Thread联合百问科技出品,使用的是 NXP 公司的 i.MX6ULL 处理器,具备单核 ARM Cortex-A7,最高运行频率可以达到 800MHz。拥有 1 路 LCD 显示、1 路数字摄像头、8 路 UART、2 路 USB OTG、2 路 CAN、2 路以太网等资源,便于客户灵活定制。
概述
我申请测试是想实现3D打印机的高级功能的,由于测试时间有限(本来规定测试时间为一个月,但是板子到手只有不到半个月)。要在这么短的时间内移植全部程序是远远不够的,特别是RT-Thread Smart系统还需要时间学习,所以决定移植基于LVGL的图形UI。查看了RT-Thread官方网站,还没有基于LVGL的移植报告,这样就更有意义。
RT-Thread Smart简介
RT-Thread Smart(简称 rt-smart)是基于 RT-Thread 操作系统衍生的新分支,面向带 MMU,中高端应用的芯片,例如 ARM Cortex-A 系列芯片,MIPS 芯片,带 MMU 的 RISC-V 芯片等。rt-smart 在 RT-Thread 操作系统的基础上启用独立、完整的进程方式,同时以混合微内核模式执行。rt-smart 是一款高性能混合微内核操作系统,主要包含内核模块和用户态运行时环境。内核模块包括虚拟地址空间管理、进程管理、线程管理、进程间通信、虚拟文件系统框架、网络接口层框架、设备驱动框架、msh 控制台、日志系统、异常中断管理和系统调用接口,设备驱动框架包含串口驱动框架和看门狗驱动框架。用户态运行时环境包括用户态 C 库。
LVGL简介
LVGL(轻量级和通用图形库)是一个免费和开源的图形库,它提供了创建嵌入式GUI所需的一切,具有易于使用的图形元素,美丽的视觉效果和低内存占用。LVGL的项目作者是来自匈牙利首都布达佩斯的 Gábor Kiss-Vámosi 。Kiss 在2016年将其并发布在 GitHub 上。当时叫 LittlevGL而不是LVGL,后来作者统一修改为 LVGL。 像一般的开源项目的那样,它是作为一个人的项目开始的。 从那时起,陆续有近 100 名贡献者参与了项目开发,使得 LVGL 逐渐成为最受欢迎的嵌入式图形库之一。
开发环境硬件硬件环境搭建
ART-Pi Smart 硬件连接图
软件SDK下载

效果
创建 LVGL Demo

设置SDK工具链路径

编译文件路径

编译

下载
关键代码
用户态应用是一份 elf(Executable Linkable Format)文件,由 GNU GCC 编译链接而产生。在 RT-Thread Smart 中,它被固定加载到虚拟地址 0x100000 处执行。当需要系统服务时通过系统调用的方式通过 MMU陷入到内核中。用户态应用环境中,外设的使用需要先调用rt_device_find()函数查找设备,然后通过rt_device_open()打开,使用rt_device_control()函数通过命令字实现相应的功能。至于设备的初始化和功能的实现交到内核完成,这样就极大的降低用户态应用开发难度,这种思想应该大赞一个。
LVGL初始化


LCD设备接口与lvgl对接


触摸采用的芯片是GT911,通过I2C接口获得


运行
按复位键启动到msh环境

运行测试程序


视频
https://www.bilibili.com/video/BV1ha411T7fi?vd_source=ef9faff871d8ab428ddff65f03ada790
软件
test1.zip
总结
通过测试,我对RT-Thread smart的印象深刻。以前也开发过RT-Thread的项目,但对rt-smart这种将内核与用户态分隔开,以前只在大型桌面操作系统里见到的特征,能在嵌入式系统里运用感到震撼。这样使开发板的设计只需要提供内核和驱动代码,应用开发只需要挂载使用,极大地降低应用开发难度,提高代码重用度。而且提高应用代码隔离时系统更加健壮。
在测试过程中,遇到了问题,RT-Thread掌门人——熊谱翔先生很快亲自回答。在这里表示感谢。
由于时间太短,其它外设还没有来得及测试,颇为遗憾。
同时,希望RT-Thread能够提供统一的开发环境,特别是基于Windows平台,毕竟用户多一些。能否像LVGL提供一个模拟器(基于Visual Studio),毕竟Visual Studio调试功能很强,且有VisualGDB加持。这样就可在模拟器上消灭与平台无关的bug,减少仿真调试,下载时间。
最后,祝愿RT-Thread发展越来越好!








欢迎光临 谷动谷力 (http://bbs.sunsili.com/) Powered by Discuz! X3.2