龙讯lt6911uxc,lt9611uxc资料,有源码固件,支持4k60,支持对接海思3519a和3559a,hdmi转mipi,双通道4k60
摘要
本文深入剖析龙讯半导体(Lontium)两款主流视频桥接芯片LT6911UXC与LT9611UXC的参考固件代码。这两款芯片广泛应用于视频采集、转换和传输领域,尤其在对接海思(HiSilicon)3519A/3559A等SoC平台时扮演关键角色。本文将从整体架构、核心功能模块、初始化流程以及与海思平台的集成方式等多个维度,详细解读其固件实现原理,为开发者提供一份高质量的技术参考。
1. 芯片功能定位与整体架构
1.1 功能定位
- LT9611UXC: 主要作为MIPI CSI-2/DSI 接收端 (Rx),将来自摄像头或显示源的 MIPI 信号转换为HDMI 2.0输出。常用于视频采集卡、无人机图传接收端等场景。
- LT6911UXC: 主要作为HDMI 接收端 (Rx),将 HDMI 信号转换为MIPI CSI-2输出。常用于视频采集设备,将 HDMI 源(如游戏机、机顶盒)接入海思等嵌入式处理平台。
两者在系统中互为“镜像”,共同构成了 HDMI 与 MIPI 两大主流视频接口间的桥梁。
1.2 固件整体架构
两者的固件均采用基于 8051 内核的嵌入式 C 语言编写,遵循典型的嵌入式系统分层架构:
- 硬件抽象层 (HAL): 通过
register.c和register.h文件,将芯片内部成百上千个寄存器(如BK8000REG,BK8100REG等)映射为可直接读写的 C 变量,屏蔽了底层硬件细节。 - 驱动层: 包含 I2C 主机驱动 (
i2c_master.c)、UART 调试驱动 (uart.h)、定时器 (timer.h) 等基础外设驱动。 - 核心业务逻辑层: 围绕视频信号处理的核心功能,如 EDID 管理、HPD(热插拔检测)处理、视频时序解析与配置、SCDC(Status and Control Data Channel)管理等。
- 应用层/主循环:
main.c中的LT9611UX_MainLoop()或类似主循环函数,负责协调各模块工作,响应系统事件。
2. 核心功能模块详解
2.1 视频时序解析与配置
这是桥接芯片最核心的功能。固件通过解析输入信号的时序参数(水平/垂直前肩、后肩、同步脉宽、有效像素等),并将其与预定义的分辨率列表进行匹配。
- 分辨率列表: 在
config.c中定义了一个struct video_timing resolution[]数组,包含了从 VGA 到 4K@60Hz 的多种标准分辨率及其对应的时序参数和帧率(framerate)。
`c
// 示例:1920x1080@60Hz
{ 88, 44, 148, 1920, 2200, 4, 5, 36, 1080, 1125, 60, 16}
龙讯lt6911uxc,lt9611uxc资料,有源码固件,支持4k60,支持对接海思3519a和3559a,hdmi转mipi,双通道4k60
// {hfp, hs, hbp, hact, htotal, vfp, vs, vbp, vact, vtotal, framerate, vic}
`
- 时序匹配流程(
LT9611UXVideoCheck):
1. 通过读取芯片内部寄存器(如BKD090REG,BKD091REG)获取当前输入信号的hact和vact。
2. 遍历resolution[]数组,寻找hact和vact匹配的条目。
3. 进一步通过LT9611UXFramerateCheck()函数读取帧时间寄存器 (BK8688~8AREG) 来计算并匹配帧率。
4. 匹配成功后,将完整的时序参数(包括 PCLK 频率)填充到全局结构体videoformat中,并调用LT9611UXSet_Timing()将这些参数写入芯片的相应寄存器,完成输出端(HDMI 或 MIPI)的配置。
2.2 EDID (Extended Display Identification Data) 管理
EDID 是显示器向源设备(如显卡、播放器)宣告其能力(支持的分辨率、刷新率等)的数据块。
- EDID 读取(
LT9611UXReadEDID): - 芯片通过模拟 I2C 主机(
I2cMasterChoice(EDID_Config))与 HDMI 接收端(Sink)通信。 - 从 I2C 地址
0xA0读取标准的 128/256 字节 EDID 数据块。 - 进行 CRC 校验以确保数据完整性。
- EDID 写入(
LT9611UXWriteEdidToShadow/LT86121TXWriteEdidToShadow): - 对于LT9611UXC (MIPI->HDMI),它需要向 HDMI 源(Source)提供一个 EDID,告诉对方自己能接收什么样的信号。固件会将一个默认的 EDID(通常在
edid.c中定义,支持 4K60 等高规格)写入芯片内部的 EDID Shadow RAM (BKB00AREG和BKB0B0REG)。 - 对于LT6911UXC (HDMI->MIPI),其配套的 HDMI 发送端(如 LT86121TX)也需要向 HDMI 源提供 EDID。
2.3 HPD (Hot Plug Detect) 与中断处理
HPD 信号用于检测 HDMI 线缆的插拔状态。
- HPD 状态检测(
LT9611UXHPDCheck): - 定期读取寄存器
BK85A0REG的最低位,该位反映了物理 HPD 引脚的状态。 - 状态变化会更新全局标志
flaghdmihpd_state。
- HPD 中断驱动流程:
1. 当 HPD 从低变高(设备插入)时,主循环检测到flaghdmihpdstate变为真。
2. 触发LT9611UXEDIDRead()或LT9611UXWriteEdidTo_Shadow()。
3. 一旦 EDID 交换完成,HDMI 源设备就会开始发送视频信号,芯片随即进入视频时序解析和配置流程。
2.4 SCDC (Status and Control Data Channel) 管理
SCDC 是 HDMI 2.0 引入的用于传输状态和控制信息的通道,对实现 4K@60Hz 至关重要。
- SCDC 初始化(
LT9611UXTXSCDC_Set): - 固件通过 I2C 向地址
0xA8写入特定命令(如0x03),启用 HDMI 2.0 的 TMDSBitClock_Ratio 等特性。 - 代码中包含重试机制,确保 SCDC 配置成功。
- HDMI 2.0 模式判定:
- 在
LT9611UXVideoCheck函数末尾,通过判断videoformat.pclkkhz是否大于 550MHz 来区分 HDMI 1.4 和 HDMI 2.0 模式,并设置全局标志flaghdmi20_mode。
3. 与海思(HiSilicon)平台的集成
LT6911UXC资料merged.txt中包含了大量与海思 3519A/3559A 平台集成的示例代码,主要体现在sampleLT6911目录下。
3.1 MIPI 接口配置
海思平台通过其 VI(Video Input)模块接收来自 LT6911UXC 的 MIPI CSI-2 数据。集成的关键在于正确配置combodevattr_t结构体。
combo_dev_attr_t MIPI_LT6911UXC_ATTR = { .devno = 0, .input_mode = INPUT_MODE_MIPI, .data_rate = MIPI_DATA_RATE_X1, .img_rect = {0, 0, 1920, 1080}, // 图像分辨率 .mipi_attr = { DATA_TYPE_YUV422_8BIT, // 数据格式 HI_MIPI_WDR_MODE_NONE, {0, 1, 2, 3} // 使用的 MIPI 数据通道 } };3.2 通过 `ioctl` 配置 LT6911UXC
有趣的是,部分示例代码展示了通过海思的HIMIPITXSETCMDioctl 命令来间接配置 LT6911UXC。这表明在某些硬件设计中,LT6911UXC 的配置 I2C 接口可能连接到了海思 SoC 的 I2C 控制器上,而非其自身的 8051 内核。
// 通过海思驱动向 LT6911UXC 发送配置命令 cmd_info.devno = 0; cmd_info.cmd_size = 0x11; // 命令数据 cmd_info.data_type = 0x29; // 命令类型 cmd_info.cmd = cmd; ioctl(fd, HI_MIPI_TX_SET_CMD, &cmd_info);这种方式将 LT6911UXC 的配置逻辑上移到了运行 Linux 的海思主 CPU 上,提供了更大的灵活性。
4. 总结
LT6911UXC 和 LT9611UXC 的参考固件是一个结构清晰、功能完备的嵌入式系统典范。它通过精确的寄存器操作,实现了复杂的视频协议转换。其核心在于对视频时序的动态解析、EDID/HPD/SCDC 等 HDMI 辅助协议的稳健处理。
对于开发者而言,理解这套固件的工作流程,不仅能帮助快速完成产品开发,更能深入掌握 HDMI 和 MIPI 协议的交互细节。在对接海思等平台时,明确硬件连接方式(8051 自主运行 vs. 主 CPU 通过 I2C 配置)是成功集成的关键。本文的分析旨在为相关领域的工程师提供一个坚实的技术起点。