周五见| 点屏开发相关问题讲解

Comake Online


作者| 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 


展频计算v2.xlsx


》》原帖地址



如您在开发的过程中遇到点屏开发相关问题,或您需要技术支持、选型支持、商务支持,欢迎进入Comake社区开发论坛发帖咨询,社区技术工程师和运营人员将会及时响应您的诉求。



往期回顾


周五见| Sensor相关问题讲解


周五见| Uboot开发相关问题讲解


周五见| 工程师笔记之IQ与PQ调试相关FAQ


如何移植并裁剪FFmpeg库到RTOS上实现软解?





扫码进入论坛

原厂答疑|产品选型|官方资源



扫码咨询客服

SDK下载|芯片、开发板购买


X 提交 下一题

查看更多