当前位置:首页>Linux>小白也能懂-HDMI linux驱动框架

小白也能懂-HDMI linux驱动框架

  • 2026-07-03 00:19:23
小白也能懂-HDMI linux驱动框架

大家好,我是快乐学习,开心分享的科技探索员 🎉

前两篇文章中,我们从物理层的TMDS编码聊到协议层的EDID/HDCP/CEC/HDR,把HDMI的「硬件原理」和「协议栈」基本拆解完了。

但作为嵌入式工程师,光懂协议还不够——当你拿到一块新板子,把HDMI线插上去,屏幕不亮怎么办?这就需要了解Linux下的HDMI驱动框架了。

这篇,我们就从Linux DRM/KMS架构讲起,深入HDMI驱动层的ConnectorEncoderPHY配置,再到HDCP驱动实现、音频通道配置,最后用modetest工具带你走一遍从黑屏到点亮的完整调试流程。

⚠️ 本文为「小白也能懂·HDMI」系列第篇(最终篇),建议先阅读第①②篇。

一、Linux显示子系统架构:DRM/KMS

Linux中,所有显示相关的驱动都统一在一个框架下——DRMDirect Rendering Manager)。而负责「设置显示模式」的子系统,叫KMSKernel Mode Setting)。

1.1 DRM/KMS核心组件

理解HDMI驱动,首先要搞清楚DRM/KMS中的几个核心角色。可以把它们想象成一条「显示流水线」:

1Plane(图层):管理显示缓冲区,决定画面内容。包括主画面(Primary)、光标(Cursor)、覆盖层(Overlay)。

2CRTC(时序控制器):控制扫描时序、刷新率、像素时钟。每个CRTC对应一个独立的显示管道。

3Encoder(编码器):把CRTC的并行数字信号转换为串行信号,送到物理接口(HDMI/DP等)。

4Bridge(桥接芯片):可选的中间转换芯片,如HDMIMIPILVDSHDMI等。

5Connector(连接器):代表物理输出接口,管理热插拔(HPD)、EDID读取、HDCP状态。

▲ drm kms architecture

▲ 核心数据流:App → DRM ioctl → KMS原子提交 → CRTC(时序) → Encoder(编码) → Bridge(桥接) → Connector(输出) → PHY(物理层) → TMDS/FRL信号 → 显示器

1.2 原子提交(Atomic Commit

现代DRM使用「原子提交」机制来统一管理硬件状态变更。所谓原子,就是所有配置(CRTC模式、Plane位置、Encoder使能等)要么全部生效,要么全部回滚,不会出现「画面改了一半」的情况。

drm_atomic_helper_check()// 校验所有配置是否合法

drm_atomic_helper_commit() // 原子提交,一次性应用到硬件

💡 原子提交大幅简化了驱动的状态管理逻辑,避免出现不一致的中间状态。

二、HDMI Connector驱动

ConnectorHDMI驱动的「对外窗口」——它负责检测显示器插拔、读取EDID、管理HDCP状态,向上层报告连接器状态。

2.1 HPD热插拔检测

HDMI线缆插入或拔出时,HPDHot Plug Detect)引脚的电平会发生变化。驱动通过GPIO中断来捕获这个事件,然后触发连接器的探测流程。

完整的HPD处理流程:

1HDMI线缆插入 → HPD引脚电平变化(低高)

2GPIO中断触发 → 进入中断处理函数

3、调用 drm_helper_hpd_irq_event() → 调度输出探测

4、执行 connector->detect() 回调 → 返回连接状态

5、如果已连接,自动读取EDID并创建display_mode列表

▲ hdmi connector flow

⚠️ 如果HPD一直不触发,首先检查GPIO配置、中断注册、上拉电阻(通常10K-100K)。

2.2 EDID在驱动中的读取

内核通过DDCI2C)通道读取显示器的EDID数据。关键函数调用链:

drm_get_edid(connector, adapter)// 256字节EDID

→ i2c_transfer()// I2C读操作

→ Address 0x50, 256字节// DDC设备地址

drm_edid_block_valid()// 校验EDID合法性

drm_do_add_edid_modes()// 解析并添加显示模式

关键调试命令:

cat /sys/class/drm/card0-HDMI-A-1/edid | edid-decode

或者用 hexdump 查看原始数据

hexdump -C /sys/class/drm/card0-HDMI-A-1/edid | head -20

2.3 Connector回调函数集

HDMI Connector通过 drm_connector_funcs 回调函数集与DRM核心交互:

回调函数

职责

调用时机

detect()

检测HDMI线缆是否连接

HPD中断 / 用户查询

fill_modes()

填充支持的显示模式列表

首次连接 / 模式变更

atomic_get_property()

读取connector属性

属性查询

atomic_set_property()

设置connector属性

原子提交时

destroy()

释放connector资源

驱动卸载

三、HDMI EncoderPHY配置

Encoder负责把CRTC输出的显示数据编码为HDMI协议所需的信号格式,PHY则负责把这些数字信号变成差分电信号发送出去。

3.1 时钟链路:从OSCTMDS

HDMI的像素时钟是整个显示系统的「心跳」。时钟链路从振荡器(OSC)开始,经过PLL倍频、分频器调整,最终生成精确的像素时钟:

1、晶振(OSC):通常27MHz基准时钟

2PLL倍频:根据目标分辨率计算倍频系数N

3、分频器:分频系数M,生成精确像素时钟

4TMDS字符时钟:像素时钟 × 108b/10b编码开销)

5PHY串行时钟:决定差分信号的传输速率

▲ phy clock config

典型像素时钟:

显示模式

像素时钟

HDMI版本

单通道速率

1080P@60Hz

148.5 MHz

HDMI 1.4

1.485 Gbps

4K@30Hz

297 MHz

HDMI 1.4

2.97 Gbps

4K@60Hz

594 MHz

HDMI 2.0

5.94 Gbps

8K@60Hz

1200 MHz

HDMI 2.1

12 Gbps (FRL)

⚠️ 像素时钟精度偏差需控制在 +/-0.5% 以内,否则显示器可能无法同步,表现为花屏或黑屏。

3.2 TMDS vs FRL模式

HDMI 2.0及以下使用TMDS模式,HDMI 2.1引入了全新的FRLFixed Rate Link)模式:

TMDS模式:HDMI 2.0及以下)

● 3对数据 + 1对时钟 = 4对差分线

● 8b/10b编码,20%带宽开销

● 单通道最高6GbpsHDMI 2.0

● 差分摆幅约800mV

FRL模式:HDMI 2.1

● 34 Lane数据通道,无独立时钟线

● 16b/18b编码,约11%开销

● Lane最高12Gbps

● 内置FEC前向纠错(Reed-Solomon

● CDRClock Data Recovery)从数据中恢复时钟

3.3 常见HDMI PHY驱动

PHY驱动

平台/厂商

特点

支持模式

dw_hdmi

Synopsys

使用最广泛,开源参考实现

TMDS

nwl_hdmi

NXP i.MX8

PHY集成在SoC内,配置简单

TMDS

cdns_hdmi

Cadence/Zynq

外部PHY可配置

TMDS

meson_hdmi

Amlogic

SoC内部集成PHY

TMDS+FRL

dw-hdmi-qp

Synopsys

HDMI 2.1新架构

FRL

tegra_hdmi

NVIDIA

多代演进

TMDS+FRL

四、HDCPLinux中的实现

篇我们讲了HDCP的认证原理,这篇来看看它在Linux内核中是如何实现的。

4.1 内核HDCP框架

Linux内核提供了统一的HDCP框架,定义在 include/drm/drm_hdcp.h 中。核心数据结构是 drm_hdcp_state,维护HDCP的认证状态。

HDCP状态机有四个状态:

1DRM_MODE_HDCP_OFFHDCP未启用

2DRM_MODE_HDCP_DESIRED:用户请求启用,等待认证

3DRM_MODE_HDCP_UNDESIRED:用户主动关闭

4DRM_MODE_HDCP_ENCRYPTED:认证成功,内容已加密

▲ hdcp driver arch

4.2 HDCP 2.2认证驱动流程

HDCP 2.2的认证流程比1.4复杂得多,但内核已经做了很好的封装:

1AKE_Init:交换证书和主密钥(RX证书 + TX公钥)

2AKE_Stored_Km:使用存储的密钥材料,验证接收端身份

3LC_Init:本地校验完成,确认链路完整性

4SKE_Send_Eks:交换会话密钥(Eks),开始加密传输

5Repeater拓扑验证:如果是级联设备,验证整个拓扑结构

关键内核函数:

drm_hdcp2_enable_encryption()// 启用HDCP加密

drm_hdcp2_check_link()// 定期检查链路完整性

drm_hdcp2_verify_mst_topology()// 验证级联拓扑

4.3 HDCP调试

查看HDCP状态:

cat /sys/class/drm/card0-HDMI-A-1/properties/content_protection

dmesg关键日志:

[drm] hdcp: authentication failed (-EIO)认证失败

[drm] hdcp: authenticated successfully认证成功

[drm] hdcp: KSV list revocation check failed # 设备被撤销

⚠️ HDCP认证失败的排查顺序:1) 检查TX/RX版本匹配 2) 确认密钥已烧录 3) 检查SRM是否过期 4) 尝试直连排除中间设备

五、音频通道配置

HDMI不仅传视频,还能传音频。在Linux下,HDMI音频通过ALSA子系统 + DRM框架协作实现。

5.1 HDMI音频数据流

音频从应用层到HDMI输出的完整路径:

1、应用层播放器(如mpv/ffplay)通过ALSA接口输出PCM音频

2ALSA声卡驱动将音频数据送入DMA/FIFO缓冲区

3HDMI IP核从FIFO读取音频数据,打包到HDMI数据岛中

4、通过Audio InfoFrame告诉接收端音频格式参数

5、接收端根据InfoFrame解码音频数据

▲ audio subsystem

5.2 Audio InfoFrame配置

Audio InfoFrameHDMI传递音频参数的「信封」,包含以下关键字段:

● 音频格式编码(LPCM / AC-3 / DTS / MPEG-AAC

● 声道数(2ch / 4ch / 6ch / 8ch

● 采样频率(32/44.1/48/88.2/96/176.4/192 kHz

● 采样位深(16/20/24 bit

● 声道分配映射(speaker allocation

5.3 ARCeARC

ARCAudio Return Channel)让电视内置APP的音频通过HDMI线回传给Soundbar,省去了额外的光纤线。

特性

ARC (HDMI 1.4)

eARC (HDMI 2.1)

物理通道

复用Pin19 (HEAC+)

独立音频通道

最大带宽

1 Mbps

37 Mbps

Dolby Atmos

不支持

支持

LPCM 8声道

不支持

支持

DTS:X

不支持

支持

5.4 音频常见问题

有画面无声音:检查Audio InfoFrame是否正确配置,确认TX端音频DMA已启用

ARC无声:确认电视端ARC已开启,HDMI线CEC线完好

声音断续:音频采样率与sink不匹配,尝试降至48kHz

声道错误:检查Audio InfoFrameChannel Allocation映射

六、调试实战:从黑屏到点亮

终于到了实战环节!假设你拿到一块新板子,接上HDMI显示器,屏幕不亮。我们按照以下7步来排查。

▲ debug workflow

6.1 Step 1:确认HPD

dmesg | grep -i hpd

如果看不到任何HPD相关的日志,说明GPIO中断没有正确触发。检查:

● 设备树中HDMI HPD GPIO配置是否正确

● GPIO中断是否注册成功

● HPD引脚是否有上拉电阻(通常10K-100K

6.2 Step 2:读取EDID

cat /sys/class/drm/card0-HDMI-A-1/edid | edid-decode

如果读不到EDID或数据全0,检查:

● DDC I2C引脚(Pin15/16)接线是否正确

● I2C设备地址0x50是否可访问

● 上拉电阻是否已添加(SCL/SDA4.7K

6.3 Step 3:检查CRTC

modetest -c

确认CRTC已绑定正确的display_mode(分辨率、刷新率)。如果mode列表为空,说明EDID解析有问题。

6.4 Step 4Encoder Enable

dmesg | grep -i encoder

确认HDMI Encoder已经使能。如果没有encoder日志,可能是原子提交没有成功执行。

6.5 Step 5PHY配置

检查PHYPLL是否锁定,差分信号是否正常输出。

● 用示波器测量TMDS差分信号眼图

● 确认差分阻抗100 Ohm(偏差<10%

● 确认PLL锁定状态寄存器

6.6 Step 6HDCP认证

cat /sys/class/drm/card0-HDMI-A-1/properties/content_protection

如果显示「Desired」但无法变为「Enabled」,说明HDCP认证失败。参照第四章的排查思路。

6.7 Step 7:强制点亮测试

如果以上步骤都确认无误,可以用modetest强制点亮:

modetest -M -s HDMI-A-1@3840x2160

💡 modetestDRM自带的测试工具,绕过用户空间显示服务器,直接操作内核DRM接口,是HDMI调试的「瑞士军刀」。

七、总结与进阶方向

三篇文章写下来,我们从物理层到协议层再到驱动层,把HDMI的「里里外外」拆了个遍。最后用一张速查表做个总结:

▲ knowledge summary

7.1 常见坑速查

故障现象

可能原因

排查方向

HPD不触发

GPIO配置/中断/上拉

设备树GPIO → 中断注册 → 电阻

EDID读取失败

I2C接线/地址/上拉

i2cdetect → 示波器抓波形

画面闪烁

PLL未锁/时钟偏差

PLL寄存器 → 示波器眼图

HDCP认证失败

版本/密钥/SRM

固件密钥 → SRM更新 → 直连测试

有画面无声音

InfoFrame/DMA

Audio InfoFrame → ALSA配置

4K掉帧

带宽/PHY/PCB

降低分辨率 → PHY速率 → 眼图测试

7.2 系列回顾

1基础原理篇:TMDS编码、8b/10b、版本演进、带宽计算、HDMI vs DP

2协议与HDCP篇:EDID/DDCHDCP认证、CEC+ARC+eARCHDR色彩空间、InfoFrame

3驱动框架篇:DRM/KMS架构、Connector+Encoder+PHYHDCP驱动、音频子系统、modetest实战

结论:从物理层到协议层再到驱动层,三篇文章帮你建立了完整的HDMI知识体系。做HDMI相关的硬件选型、PCB设计、驱动开发时,希望这些内容能成为你的案头参考。

如果你觉得这个系列有帮助,欢迎点赞收藏,在评论区留下你的问题,我们下个系列见!👋

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 17:57:53 HTTP/2.0 GET : https://f.mffb.com.cn/a/494328.html
  2. 运行时间 : 0.142366s [ 吞吐率:7.02req/s ] 内存消耗:4,972.79kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=5f6d3a33554c5ef5898e9aed754656bb
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000618s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000901s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000355s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000291s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000485s ]
  6. SELECT * FROM `set` [ RunTime:0.000190s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000822s ]
  8. SELECT * FROM `article` WHERE `id` = 494328 LIMIT 1 [ RunTime:0.000597s ]
  9. UPDATE `article` SET `lasttime` = 1783072673 WHERE `id` = 494328 [ RunTime:0.005330s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000283s ]
  11. SELECT * FROM `article` WHERE `id` < 494328 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000624s ]
  12. SELECT * FROM `article` WHERE `id` > 494328 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000491s ]
  13. SELECT * FROM `article` WHERE `id` < 494328 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.019200s ]
  14. SELECT * FROM `article` WHERE `id` < 494328 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.023035s ]
  15. SELECT * FROM `article` WHERE `id` < 494328 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.022011s ]
0.144016s