ZX296716 硬件映射与主线 Linux 内核可行性评估
基于 DTB 反编译与内核二进制分析 | 2026-07-30
1. SoC 概述
| 项目 | 规格 |
|---|
| SoC | ZXIC ZX296716 (ZTE 自研) |
| CPU | ARM Cortex-A53 四核 (ARMv8-A, AArch64) |
| GPU | ARM Mali-400 MP2 |
| 内存 | 1GB DDR3 (物理寻址 0x40000000-0x50000000) |
| 存储 | 4GB eMMC + SDIO 卡槽 |
| 网络 | GMAC (Synopsys DWC QoS Ethernet 4.20) |
| USB | 2x DWC2 OTG (0x05180000, 0x051c0000) |
| 视频解码 | G1V6 (H.264), G2V3 (H.265), H1V6 (H.264 编码) |
| 音频 | I2S x4, SPDIF x2, HDMI Audio, TSMC |
| 视频输出 | VOU, HDMI, TVENC (CVBS), YPbPr, LVDS, RGB LCD |
| 中断控制器 | ARM GICv3 |
| 当前内核 | 4.1.18 (ZTE 定制 aarch64) |
| 用户空间 | Android 4.4.2 (32-bit armhf) |
2. 完整外设寄存器映射
2.1 CPU 与系统控制
| 基地址 | 大小 | 设备 | Compatible | 说明 |
|---|
| 0x02a00000 | 0x10000 | GICv3 Distributor | arm,gic-v3 | 中断分发器 |
| 0x02a80000 | 0x20000 | GICv3 Redistributor | (同上) | CPU 重分发器 |
| 0x02aa0000 | 0x20000 | GICv3 CPU IF | (同上) | CPU 接口 |
| 0x02ac0000 | 0x20000 | GICv3 HYPRE | (同上) | 虚拟化扩展 |
| 0x02ae0000 | 0x20000 | GICv3 ITS | (同上) | 中断翻译服务 |
| 0x00117000 | 0x1000 | PCU | zte,zx296716-pcu | 电源控制单元 |
| 0x001160a0 | 0x10 | system-rsv-regs | zte,zx-sysctrl | 系统保留寄存器 |
| 0x001160b0 | 0x04 | aon-sys-ctrl | zte,zx-sysctrl | AON 系统控制 |
| 0x00122000 | 0x04 | aon-int-clr | zte,zx-sysctrl | AON 中断清除 |
2.2 存储控制器
| 基地址 | 大小 | 设备 | Compatible | 说明 |
|---|
| 0x05100000 | 0x1000 | mmc@0x05100000 | zxic,dw-mshc-6716 | eMMC (8-bit, HS200) |
| 0x05108000 | 0x1000 | mmc@0x05108000 | zxic,dw-mshc-6716 | SDIO (4-bit, UHS) |
| 0x05109000 | 0x1000 | mmc@0x05109000 | zxic,dw-mshc-6716 | SD 卡 (4-bit, UHS) |
| 0x11a000 | 0x1000 | efuse | zte,efuse | eFuse 读取 |
2.3 USB 控制器
| 基地址 | 大小 | 设备 | Compatible | 说明 |
|---|
| 0x05180000 | 0x40000 | usb@0x05180000 | zxic,dwc2 | USB OTG 0 |
| 0x051c0000 | 0x40000 | usb@0x051c0000 | zxic,dwc2 | USB OTG 1 |
2.4 网络
| 基地址 | 大小 | 设备 | Compatible | 说明 |
|---|
| 0x05200000 | 0x2000 | ethernet2@0x5200000 | snps,dwc-qos-ethernet-4.20 | GMAC (stmmac) |
2.5 GPU
| 基地址 | 大小 | 设备 | Compatible | 说明 |
|---|
| 0x05250000 | 0x10000 | gpu@5250000 | arm,mali-400, arm,mali-utgard | Mali-400 MP2 |
2.6 视频处理
| 基地址 | 大小 | 设备 | Compatible | 说明 |
|---|
| 0x05320000 | 0x20000 | vou@0x05320000 | zte,zx296716-vou | 视频输出单元 |
| 0x05320a00 | 0x1000 | tvenc@0x05320a00 | zte,zx296716-tvenc | CVBS 编码器 |
| 0x05320b00 | 0x100 | rgblcd@0x05320b00 | zte,zx296716-rgblcd | RGB LCD (disabled) |
| 0x05320d00 | 0x100 | ypbpr@0x05320d00 | zte,zx296716-ypbpr | YPbPr (disabled) |
| 0x05321000 | 0x4000 | hdmi@0x05321000 | zte,zx296716-hdmi | HDMI 控制器 |
| 0x05340000 | 0x1000 | g2v3@05340000 | zte,zx296716-hde | H.265 解码器 |
| 0x05340f00 | 0x1000 | hvdecrm@0x05340f00 | zte,zx296716-hvdecrm | 视频解码时钟/复位 |
| 0x05341000 | 0x800 | g1v6@05341000 | zte,zx296716-vde | H.264 解码器 |
| 0x05342000 | 0x1000 | sappu@0x05342000 | zte,zx296716-sappu | SPU 协处理器 |
| 0x05343000 | 0x1000 | h1v6@05343000 | zte,zx296716-hx280enc | H.264 编码器 |
2.7 音频
| 基地址 | 大小 | 设备 | Compatible | 说明 |
|---|
| 0x05260000 | 0x1000 | audiocrm | zte,zx-audiocrm | 音频时钟控制 |
| 0x05262000 | 0x1000 | i2s@0x05262000 | zte,zx-i2s | I2S 0 (okay) |
| 0x05263000 | 0x1000 | i2s@0x05263000 | zte,zx-i2s | I2S 1 (disabled) |
| 0x05264000 | 0x1000 | i2s@0x05264000 | zte,zx-i2s | I2S 2 (disabled) |
| 0x05265000 | 0x1000 | i2s@0x05265000 | zte,zx-i2s | I2S 3 (disabled) |
| 0x05268000 | 0x1000 | spdif@0x05268000 | zte,zx-spdif | SPDIF 0 |
| 0x05269000 | 0x1000 | spdif@0x05269000 | zte,zx-spdif | SPDIF 1 |
| 0x0526a000 | 0x10 | tempsensor | zte,zx-thermal-6716 | 温度传感器 |
2.8 低速外设
| 基地址 | 大小 | 设备 | Compatible | 说明 |
|---|
| 0x00111000 | 0x1000 | irdec | zte,zx296716-irdec | 红外解码 |
| 0x00112000 | 0x1000 | audio_i2c0 | zte,zx-i2c | 音频 I2C (disabled) |
| 0x00115000 | 0x1000 | rtc | zte,zx296718-rtc | RTC |
| 0x0011f000 | 0x1000 | uart@11f000 | zte,zx296718-uart | UART (串口控制台) |
| 0x0521E000 | 0x1000 | i2c3 | zte,zx-i2c | I2C 3 (音频 DAC/HDMI PHY) |
| 0x05305000 | 0x1000 | watchdog | zte,zx296718-wdt | 看门狗 |
| 0x05300000 | 0x1000 | dma-controller | zte,zx-dma | DMA 控制器 |
| 0x05238000 | 0x1000 | pwm | zte,pwm | PWM |
2.9 GPIO / Pinctrl
| 基地址 | 大小 | 设备 | 说明 |
|---|
| 0x00110000 | 0x40 | gpio@00110000 | GPIO 7 |
| 0x00110040 | 0x40 | gpio@00110040 | GPIO 8 |
| 0x0521d000 | 0x40 | gpio@0521d000 | GPIO 0 |
| 0x0521d040 | 0x40 | gpio@0521d040 | GPIO 1 |
| 0x0521d080 | 0x40 | gpio@0521d080 | GPIO 2 |
| 0x0521d0c0 | 0x40 | gpio@0521d0c0 | GPIO 3 |
| 0x0521d100 | 0x40 | gpio@0521d100 | GPIO 4 |
| 0x0521d140 | 0x40 | gpio@0521d140 | GPIO 5 |
| 0x0521d180 | 0x40 | gpio@0521d180 | GPIO 6 |
| 0x05302000 | 0x40 | pinctrl@05302000 | Pinctrl 0-15 (16 个 4KB 寄存器) |
| 0x05303108 | 0x04 | sys_cfg_vou | VOU 系统控制 |
| 0x05303170 | 0x08 | sys_cfg_dac | DAC 系统控制 |
| 0x05303194 | 0x04 | pinctrl@05303194 | TSMC 配置 |
2.10 时钟控制器
| 基地址 | 大小 | 设备 | Compatible | 说明 |
|---|
| 0x05301000 | 0x1000 | topcrm | zte,zx296716-topcrm | 主时钟控制器 |
| 0x05301060 | 0x08 | reset@5301060 | zte,zx296718-reset | 主复位控制器 |
| 0x05260000 | 0x1000 | audiocrm | zte,zx-audiocrm | 音频时钟控制器 |
| 0x05340f00 | 0x1000 | hvdecrm | zte,zx296716-hvdecrm | 视频解码时钟控制器 |
3. 中断映射
所有设备通过 GICv3 (phandle 0x07) 连接。
| 设备 | IRQ 类型 | IRQ 号 |
|---|
| mmc@0x05108000 | SPI | 0 |
| mmc@0x05100000 | SPI | 5 |
| ethernet2@0x5200000 | SPI | 6 |
| i2c audio_i2c0 | SPI | 35 |
| tempsensor | SPI | 35 |
| gpio@0521d000 | SPI | 36 |
| irdec | SPI | 64 |
| vou | SPI | 31, 32 |
| hdmi | SPI | 33 |
| rgblcd | SPI | 35 |
| g1v6 (H.264 dec) | SPI | 17 |
| g2v3 (H.265 dec) | SPI | 17 |
| h1v6 (H.264 enc) | SPI | 16 |
| sappu | SPI | 30 |
| watchdog | SPI | 90 |
| mailbox | SPI | 110 |
4. 时钟系统详解
4.1 topcrm (0x05301000) — 主时钟控制器
topcrm 是 ZX296716 的根时钟控制器,负责 PLL、分频器和时钟门控。
| Clock ID | 十进制 | 设备 | 信号名 | 功能说明 |
|---|
| 0x0c | 12 | cpufreq | a53_wclk | Cortex-A53 工作时钟 |
| 0x0f | 15 | mmc@0x05109000 | ciu | SD 卡接口时钟 |
| 0x10 | 16 | mmc@0x05109000 | biu | SD 卡总线时钟 |
| 0x11 | 17 | mmc@0x05108000 | ciu | SDIO 接口时钟 |
| 0x12 | 18 | mmc@0x05108000 | biu | SDIO 总线时钟 |
| 0x13 | 19 | mmc@0x05100000 | ciu | eMMC 接口时钟 |
| 0x16 | 22 | mmc@0x05100000 | biu | eMMC 总线时钟 |
| 0x28 | 40 | watchdog@0x05305000 | wdtclk | 看门狗时钟 |
| 0x2a | 42 | g1v6@05341000 | g1v6_aclk | H.264 解码器 AHB 时钟 |
| 0x2c | 44 | g1v6, g2v3 | g1v6_pclk / g2v3_pclk | 视频解码 APB 时钟 |
| 0x2d | 45 | h1v6@05343000 | h1v6_aclk | H.264 编码器 AHB 时钟 |
| 0x2e | 46 | h1v6@05343000 | h1v6_pclk | H.264 编码器 APB 时钟 |
| 0x2f | 47 | gpu@5250000 | clk_mali | Mali GPU 时钟 |
| 0x32 | 50 | sappu@0x05342000 | sappu_wclk | SPU 工作时钟 |
| 0x33 | 51 | sappu@0x05342000 | sappu_pclk | SPU APB 时钟 |
| 0x34 | 52 | vou@0x05320000 | vou_aclk | VOU AHB 时钟 |
| 0x36 | 54 | vou@0x05320000 | vou_chn_wclk | VOU 通道工作时钟 |
| 0x41 | 65 | usb@0x05180000 | otg | USB0 OTG 时钟 |
| 0x42 | 66 | usb-phy0 | phyclk | USB0 PHY 时钟 |
| 0x43 | 67 | usb@0x051c0000 | otg | USB1 OTG 时钟 |
| 0x44 | 68 | usb-phy1 | phyclk | USB1 PHY 时钟 |
| 0x45 | 69 | ethernet2@0x5200000 | gmac_rmii_clk | GMAC RMII 时钟 |
| 0x46 | 70 | ethernet2@0x5200000 | gmac_pclk | GMAC APB 时钟 |
| 0x47 | 71 | ethernet2@0x5200000 | gmac_aclk | GMAC AHB 时钟 |
| 0x48 | 72 | ethernet2@0x5200000 | gmac_refclk | GMAC 参考时钟 |
| 0x49 | 73 | tempsensor@0x0526A000 | tempsensor_gate | 温度传感器门控时钟 |
4.2 hvdecrm (0x05340f00) — 视频解码时钟控制器
通过 phandle 0x2f 引用,提供视频解码模块的时钟和复位。
| Clock ID | 设备 | 功能 |
|---|
| 0x04 | sappu | SPU 电源域 |
4.3 lsp_clk — 低速外设时钟
通过 phandle 0x33 引用,提供 UART、I2C、DMA 等低速外设时钟。
| 设备 | 信号 |
|---|
| uart@11f000 | uartclk |
| audio_i2c0@0x00112000 | scl |
| dma-controller@0x05300000 | dmaclk |
| lsp0_i2c3@0x0521E000 | clk0 |
4.4 audio_bus (0x05260000) — 音频域时钟
通过 phandle 0x3b 引用,NIC400 总线上的音频子系统时钟。
| Clock ID | 设备 | 信号 |
|---|
| 0x01 | i2s@0x05262000 | i2s_wclk |
| 0x02 | i2s@0x05262000 | i2s_pclk |
| 0x03 | i2s@0x05263000 | i2s_wclk |
| 0x04 | i2s@0x05263000 | i2s_pclk |
| 0x05 | i2s@0x05264000 | i2s_wclk |
| 0x06 | i2s@0x05264000 | i2s_pclk |
| 0x07 | i2s@0x05265000 | i2s_wclk |
| 0x08 | i2s@0x05265000 | i2s_pclk |
| 0x0b | spdif@0x05268000 | spdif_wclk |
| 0x0c | spdif@0x05268000 | spdif_pclk |
| 0x0d | spdif@0x05269000 | spdif_wclk |
| 0x0e | spdif@0x05269000 | spdif_pclk |
| 0x13 | tempsensor | tempsensor_pclk |
| 0x14 | tempsensor | tempsensor_wclk |
4.5 nic400_bus — 媒体子系统总线时钟
通过 phandle 0x60 引用。
| Clock ID | 设备 | 信号 |
|---|
| 0x01 | g2v3@05340000 | g2v3_aclk |
| 0x02 | g1v6, g2v3 | nic400_mclk |
5. 复位系统
| 复位控制器 | 基地址 | 复位 ID | 设备 | 信号 |
|---|
| topcrm (0x2f) | 0x05301060 | 4 | mmc@0x05100000 | eMMC reset |
| topcrm (0x2f) | 0x05301060 | 26 | vou@0x05320000 | vou_rst |
| hvdecrm | 0x05340f00 | — | — | 视频解码复位 |
6. 主线内核可行性评估
6.1 已有主线驱动的 IP 核 ✅
| IP 核 | 设备 | 主线驱动 | 状态 | 备注 |
|---|
| ARM GICv3 | 中断控制器 | irq-gic-v3 | ✅ 完全支持 | 标准实现 |
| DesignWare MMC | eMMC/SD/SDIO | dw-mmc | ✅ 基本可用 | 需要 DT 调整 |
| DesignWare DWC2 | USB OTG | dwc2 | ✅ 完全支持 | 标准实现 |
| Synopsys stmmac | GMAC | stmmac | ✅ 完全支持 | DWC QoS Ethernet |
| ARM Mali-400 | GPU | lima (DRM) | ✅ 可用 | 需要 mesa-lima |
| DesignWare I2C | I2C 控制器 | i2c-designware | ✅ 可用 | 标准 DW I2C |
| ARM Generic Timer | 系统定时器 | arm_arch_timer | ✅ 完全支持 | 标准实现 |
| thermal | 温度传感器 | zx-thermal | ⚠️ 部分 | 可能需要适配 |
| PWM | PWM 控制器 | zx-pwm | ⚠️ 部分 | 可能需要适配 |
6.2 需要新写驱动的 ZTE 私有模块 ❌
| 模块 | 优先级 | 难度 | 工作量估算 | 说明 |
|---|
| 时钟控制器 (topcrm) | 🔴 必需 | 高 | 2-3 周 | 核心依赖,所有外设需要 |
| 复位控制器 | 🔴 必需 | 低 | 2-3 天 | 通常与时钟驱动合并 |
| UART (串口) | 🔴 必需 | 中 | 1-2 周 | 控制台输出,12 字节寄存器步长 |
| GPIO | 🟡 重要 | 中 | 1 周 | 9 组 GPIO 控制器 |
| Pinctrl | 🟡 重要 | 中 | 1 周 | pinctrl-single 兼容 |
| Sysctrl | 🟡 重要 | 中 | 3-5 天 | 多功能系统控制寄存器 |
| RTC | 🟢 可选 | 低 | 2-3 天 | zx296718-rtc |
| Watchdog | 🟢 可选 | 低 | 1-2 天 | zx296718-wdt |
| IR Decoder | ⚪ 不需要 | — | — | 遥控器,无头服务器不需要 |
| Video (VOU/HDMI) | ⚪ 不需要 | — | — | 无头服务器不需要 |
| Video Decode | ⚪ 不需要 | — | — | 无头服务器不需要 |
| Audio | ⚪ 不需要 | — | — | 无头服务器不需要 |
6.3 工作量估算
最小可启动系统(串口 + 网络 + 存储):约 4-6 周
| 阶段 | 任务 | 工作量 |
|---|
| Phase 1 | topcrm 时钟驱动(含复位) | 2-3 周 |
| Phase 2 | UART 驱动 | 1-2 周 |
| Phase 3 | GPIO + Pinctrl | 1 周 |
| Phase 4 | 集成测试 + DT 绑定 | 1-2 周 |
完整系统(含 GPU/视频):额外 2-3 个月
6.4 关键技术挑战
topcrm 时钟驱动:最大挑战。需要逆向寄存器布局(PLL 配置、分频器、门控位域)。DTB 只给出了时钟 ID 到设备的映射,但寄存器偏移和位域需要从内核二进制或 ZTE BSP 源码中推断。
UART 驱动:已确认寄存器步长为 12 字节(非标准 16 字节),需要特殊处理。
缺少文档:ZX296716 没有公开的 TRM(技术参考手册),所有寄存器信息需要从 DTB 和内核二进制中逆向。
内存映射:1GB DDR 从 0x40000000 开始,内核需正确配置 MMU 和内存控制器初始化。
6.5 推荐方案
方案 A:主线移植(推荐)
- 优先编写 topcrm 时钟驱动(核心依赖)
- 移植 UART/GPIO 驱动
- 使用 DesignWare 现有驱动
- 预计 4-6 周达到基本可用
方案 B:使用 ZTE BSP 内核
- 基于现有 4.1.18 内核优化
- 更快(1-2 周),但技术债务高
- 不适合长期维护
方案 C:等待社区支持
- 检查是否有其他 ZX2967xx 设备在 mainline 中
- 社区可能已有部分驱动(如 zte,pwm)
- 时间不确定
建议:选择方案 A,优先编写 topcrm 时钟驱动。这是所有其他驱动的基础。一旦时钟驱动工作,后续驱动可以并行开发。
7. 附录:DTB 中的关键 Phandle 映射
| Phandle | 设备 | 类型 |
|---|
| 0x07 | interrupt-controller@2a00000 | GICv3 |
| 0x1b-0x2d | pinctrl@00119000 等 | Pinctrl 控制器 |
| 0x2e | clock-controller@05301000 | topcrm |
| 0x2f | reset@5301060 | 复位控制器 |
| 0x33 | lsp_clk | 低速外设时钟 |
| 0x35 | gpio@0521d0c0 | GPIO 3 |
| 0x3b | clock-controller@0x05260000 | 音频时钟控制器 |
| 0x54 | gpio@0521d100 | GPIO 4 |
| 0x60 | clock-controller@05340f00 | hvdecrm |
| 0x61 | gpio@0521d080 | GPIO 2 |
| 0x62 | gpio@00110040 | GPIO 8 |
| 0x63 | gpio@00110000 | GPIO 7 |
本文档基于 DTB 反编译和内核二进制分析生成。寄存器布局为推测值,需要实际硬件验证。