在电脑上使用vs2019,移植到F1C100S上后,画面相当卡,惨不忍睹啊。
硬件:F1C100S + 25q256 + LCD 800X480 RGB565
软件:Linux 5.4 framebuffer 32bpp + LVGL8 + freetype
目前LVGL 位深是32 硬件连线是RGB565 暂时当成RGB888来用, 修改了设备树,format=r5g6b5,还是一样,不知道如何将framebuffer 修改为16bpp?单缓冲,双缓冲,全屏缓冲都试过了,目前感觉是LVGL绘图跟不上,图片,字体资源都放在外边,因为用fb-test-rect或者编译widgets_demo 帧率还可以。
请教坛里的大佬们,如何将framebuffer 修改为16bpp或者提高刷屏速度?
离线
你这估计是刷图方式有问题,开启了整屏刷图的模式,要选择局部刷。注意下刷新周期
是开启了整屏刷图,不过跟这个关系好像不大 ,目前发现DRAM_CLOCK 频率对刷图影响非常大,默认是312MHZ 我改到400MHZ 帧率提升非常明显,再高就不稳定了,CPU 720MHZ 对帧率影响不大,只是CPU使用下降了
FrameBuffer 还是使用32位的,为的是让LOGO持续到APP启动
DRM可以改为16bpp还不知道如何让logo持续 drm从fb继承时好像会重新初始化
使用16bpp 内存小一半,传输数据也少一半,刷新速度应该更快吧
离线
发现软件做再多优化都没有把DRAM_CLOCK频率提高来的明显,CPU用默认频率,DRAM设置480MHZ 帧率提高3倍左右,已经很流畅了,用的全尺寸单缓冲区
软件上把freetype,去掉直接取模,一些图标也是取模,界面切换逻辑修改为先清空再重新绘制,之前是把界面全部绘制出来隐藏起来,切换时再显示出指定的界面,对性能低的MCU不合适,内存占用也大,最后就是加上多线程。接下来就是优化启动时间,缩小镜像体积了
离线
建议你检查消息循环,空闲回调那些地方。这个卡顿跟性能没关系,我用蜗牛唐的192MHZ arm9带7寸屏幕都跑得比你这快,更别说你这U的主频那么高了。
我使用的是800×480 32bit全屏缓冲区,有绘制背景图片,总感觉lvgl绘图速度上不去,LVGL要绘制完才更新,
主线程就是这样,你说的消息循环,空闲回调,这些是LVGL自动处理的吧
while (1)
{
signal(SIGINT, sighandle); //设置信号处理函数
usleep(lv_task_handler() * 1000);
}
离线
你的好在颜色是正常的,我的颜色都不正常
是不是位深没设置对?
离线
编译InfoNes 跑了一下 https://github.com/nejidev/arm-NES-linux 声音听着难受
颜色问题 一开始以为是RGB5565 转换后还是颜色不对, 原来InfoNes默认输出的是RGB555 格式的
static DWORD rgb555_2_argb888(WORD color)
{
DWORD c;
unsigned char red;
unsigned char green;
unsigned char blue;
red = ((unsigned char)(color >> 10)) << 3;
green = ((unsigned char)(color >> 5)) << 3;
blue = ((unsigned char)color) << 3;
c = (red | c) << 16 | (green | c) << 8 | (blue | c);
return c;
}
离线