当前位置:首页>Linux>Linux引脚复用技术与Pinctrl子系统实现详解

Linux引脚复用技术与Pinctrl子系统实现详解

  • 2026-06-28 07:53:21
Linux引脚复用技术与Pinctrl子系统实现详解

1. 引脚复用的硬件背景与演进

现代片上系统(SoC)在单一硅芯片内集成通用处理器核心、片上存储器、各类外设控制器、高速接口与多媒体模块,形成高度整合的硬件计算平台。受制于封装工艺、物理尺寸、成本与散热条件,芯片对外可提供的物理引脚数量存在严格上限,无法为每一个内部硬件模块提供独立专用的信号引脚。
在嵌入式处理器发展初期,片上外设数量较少,引脚功能固定且一对一分配给对应硬件模块,硬件设计直接将专用引脚与外设连接,系统启动后无需对引脚功能进行重新配置。随着半导体工艺的提升,SoC集成度呈指数级提升,内部可支持的UART、SPI、I2C、以太网、SDIO、显示接口、音频接口等模块数量远超物理引脚总数,单一引脚必须承担多种硬件功能,引脚复用(Pin Muxing)技术由此成为现代SoC设计的必需环节。
引脚复用的核心价值是在软件控制下,通过配置寄存器,动态选择同一物理引脚的功能,使有限的引脚资源服务于多组不同的外设模块。例如,同一组引脚可在一种工作模式下作为UART收发接口,在另一种模式下切换为SPI总线,或配置为通用GPIO端口。
与此同时,引脚复用的配置方式从早期硬编码、厂商私有接口,逐步走向标准化、统一化的操作系统内核管理模型。

2. 引脚复用的硬件实现原理

2.1 硬件组成结构

SoC内部实现引脚复用的核心硬件单元包括:物理引脚焊盘、多路选择器(MUX)、引脚功能控制寄存器、电气属性配置寄存器、输入输出缓冲电路。多路选择器是功能切换的核心,其输入端连接不同外设模块的信号通路,输出端连接至物理引脚,通过配置寄存器的值选择某一路输入导通。
引脚功能控制寄存器采用内存映射I/O(MMIO)方式寻址,CPU通过标准的load/store指令完成读写,实现功能选择。电气属性配置寄存器用于设置上拉/下拉电阻、开漏/推挽输出、驱动强度、输入使能、输出使能等参数,保证不同电气标准的外设可靠工作。

2.2 控制逻辑与约束

引脚复用的硬件操作本质是向指定MMIO寄存器写入功能选择值与电气配置值。多数SoC采用独立寄存器控制单个引脚,部分低成本平台会将多个引脚的控制位合并为一组寄存器。
引脚复用在硬件层面存在严格约束:同一引脚同一时刻只能归属一种功能,不支持并行复用;部分外设模块受内部硬件路由限制,仅能映射到固定的引脚集合;不同功能对应不同的电气约束,如I2C必须配置为开漏输出且使能上拉。

2.3 电气配置对复用的影响

引脚电气属性与功能复用强相关。推挽输出适用于高速同步接口,开漏输出配合外部上拉适用于I2C等多主设备总线,上拉/下拉配置用于避免空闲状态电平浮动。这些配置与功能选择由同一组寄存器控制,因此引脚复用与电气配置必须统一管理,这也是Pinctrl子系统将二者整合的硬件依据。

3. 引脚复用管理的历史演进与标准化需求

3.1 早期管理方式的缺陷

在Linux 2.6早期版本中,内核未提供统一的引脚管理框架,引脚复用配置存在三种典型方式:设备驱动直接读写硬件寄存器、板级启动代码固化配置、芯片厂商提供私有API。这些方案带来如下工程问题:
  • 资源冲突:多个驱动同时配置同一引脚,导致功能异常、总线锁死或系统崩溃;
  • 代码冗余:同类外设驱动重复实现引脚配置逻辑,维护成本高;
  • 可移植性差:私有接口不具备跨平台能力,驱动移植需重写硬件相关代码;
  • 调试困难:配置逻辑分散在启动流程、驱动、平台代码中,故障难以定位;
  • 功耗不友好:无法根据设备状态动态切换引脚配置,增加系统待机功耗。

3.2 统一框架的诞生

Linux内核社区借鉴时钟、电源、GPIO子系统的设计模型,于2.6.37版本正式引入引脚控制子系统(Pinctrl Subsystem),实现引脚复用、电气配置、资源管理、状态切换的统一抽象。其核心目标包括:屏蔽硬件寄存器差异、集中管理引脚资源避免冲突、解耦设备驱动与底层硬件、支持运行时动态状态切换、与设备树(Device Tree)深度融合。

4. Linux内核Pinctrl子系统概述

4.1 核心功能

Pinctrl子系统是内核用于统一管理SoC引脚资源的标准框架,承担以下功能:
  • 引脚复用管理:动态配置引脚归属的硬件功能;
  • 引脚配置管理:统一设置电气参数,包括上拉/下拉、驱动强度、开漏等;
  • 引脚分组管理:将相关引脚归为逻辑组,支持批量配置;
  • 多状态管理:支持default、sleep、idle等状态,满足电源管理需求;
  • 资源冲突检测:统一分配引脚,拒绝重复占用;
  • 调试接口:通过debugfs输出引脚状态与配置信息。

4.2 设计模型

Pinctrl采用提供者–消费者模型:
  1. 提供者:引脚控制器驱动,由芯片厂商实现,枚举引脚、分组、功能与寄存器操作;
  2. 消费者:各类设备驱动,通过声明方式申请引脚状态,由子系统自动完成配置。
子系统严格遵循硬件描述与软件逻辑分离原则,所有引脚硬件信息通过设备树描述,内核代码保持平台无关。

4.3 代码组织结构

Pinctrl子系统核心代码位于drivers/pinctrl/:
  • pinctrl-core.c:核心逻辑、资源管理、API实现;
  • pinctrl-devicetree.c:设备树解析与绑定;
  • pinctrl-utils.c:分组、冲突检测等工具函数;
  • pinctrl-.c:各平台厂商驱动; 头文件位于include/linux/pinctrl/,对外提供统一接口。

5. Pinctrl子系统核心数据结构

5.1 引脚描述

struct pinctrl_pin_desc {    unsigned int number;     /* 全局唯一引脚编号 */    const char *name;        /* 引脚名称 */    const void *drv_data;    /* 驱动私有数据 */};

5.2 引脚分组

struct pin_group {    const char *name;    const unsigned int *pins;    unsigned int nr_pins;    const unsigned int *funcs;    unsigned int nr_funcs;};

5.3 引脚功能

struct pin_function {    const char *name;    const unsigned int *groups;    unsigned int nr_groups;};

5.4 控制器描述

struct pinctrl_desc {    struct device *dev;    const struct pinctrl_pin_desc *pins;    unsigned int npins;    const struct pinctrl_ops *pctlops;    const struct pinmux_ops *pmxops;    const struct pinconf_ops *confops;    struct module *owner;};

5.5 操作回调集合

  • pinctrl_ops:枚举分组、设备树节点映射;
  • pinmux_ops:功能选择、分组配置;
  • pinconf_ops:电气参数读取与设置。

5.6 状态管理

struct pinctrl_state {    const char *name;    struct list_head settings;};struct pinctrl {    struct device *dev;    struct list_head states;    struct pinctrl_state *state;};

6. Pinctrl子系统软件架构与分层

6.1 三层架构

  • 核心层:实现统一逻辑、资源管理、设备树解析、API导出;
  • 硬件驱动层:厂商实现,对接寄存器与核心层;
  • 消费者层:设备驱动,仅声明需求,不直接操作硬件。

6.2 标准执行流程

  1. 引脚控制器驱动初始化,注册pinctrl_desc;
  2. 内核解析设备树,建立消费者与引脚配置的绑定关系;
  3. 设备探测时,子系统自动配置default状态;
  4. 电源管理事件触发时,自动切换sleep/default状态;
  5. 设备卸载时,自动释放引脚资源。

6.3 与其他子系统协同

Pinctrl与GPIO子系统、电源管理子系统、设备树子系统深度协同:GPIO子系统依赖Pinctrl完成功能切换;电源管理依赖Pinctrl实现低功耗状态;设备树提供硬件描述。

7. 引脚复用的设备树描述规范

7.1 引脚控制器节点

pinctrl: pinctrl@44e10800 {    compatible = "ti,am335x-pinctrl";    reg = <0x44e10800 0x1000>;    #pinctrl-cells = <1>;};

7.2 引脚配置节点

i2c0_pins: i2c0-pins {    pinctrl-single,pins = <        0x170 0x2e        0x174 0x2e    >;};

7.3 消费者设备绑定

i2c0: i2c@44e0b000 {    compatible = "ti,omap4-i2c";    pinctrl-names = "default""sleep";    pinctrl-0 = <&i2c0_pins>;    pinctrl-1 = <&i2c0_sleep_pins>;};

7.4 绑定规则

  • 引脚配置节点必须属于控制器节点;
  • 消费者通过phandle引用;
  • 支持多状态定义;
  • 配置值必须与芯片数据手册一致。

8. 引脚控制器驱动实现规范

8.1 实现步骤

  1. 枚举全部引脚与分组;
  2. 实现三类操作回调;
  3. 填充pinctrl_desc;
  4. 注册到核心层;
  5. 实现设备树匹配。

8.2 关键回调示例

staticintsoc_pinmux_set_mux(struct pinctrl_dev *pctldev,                             unsigned int selector,                             unsigned int group,                             unsigned int func){    struct soc_pinctrl *ipctl = pinctrl_dev_get_drvdata(pctldev);    const struct soc_pin_group *grp = &soc_groups[group];    unsigned int i;    for (i = 0; i < grp->nr_pins; i++) {        unsigned int pin = grp->pins[i];        void __iomem *reg = ipctl->base + pin_offsets[pin];        unsigned int val = pin_values[pin][func];        writel(val, reg);    }    return 0;}

8.3 驱动注册

staticintsoc_pinctrl_probe(struct platform_device *pdev){    struct soc_pinctrl *ipctl;    ipctl = devm_kzalloc(&pdev->dev, sizeof(*ipctl), GFP_KERNEL);    ipctl->base = devm_ioremap_resource(&pdev->dev,                          platform_get_resource(pdev, IORESOURCE_MEM, 0));    ipctl->desc = &soc_pinctrl_desc;    ipctl->pctldev = devm_pinctrl_register(&pdev->dev, ipctl->desc, ipctl);    platform_set_drvdata(pdev, ipctl);    return 0;}

9. 设备驱动作为消费者的使用流程

9.1 无API方式

绝大多数驱动无需调用Pinctrl API,仅需在设备树声明pinctrl-names与pinctrl-0/1,内核在设备初始化时自动完成配置。

9.2 显式API使用

struct pinctrl *p = devm_pinctrl_get(dev);struct pinctrl_state *s = pinctrl_lookup_state(p, "default");pinctrl_select_state(p, s);

9.3 驱动注意事项

  • 优先使用设备树声明;
  • 状态名称必须与设备树一致;
  • 使用devm API自动释放资源;
  • 休眠时必须切换sleep状态。

10. 结语

引脚复用是现代SoC架构的基础能力,Linux Pinctrl子系统通过标准化、统一化的框架解决了资源冲突、可移植性、功耗与调试等关键问题。从硬件原理、内核架构、设备树绑定、驱动实现到调试排错,引脚复用贯穿嵌入式Linux系统开发全流程。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 21:58:14 HTTP/2.0 GET : https://f.mffb.com.cn/a/492781.html
  2. 运行时间 : 0.310454s [ 吞吐率:3.22req/s ] 内存消耗:5,256.66kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=28fb55b7c0deb1eae598c61eaf506b59
  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.000992s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001518s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.034600s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.004228s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001508s ]
  6. SELECT * FROM `set` [ RunTime:0.000749s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001870s ]
  8. SELECT * FROM `article` WHERE `id` = 492781 LIMIT 1 [ RunTime:0.002539s ]
  9. UPDATE `article` SET `lasttime` = 1783087094 WHERE `id` = 492781 [ RunTime:0.022896s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000823s ]
  11. SELECT * FROM `article` WHERE `id` < 492781 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.002431s ]
  12. SELECT * FROM `article` WHERE `id` > 492781 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.004143s ]
  13. SELECT * FROM `article` WHERE `id` < 492781 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.013181s ]
  14. SELECT * FROM `article` WHERE `id` < 492781 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.019456s ]
  15. SELECT * FROM `article` WHERE `id` < 492781 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.018984s ]
0.314209s