1.香橙派OrangePi Zero2通过ili9488显示lvgl
2.lvgl库在VS Code中PlatformIO平台的源码详细介绍
3.关于STM32H743配置FMC接口驱动4.3寸TFT并移植LVGL,并优化使用DMA刷屏提高帧率
4.SS528V100 22AP30Hi3531DV200开发注意事项
5.T113-i最新发布Tina5.0系统!源码支持3大新特性!源码
香橙派OrangePi Zero2通过ili9488显示lvgl
本文详细介绍了如何使用香橙派OrangePi Zero2通过ili显示lvgl。源码前置条件包括已接上并能正常显示的源码3.5英寸SPI显示屏,以及Ubuntu . LTS + Visual Studio Code开发环境,源码美团源码交叉编译器gcc-arm-9.2-.-x_-aarch-none-linux-gnu,源码以及lvgl源码。源码
在修改源码文件阶段,源码首先调整了lv_conf.h中的源码颜色深度为,以适应屏幕分辨率。源码接着在lv_drv_conf.h中将fb0修改为fb1,源码以适应特定配置。源码同时,源码修改了Makefile,源码注释掉原有CC,并指向自定义编译器目录。
编译过程在VSCode中进行,通过新建终端执行命令。编译完成后,可通过file命令检查运行平台类型,ARM aarch字样表示编译成功。此阶段,可将编译出的可执行文件通过ssh传输到香橙派进行运行。
对于鼠标显示功能的实现,考虑到屏幕未配备或未连接触摸屏,通过增加鼠标控制。在lv_drv_conf.h中选择鼠标作为事件源,并在main.c中注释掉触摸屏初始化,增加鼠标初始化。下载并整合鼠标_cursor_icon.c文件,随后修改Makefile,打工网源码完成编译并上传至香橙派,以显示鼠标。
最后,为保持项目根目录简洁,修改Makefile以将编译输出文件导向指定目录。参考文章如Linuxlinux上使用lvgl、Linux 环境中使用 LVGL和Linux Framebuffer 实验,提供了进一步的学习资源和指导。
lvgl库在VS Code中PlatformIO平台的详细介绍
今天我花费了一整天的时间,深入研究了lvgl库及其模拟器在VS Code的PlatformIO插件中的使用方法。
lvgl是一个轻量级的图形界面库,主要用于为没有操作系统的设备提供图形化界面。
由于稚晖君的HoloCubic固件需要移植,我想先在电脑上进行模拟,于是开始探索这一领域。
我在B站上找到了一个教程,推荐使用VS Code + PlatformIO来构建lvgl图形界面和PC模拟器。在查阅官方文档后,我发现作者在GitHub上发布了支持该平台的demo,于是我开始研究这个库的工作原理和文件结构。
该项目在GitHub上,需要自行下载。
由于稚晖君的小电视分辨率是x,但默认demo的分辨率是一个很大的长方形。
推荐这个方法的B站UP主只教了如何安装,没有详细讲解lvgl库的使用方法,所以我只能在官网的文档中寻找答案。(顺便提一下,官网是全英文的,但谷歌浏览器自带的翻译功能非常出色,基本翻译一遍,安防网站源码再对照英文原文就能理解意思,没有之前学校里做英语阅读理解的厌恶感。不得不承认谷歌yyds,百度毁了我青春。)
如果有小伙伴还没有安装,可以先看他的视频:
项目结构
所有的库文件和demo源代码都在名为.pio的文件夹里。
注意:如果重复编译时出现错误,需要手动删除build文件夹,再重新编译!
(现在想想,.pio文件夹下的内容可能是在platformIO的.ini配置文件中填写了其在GitHub的URL,然后自动从代码仓库拉取的。只是个人猜测,还没有验证过,希望各位批评指正。)
platformio.ini文件:
这是platformio用来自动补全文件的配置文件,在这里可以设置lvgl的版本、lvgl的驱动版本、模拟器的分辨率等。
我当时并不知道如何调整分辨率,尝试了许多方法,一开始看到有人说在lv_drv_conf.h中修改,有人说在lv_conf.h中修改。于是我在.pio文件夹下研究了一个下午的源码。
最后,通过库编写者的友好注释,我成功地在lv_drv_conf.h中找到了名为SDL_HOR_RES(水平向分辨率)和SDL_VER_RES(竖直向分辨率)的两个宏定义常量。
然后根据注释的要求配置好,但发现调试出来的模拟器分辨率还是老样子!
就在绝望之际,我想起了platform的源码安全扫描配置文件.ini,我打开扫视了一下,竟然在这里发现了SDL_HOR_RES和SDL_VER_RES这两个常量和后面的值!我马上修改了这两个值,重新编译了一下(记得要删除build文件夹再重新编译),终于成功了!
所以在库配置文件中的,也就是lv_drv_conf.h和lv_conf.h中的分辨率设置,应该是实际在设备上运行时使用的。
本来只是想调整分辨率,结果我把库的源代码学了个遍。算是因祸得福吧。
真好,又是一个被封在家的一天。
我在上海闵行,听说我这里是重灾区,小区都封了,解封遥遥无期。但是对于技术宅来说,这简直太开心了!(宅在家变成了正当理由哈哈哈)
关于STMH配置FMC接口驱动4.3寸TFT并移植LVGL,并优化使用DMA刷屏提高帧率
首先,基于原理图配置接口,通过CUBEMX完成FMC接口的设置。然后,依据生成的代码,编写屏幕驱动程序,针对原子品牌的4.3寸MCU屏,x像素,提供直接下载的驱动文件以供移植。
移植过程中,添加了三个shell调试命令,社交论坛源码包括打开背光命令`lcd_bl_on`、关闭背光命令`lcd_bl_off`和刷屏命令`lcd_test`。确保移植操作顺利进行,需关注的两个关键函数是单点像素颜色更新和区块颜色更新。这些函数用于实现后续LVGL的刷屏操作。
LVGL的移植涉及8.2.0版本源码的下载与解压,按照指南在H项目中创建了lvgl目录,并分别创建了app、port、src三个文件夹。将LVGL的模板文件、头文件、源文件和示例文件按照特定步骤复制到对应目录中,以构建完整的移植环境。
项目结构设计完成后,编辑相关文件以适应H的配置。在`Lvgl.h`中打开宏定义,将`#if 0`更改为`#if 1`,以启用特定功能。`Lv_port_disp_template.c`文件中同样打开宏定义,并添加显示区域的水平像素和垂直像素的宏定义。修改`lv_port_disp_init()`函数,初始化显示缓存,配置为仅使用第一种方式,并相应调整像素值以匹配LCD规格。
在`disp_init()`函数中,添加LCD初始化代码和配置定时器TIM,实现1ms中断一次。在中断回调函数中,添加LVGL的心跳时钟。`disp_flush()`函数的修改侧重于采用区块刷屏方式,以提高效率。在`main()`函数中,调用LVGL初始化和处理函数,实现整个系统的启动。
白屏展示正常后,可以尝试编写`hello world`示例,并在`main()`函数中调用,以验证文本显示功能。LVGL官方Demo的运行,涉及将C文件添加到项目中,并在`lv_cong.h`文件中启用相关Demo,通过`main()`函数调用以展示更多功能。
在屏幕面积较大、像素较多的情况下,优化刷屏操作以减少CPU占用,采用DMA技术提高刷屏效率。配置CUBEMX以适应特定的LCD接口,如NT的TFT屏幕,调整DMA参数,如内存类型、地址增方式和中断功能。修改LVGL的刷屏代码以支持双缓冲机制,定义两个缓冲区并确保其位于AXI内存空间中。在`disp_init()`函数内添加DMA中断回调函数入口,以实现DMA传输的高效刷屏流程。
完成上述步骤后,系统应能展现出优化后的界面和更高的帧率。如需进一步技术支持和获取开发板资源,可闲鱼搜索用户名阿达和阿文,获取更多专业咨询与帮助。
SSV APHiDV开发注意事项
一、在反复开关视频采集编码程序一定次数后,mpp会全局初始化失败,只能重启开发板才能恢复。初步排查有可能是VB设置cfg失败,尝试在启动编码程序时,调用hi_mpi_sys_exit()和mpi_vb_exit(),再调用想要的init(),但是出问题的时候,仍旧是恢复不了;
解答思路:这种大概率是程序获取了vb没释放导致的,处理方式有两种:1.排查程序资源释放,在调用hi_mpi_sys_exit()和mpi_vb_exit()确保所有vb正确释放;2.开启强制销毁vb,这么做有一定的风险,建议优先按方式1处理;
二、SSV 光电冗余备份,光口不自识别千兆
**问题描述**使用RTLF网卡芯片,作为光电冗余备份,光口仅能识别到Mbps,需要使用ethtool工具设置后方可识别到1Gbps,电口正常;请问如何设置能使光口主动识别到千兆?所处环境:室内,SFP-GE-LX-SM千兆单模光模块,RTLF网卡芯片
解答思路:用ethtol工具强制千兆;
三、ss 系统启动后,第一次执行sample_audio 录音失败
问题描述:1、系统启动(上电启动或reboot重启)后,第一次执行sample_audio录音失败。2、之后再次执行就正常了。所处环境:ubuntu . lts server
解答思路:主从模式改一下。
四、ssv uboot 不需要压缩,怎么去除
问题描述:ssv uboot 启动慢,该怎么去除压缩?所处环境:ubuntu . lts server
解决思路:要去除SSV U-Boot的压缩,你可以按照以下步骤进行操作:1、在Ubuntu . LTS Server上安装所需的工具链。你可以使用以下命令安装:sudo apt-get update sudo apt-get install build-essential;2、下载SSV U-Boot源代码。你可以从相关网站或官方渠道获取源代码,并将其解压到一个目录中;3、进入U-Boot源代码目录,并打开include/configs/your_board.h文件(其中your_board.h是你的开发板配置文件)。找到并注释掉以下两行代码(如果存在):#define CONFIG_SYS_BOOTM_LEN ( << ) #define CONFIG_SYS_MALLOC_LEN ( * * );4、打开include/config_defaults.h文件,并找到以下行:#define CONFIG_SYS_TEXT_BASE 0x。将该行修改为:#define CONFIG_SYS_TEXT_BASE 0x;5、进入U-Boot源代码目录,并执行以下命令编译U-Boot:make your_board_defconfig make;6、编译完成后,在输出目录中找到生成的u-boot.bin文件。7、将生成的u-boot.bin文件刷写至你的SSV开发板中。这样,你就成功去除了SSV U-Boot的压缩,从而提高了启动速度。请确保在进行任何修改之前备份好相关文件,以防止意外情况发生。
解决思路2:使用预编译的uboot镜像;更新最新版SDK,E
五、SS(HiD)编解码,图形层和视频层都绑定在同一设备层上的话,可以叠加显示吗?
问题描述:实际场景需求:图形层做的是交互,视频层做的是拉流显示,要叠加显示
解决思路:一般是用colorkey的方式让图形层透明让视频层显示出来。设置的是hifb的参数,只要把lvgl的背景色设置为colorkey的值就可以透明了
六、用ffmpeg拉多个视频流的话,是不是一个流开一个vdec通道?解决思路:当使用FFmpeg来提取多个视频流时,通常会为每个视频流打开一个独立的视频解码器(vdec)通道。每个视频流都会被视为一个独立的输入,并通过相应的解码器进行解码。先从flv取出h拿去解码,再使用,不能直接使用。
T-i最新发布Tina5.0系统!支持3大新特性!
T-i工业核心板,以高性价比,受到行业广泛瞩目。创龙科技持续为其软件系统优化,适配最新Tina5.0系统,以满足全志T-i用户多样化需求,简化工业应用。
Tina5.0系统特性全面,包含OpenWrt与buildroot编译系统,支持LVGL、Qt等图形系统,适配ARM、RISC-V、DSP核心开发与快速部署。异构通信支持,整合Linux系统所需内核源码、驱动、工具、系统中间件与应用程序包,灵活构建,满足不同工程师需求。
特性一:OpenWrt支持
OpenWrt是一款强大且自动化的嵌入式Linux系统,具备高度模块化特性,广泛应用于工控设备、小型机器人、智能家居、路由器与VOIP设备。
特性二:LVGL支持
LVGL是一个开源图形库,专门用于嵌入式系统上创建GUI。以C语言编写,高效、可定制,特别适合微控制器平台和显示硬件上开发用户界面。
特性三:RISC-V核心开发与核间通信
玄铁C处理器作为T-i核心,主频达MHz,配备内存管理单元,支持RTOS或裸机程序运行,适用于快速启动系统、实时输入输出、实时数据处理与实时控制。
T-i工业核心平台广泛应用于典型场景,如智能制造、物联网设备、工业自动化控制等,提供高效稳定的技术支持。