作者| sz.chen、dewei.chen、wenju.lu、aaron.feng
芯片:SSD20X/21X/22X
Comake社区技术问题汇总,第20230414期,本期主要汇总了点屏开发相关的问题。
本期问题速览
▪ 点TTL屏时,输出的clk信号能否反转?
▪ 如何根据LCD屏ID或参数实现屏参切换?
▪ 公板设备在Uboot启动过程中一直保持黑屏
▪ 【SSD20X芯片】在disp demo中跑H264码流出现花屏的现象该怎么处理?
▪ Panel颜色显示不对如何定位问题?
▪ 点SPI Panel时,要如何配置所用的SPI控制器?
▪ 运行 ts_calibrate 测试程序后,发现屏幕上会有残影存在
▪ 如何调节panel和hdmi展频?
Q1:点TTL屏时,输出的clk信号能否反转?
A1:可以支持clk信号的反转。
1. 在TAKOYAKI_DLS00V050版SDK的基础上合入了 c6895c3,并使用 configs/nvr/i2m/8.2.1/spinand.glibc.011a.64 重新编译了 mhal.ko ,使用该版mhal.ko,即可通过配置屏参头文件中如下图所示的参数即可。
2. 若不方便更新mhal.ko的话,可以试着将 Bank 0x1128,offset 0x20 的bit[8] 置1, 如“riu_w 0x1128 0x20 0x1xx”。
》》原帖地址
Q2:如何根据LCD屏ID或参数实现屏参切换?
A2:【SSD22X平台适用,SSD222平台验证】
切换屏参总体来说有两种方式:
方式一:通过加载不同的屏参文件config.ini,每个屏参文件除必要配置外可以只保留一个屏参信息;
方式二:通过修改config.ini中m_pnlList列表中的值或者m_sParaTarget的值,指定对应屏参,该方式可以将多个屏参信息整合在一份屏参文件中。
uboot bootlogo实现切换屏参
①方式一实现: 参考boot/common/cmd_bootlogo.c中_MiscPartion():
通过获取到的lcdtype环境变量的值,iniparser_load()加载不同的屏参文件,对应config_xxx.ini文件需要打包到/misc中
②方式二实现: 参考boot/common/cmd_bootlogo.c中_LogoloadConfigIni():
通过获取到的dispout环境变量的值,传递给pTargetPnlName变量实现屏参切换,该变量对应屏参文件的LOGO section的m_sParaTarget
注:以上配置仅在bootlogo显示生效
kernel实现切换屏参
①方式一实现:
1)加载mi_sys.ko时不解析屏参,只解析mi_fb.ko加载需要的FB info
insmod /config/modules/4.9.84/mi_sys.ko cmdQBufSize=768 logBufSize=256 default_config_path=/customer/sstar_config config_ini_path=/customer/config_fb.ini
config_fb.ini只保留FB info:
2)加载完mhal.ko、mi_common.ko、mi_sys.ko、mi_fb.ko、mi_panel.ko、mi_disp.ko,运行display demo显示前识别LCD屏ID(识别逻辑需自行实现),根据ID执行/config/load_config config_xxx.ini /config/PQConfig.ini加载不同屏参,应用层和驱动层demo,以及屏参ini参考如下:
应用层demo:通过popen执行load_config
set_config_ini.c
屏参ini: 只保留了一份屏参信息和kernel显示必需配置
config_rgb.ini
config_bgr.ini
驱动层demo:通过call_usermodehelper调用load_config,需要打开CONFIG_TOOL宏定义
lcd_config.c
②方式二实现:
1)在加载mi_sys.ko前识别LCD屏ID(识别逻辑需自行实现),根据ID修改对应config.ini中字段m_pnlList所选择的屏参,config.ini需要包含FB info和多个屏参信息,应用层和驱动层demo,以及屏参ini参考如下:
insmod /config/modules/4.9.84/mi_sys.ko cmdQBufSize=768 logBufSize=256 default_config_path=/customer/sstar_config config_ini_path=/customer/config.ini
应用层demo:通过文件操作更改config.ini中字段m_pnlList所选择的屏参(仅参考)
change_config_ini.c
屏参ini: 保留多份屏参信息和kernel显示必需配置、FB info
config.ini
驱动层demo:通过内核文件操作更改config.ini中字段m_pnlList所选择的屏参(仅参考),需要关闭CONFIG_TOOL宏定义
lcd_config.c
2)加载mhal.ko、mi_common.ko、mi_sys.ko、mi_fb.ko、mi_panel.ko、mi_disp.ko,运行display demo显示
》》原帖地址
Q3:公板设备在uboot启动过程中一直保持黑屏
A3:如果是遇到该问题,有两个地方需要处理:
1、是否有打开屏幕背光和屏幕电源
2、是否有控制dcache
具体操作方法
1、进入/project/image/configs/i2m/中找到对应的script文件
2、搜索bootcmd,然后将此行修改如下
@echo setenv bootcmd \' dcache off\; bootlogo 0 0 0 0 0\; dcache on\; gpio out 4 1\; gpio out 5 1 \; $(wifi24mclkcmd)\; $(wifirstoffcmd)\; sf probe 0\;$(kernel$(BOOTCMD)) $(rootfs$(BOOTCMD)) $(wifirstoncmd)\; bootm $(KERNELBOOTADDR) >> $(SCRIPTDIR)/\[\[$(patsubst %_spi_nor__script,%,$@)
》》原帖地址
Q4:【SSD20X芯片】在disp demo中跑H264码流出现花屏的现象该怎么处理?
A4:在使用disp demo跑H264码流时如果出现花屏,首先应该使用如下命令获取VDEC信息。
cat /proc/mi_modules/mi_vdec/mi_vdec0
若是获取信息后发现 RefFrmNum 为1,可以使用 Video Pro Analyzer 对码流进行分析,如下图所示,可以看到SPS部分的 max num ref frames 为2,即该码流的最大参考帧为2帧(上传的图片已进行遮挡处理)。
则需要将下列结构体中u32RefFrameNum设置为大于等于2的值,由于这个是需要时才会申请对应的内存空间,故可以设置大一些。
》》原帖地址
Q5:panel颜色显示不对如何定位问题?
A5:颜色显示不对一般由两个问题导致:硬件pin脚没有配对 & 软件图像经过csc格式转换导致的图像损失。
针对硬件pin脚没有配对的问题,可以通过关掉csc打纯色的pattern来确认问题,步骤如下:
1. 跑点屏的demo,初始化disp和panel;
2. 如果跑的是显示UI的demo,先下cmd:echo GUI_SHOW 0 off >/proc/mi_modules/fb/mi_fb0 关闭UI;
3. 通过reg关闭csc:riu_w 1129 30 bit0写0,riu_w 1129 3c bit0写0;
4. 通过reg打纯色pattern:SSD20X寄存器如下:I. bank 1129 1b bit15写1 II. 然后通过如下reg打纯色pattern:
SSD21X&SSD22X步骤一样,寄存器有差异,具体如下:
5. 根据打的纯色pattern去量对应的pin看是否只有对应的data pin有信号,如果不是就要查pin的配置是否有问题:一般是pin swap不对或者被复用成其他功能了。
针对软件图像经过csc格式转换导致图像损失的问题,一般指的是UI显示时RGB转换YUV造成的图像损失,我们可以选择UI不经过csc转换来理清问题:
SSD21X & SSD22X系列参考:
https://we.comake.online/#narrow/stream/65/near/15186
把FB_HWLAYER_DST和FB_HWLAYER_OUTPUTCOLOR设置0来bypass csc看UI颜色是否正常;
SSD20X系列:将FB_HWLAYER_OUTPUTCOLOR设置为0来bypass csc看UI颜色是否正常。
》》原帖地址
Q6:点SPI Panel时,要如何配置所用的spi控制器?
A6:spi panel的配置可参考 《SSD_TFT-LCD驱动使用参考》。
下面介绍如何配置spi控制器:
在加载fbtft_device.ko时,通过 busnum / cs 两个参数来控制,其中
busnum:SPI bus number (default=0)
cs:SPI chip select (default=0)
因此,文档中所用的spi控制器即为 spidev1.0
其它参数的含义参见 kernel/drivers/staging/fbtft/fbtft_device.c 中的对应参数说明。
此外,SPI驱动的配置参见 《SSD_SPI使用参考》。
》》原帖地址
Q7:运行 ts_calibrate 测试程序后,发现屏幕上会有残影存在
A7:这是由于 ts_calibrate 在清fb时,其将alpha值置成0xff而导致的,因此要避免出现残影,则可
1. 初始化fb时即将fb的alpha值都置成0xff(ts_calibrate默认时初始化成0x00的);
2. 清fb时将alpha值置成0x00(推荐的用法)。
》》原帖地址
Q8:如何调节panel和hdmi展频?
A8:参考如下表格说明,计算出span和step填入project\board\ini\misc\config.ini对应的屏参文件的m_wSpreadSpectrumFreq和m_wSpreadSpectrumRatio
》》原帖地址
如您在开发的过程中遇到点屏开发相关问题,或您需要技术支持、选型支持、商务支持,欢迎进入Comake社区开发论坛发帖咨询,社区技术工程师和运营人员将会及时响应您的诉求。
往期回顾
周五见| Sensor相关问题讲解
周五见| Uboot开发相关问题讲解
周五见| 工程师笔记之IQ与PQ调试相关FAQ
如何移植并裁剪FFmpeg库到RTOS上实现软解?
扫码进入论坛
原厂答疑|产品选型|官方资源
扫码咨询客服
SDK下载|芯片、开发板购买