- 收藏
- 点赞
- 分享
- 举报
SS928自定义屏幕时序问题
我在调试海鸥派 Euler Pi / SS928V100 上的 HDMI 显示输出,我用的是自购的HDMI显示屏,时序与普通屏幕略有不同,想问一下 SS928 的 HDMI/VO 是否支持在应用层通过 MPP sample 修改 HDMI 输出时序,以适配一块 1080×1920 竖屏。
1. 当前硬件和软件环境
板卡:海鸥派 Euler Pi
SoC:SS928V100
烧录固件:openEuler Embedded v1.1.2
MPP/SDK:SS928V100_SDK_V2.0.2.2,对应板端 /root/device_sample 程序
摄像头:IMX347
转接板:EULER_4SEN V1.0
摄像头接法:IMX347 接 EULER_4SEN 的 sensor0,2lane,I2C7
当前摄像头链路已经跑通,使用的是单目 IMX347,
所以目前 VI / ISP / IMX347 / I2C7 / MIPI 2lane 基本确认是通的。
2. 当前屏幕情况
现在主要问题在 HDMI 显示屏时序适配。屏幕厂家给的时序如下:
TIMING g_TimingStr =
{
137028, // PixelClock/1000,单位 kHz
1176, // Htotal
1080, // Hactive
72, // Hfp
8, // Hsw
16, // Hbp
1942, // Vtotal
1920, // Vactive
14, // Vfp
2, // Vsw
6, // Vbp
1, // Hspol,正极性
1 // Vspol,正极性
};
也就是说厂家给的是一块竖屏 HDMI timing:
分辨率:1080 × 1920
刷新率:60Hz
Pixel Clock:约 137.028 MHz
Htotal:1176
Vtotal:1942
Hactive:1080
Vactive:1920
HFP / HSW / HBP:72 / 8 / 16
VFP / VSW / VBP:14 / 2 / 6
HSYNC / VSYNC:正极性
另外,我从板端 /proc/umap/hdmi0_sink 里读到屏幕 EDID,驱动解析出的 detail timing 是:
hact = 1080
vact = 1920
pclk = 137m
hfb = 72
hpw = 8
hbb = 24
vfb = 14
vpw = 2
vbb = 8
ihs = YES
ivs = YES
idv = NO
这里 EDID 解析出的后肩和厂家给的参数略有不同:
厂家:HBP=16, VBP=6
EDID:HBP=24, VBP=8
所以后续我尝试时优先按 EDID 解析出的 detail timing 做过配置。
3. 原始问题现象
原版 sample_vio 或 sample_hdmi 在接这块屏时,HDMI 初始化阶段会失败:
ss_mpi_hdmi_set_attr failed at sample_comm_vo_hdmi_start: LINE: 534/535 with 0xa0288015!
sample_hdmi 也会报同样错误:
ss_mpi_hdmi_set_attr failed at sample_comm_vo_hdmi_start: LINE: 535 with 0xa0288015!
sample_hdmi_start:[646]:ret is failure!
test case <hdmi_mst_audio_start_hdmi>not pass
这说明问题是公共的 HDMI/VO 输出配置。
后来发现,运行 sample_hdmi 进入交互命令后,执行:
hdmi_color_mode 00
也就是把 HDMI color mode 改成 RGB 后,显示器可以出现输出,屏幕显示只有一半内容(如图)
4. 当前已经成功的修改
我修改了 sample_comm_vo.c,只做了一个保守改动:把 HDMI 默认 color mode 改为 RGB。
核心改动是把:
static td_bool g_vo_hdmi_rgb_mode = TD_FALSE;
改成:
static td_bool g_vo_hdmi_rgb_mode = TD_TRUE;
改完后重新编译 sample_hdmi 和 sample_vio,可以做到程序启动后不需要手动输入 hdmi_color_mode 00,HDMI 就可以直接输出。
此时 sample_vio 已经可以跑通并显示摄像头画面,但显示方向和显示区域不对:画面方向不符合竖屏,且有半屏/部分区域不亮或显示不完整。
5. 当前成功基线下的 /proc 状态
在保守版 RGB 修改成功运行后,我用 Ctrl+Z 暂停 sample_vio,读取 /proc/umap/vo、/proc/umap/hdmi0、/proc/umap/hdmi0_vo、/proc/umap/hdmi0_sink。
当前成功基线实际仍然是标准 1080P60 横屏输出:
VO device:
intf_sync = 1080P@60
src_clk = 148500
pixel_clk = 148500
dev_frame_rate = 60
VO video layer:
disp_width = 1920
disp_height = 1080
img_width = 1920
img_height = 1080
pixel_format = YVU-SP420
VO channel:
chn_width = 1920
chn_height = 1080
rotation_angle = 0
HDMI 状态里也显示:
video timing = 1920*1080p60 16:9
disp fmt = 1080P@60
current format = 1920*1080p60 16:9(vic=16)
pixel clk = 148500
in color space = RGB
out color space = RGB
所以现在虽然 RGB 输出能点亮屏幕,但物理 HDMI 时序仍然是:
1920 × 1080 @ 60Hz
Pixel Clock = 148.5 MHz
而屏幕原生需要:
1080 × 1920 @ 60Hz
Pixel Clock ≈ 137 MHz
这应该就是显示方向和半屏显示异常的根因。
6. 已尝试过的应用层时序适配
我尝试在 sample_comm_vo.c 中改 HDMI/VO 输出时序,主要试了以下几条路线。
6.1 尝试使用内置枚举 OT_VO_OUT_1080x1920_60
我发现 sample 里或头文件里存在类似:
OT_VO_OUT_1080x1920_60
于是尝试把 VO 配置从:
OT_VO_OUT_1080P60
1920x1080
改成:
OT_VO_OUT_1080x1920_60
1080x1920
运行后日志显示:
vo_start: intf_type=0x10 intf_sync=47 rect=1080x1920 img=1080x1920 fps=60
sample_comm_vo_start_dev failed with 0xa00f800c
也就是说这个枚举虽然存在,但当前板端运行时 VO HDMI 驱动不接受该输出制式。
6.2 尝试 OT_VO_OUT_USER + 1080×1920 自定义时序
之后我尝试走 USER timing:
intf_sync = OT_VO_OUT_USER
disp_rect = 1080x1920
image_size = 1080x1920
dev_frame_rate = 60
并设置 sync 参数为 EDID 解析出的 detail timing:
hact = 1080
hfb = 72
hpw = 8
hbb = 24
vact = 1920
vfb = 14
vpw = 2
vbb = 8
iop = 1
ihs = 0
ivs = 0
PLL 尝试过整数 137MHz,也尝试过小数 PLL 约 137.020MHz。例如:
fb_div = 91
frac = 5813300
ref_div = 2
post_div1 = 4
post_div2 = 2
pre_div = 1
dev_div = 1
clk_reverse = 0
fps = 60
运行结果:
vo_start user-timing: intf_type=0x10 intf_sync=48 rect=1080x1920 img=1080x1920 fps=60
set_pub_attr USER sync: hact=1080 hfb=72 hpw=8 hbb=24 vact=1920 vfb=14 vpw=2 vbb=8 iop=1 ihs=0 ivs=0
set_user_sync_info: fb_div=91 frac=5813300 ref_div=2 post_div1=4 post_div2=2 pre_div=1 dev_div=1 clk_reverse=0 fps=60
ss_mpi_vo_set_user_sync_info failed with 0xa00f8007
也就是说:
ss_mpi_vo_set_pub_attr() 似乎能过,
但 ss_mpi_vo_set_user_sync_info() 失败,错误码 0xa00f8007。
7. 当前我的判断
目前我可以稳定做到:
sample_vio 跑通
IMX347 出图
HDMI RGB 输出
1080P60 横屏标准时序下显示器能亮
但无法在应用层成功切到:
1080×1920@60
137MHz pixel clock
我已经验证过:
1. RGB only + 1080P60:成功
2. OT_VO_OUT_1080x1920_60:VO start 失败,0xa00f800c
3. OT_VO_OUT_USER + 1080×1920:ss_mpi_vo_set_user_sync_info 失败,0xa00f8007
4. OT_VO_OUT_USER + 原版 1080P60 参数:同样 ss_mpi_vo_set_user_sync_info 失败,0xa00f8007
所以我想确认:
在海鸥派 Euler Pi / SS928V100 / openEuler Embedded 当前发布固件中,是否支持通过应用层 MPP 接口修改 HDMI/VO 输出时序?尤其是:
ss_mpi_vo_set_pub_attr()
ss_mpi_vo_set_user_sync_info()
ss_mpi_hdmi_set_attr()
这几类接口能否用于 HDMI 自定义时序?
8. 想确认的问题
- 当前 SS928V100 openEuler 固件下,HDMI VO 是否支持
OT_VO_OUT_USER? ss_mpi_vo_set_user_sync_info()在 HDMI 输出接口下是否可用?还是只支持 BT/MIPI/LCD 等其他输出接口?- 如果应用层不能使用 USER timing,是否需要修改内核/驱动/MPP 库里的 VO timing table?
- 是否可以在驱动或固件中新增
1080x1920@60这个 HDMI 输出制式? OT_VO_OUT_1080x1920_60枚举虽然存在,但运行时报0xa00f800c,是否说明当前驱动没有注册或没有支持该 timing?- 对这块屏,是否有推荐的适配方式?是继续从应用层 sample 改,还是需要贵司提供适配后的固件/库?
- 是否有官方示例可以演示 HDMI 输出自定义 pixel clock、H/V total、front porch、sync width、back porch?
- 如果不能改 HDMI 物理时序,我是否只能保持
1080P60 + RGB,然后在 VPSS/VGS/VO channel 上做旋转、缩放、裁切来适配显示?
目前最希望确认的是:
有没有办法只通过应用层修改 sample_comm_vo.c / sample_vio.c,让 HDMI 输出真正变成 1080×1920@60、137MHz,以适配这块竖屏?
如果不支持,希望能确认需要修改哪一层:MPP sample、MPP 库、内核驱动、设备树,还是需要重新打包固件。
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片
-
142013-12-10 23:10:39
-
2025-11-05 16:36:05
-
2015-09-21 16:26:37
-
02025-08-26 16:43:38
-
2025-12-30 15:43:43
-
2015-08-08 13:26:41
-
2019-10-29 21:36:15
-
2019-10-31 18:18:43
-
2016-08-17 20:53:08
-
2018-12-06 09:58:10
-
2020-07-07 17:58:02
-
2024-07-01 16:57:35
-
2025-12-23 17:14:52
-
2018-06-25 14:56:28
-
2020-10-31 11:12:08
-
2019-01-02 14:05:12
-
2026-05-16 17:49:05
-
112024-10-12 09:50:58
-
2022-12-11 13:28:56
-
100Hi3519DV500移植阿里云aliyun-oss-c-sdk-3.11.2
-
10【悬赏】Hi3519DV500在新打板的硬件上调用svp_acl_mdl_execute 会宕机
-
10海思 PQTools 使用时显示无法注册ae库 awb库
-
50求imx291 mclk37.125M 4lane 1920x1080@30fps WDR的初始化系列
-
5Hi3516DV500-DMEBPLUS_6L_T_LPDDR4_2400M-2GB_32bit-A55_850M.xlsm
-
25鸿鸥派【Hi3519DV500】双摄sc450ai+10.1显示屏点不亮
-
5SS626接WCH HUB芯片CH335F问题
-
10求一份RK3588下IMX586摄像头的IQ json文件
-
50Hi3519DV500+OS04A10 slave驱动 (双目同步问题)
-
103616 3403 FPN标定黑斑问题
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明

微信扫码分享
QQ好友

