您尚未登录。

楼主 #1 2020-02-16 15:19:21

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

licheePi nano跑Linux移植littvGL关于/dev/fb0位深度是32的疑问

1.首先可以从licheePi nano原理图中看出LCD接线是RGB666的 也就是位深度是18

2.从官网设备树找到屏幕设备是qd43003c0_40 然后在panel-simple.c找到该设备属性

static const struct drm_display_mode qd43003c0_40_mode = {
	.clock = 9000,
	.hdisplay = 480,
	.hsync_start = 480 + 8,
	.hsync_end = 480 + 8 + 4,
	.htotal = 480 + 8 + 4 + 39,
	.vdisplay = 272,
	.vsync_start = 272 + 4,
	.vsync_end = 272 + 4 + 10,
	.vtotal = 272 + 4 + 10 + 2,
	.vrefresh = 60,
};

static const struct panel_desc qd43003c0_40 = {
	.modes = &qd43003c0_40_mode,
	.num_modes = 1,
	.bpc = 8,
	.size = {
		.width = 95,
		.height = 53,
	},
	.bus_format = MEDIA_BUS_FMT_RGB888_1X24,
};

可以看到位深度是RGB888 也就是24

3.然后在littlevGL的lv_conf.h要把位深度设置为32显示才正常

这几个位深度度如何理解?什么情况该怎么填?

离线

#2 2020-02-16 19:30:27

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,348
积分: 9202

Re: licheePi nano跑Linux移植littvGL关于/dev/fb0位深度是32的疑问

1. RGB666 这是硬件位深度18bit, f1c100s实际上也可以输出RGB888, 但这样多占了几个IO, 当然你不介意显示精度也可以RGB111, 只是这样画面太美不敢想象.

2. 不管实际硬件是RGB888/RGB666/RG565/RGB111, 主线Linux驱动为了方便处理都是当RGB888, 每像素占用32bit宽度.

3. lv_conf.h 的 32bit 估计是他显存的处理方式, 也是和2一样, 为了方便软件处理, 最终如果你的物理/虚拟显示屏是16bit(2字节宽度), 在驱动部分再做一次 RGB888 <=> RGB656 的双向转换.

以上说法可能不全对, 仅供参考.





离线

楼主 #3 2020-02-16 20:24:31

逸俊晨晖
会员
注册时间: 2018-08-29
已发帖子: 151
积分: 137.5

Re: licheePi nano跑Linux移植littvGL关于/dev/fb0位深度是32的疑问

晕哥 说:

1. RGB666 这是硬件位深度18bit, f1c100s实际上也可以输出RGB888, 但这样多占了几个IO, 当然你不介意显示精度也可以RGB111, 只是这样画面太美不敢想象.

2. 不管实际硬件是RGB888/RGB666/RG565/RGB111, 主线Linux驱动为了方便处理都是当RGB888, 每像素占用32bit宽度.

3. lv_conf.h 的 32bit 估计是他显存的处理方式, 也是和2一样, 为了方便软件处理, 最终如果你的物理/虚拟显示屏是16bit(2字节宽度), 在驱动部分再做一次 RGB888 <=> RGB656 的双向转换.

以上说法可能不全对, 仅供参考.

原来做了转换 明白他们的关系了 感谢晕哥讲解

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn