当前位置:首页>Linux>Linux 驱动八股文(含答案)

Linux 驱动八股文(含答案)

  • 2026-01-12 20:58:21
Linux 驱动八股文(含答案)

点击上方“嵌入式与Linux那些事”

选择“置顶/星标公众号”

福利干货,第一时间送达

一、Linux 设备驱动模型(补充 / 完善面试题答案)

1. Linux 设备驱动模型的核心组件有哪些?

  • kobject:最基础对象,提供引用计数、sysfs 文件系统导出、对象生命周期管理;
  • kset:kobject 的集合,按类别管理同类 kobject(如所有设备对象),支持统一事件处理;
  • bus:总线抽象(如 platform/I2C/spi),是设备与驱动的连接媒介,定义匹配 / 解绑规则;
  • device:表示硬件设备(物理 / 逻辑),存储设备属性、父 / 子设备关系,关联到具体总线;
  • driver:驱动抽象,包含 probe(设备匹配后初始化)、remove(设备移除时清理)等核心接口;
  • class:按功能归类设备(如 led/input),简化用户态访问(/sys/class/)。

2. 驱动和设备是如何匹配的?

核心基于总线的匹配函数,分三类场景:

  1. 设备树匹配(主流):驱动的of_match_tablecompatible属性,与设备树中设备节点的compatible字符串匹配;

  2. 平台总线匹配:平台设备(platform_device)的name与平台驱动(platform_driver)的driver.name完全匹配;

  3. ID 匹配:驱动的  id_table(如 I2C 的driver.id_table  )与设备的 ID(如 I2C 的 client.addr  )匹配;匹配成功后,总线调用驱动的 probe 函数完成设备初始化。

3. 设备树在驱动开发中的作用是什么?

  • 硬件解耦:将硬件参数(寄存器地址、GPIO、中断号、时钟)从驱动代码中剥离,集中在设备树(.dts),无需修改驱动适配不同硬件;
  • 动态配置:运行时通过设备树解析硬件信息,支持多平台复用同一驱动;
  • 标准化:遵循 DTB 规范,统一硬件描述格式,简化驱动移植;
  • 资源管理:驱动通过of_接口(如of_get_address)获取硬件资源,替代传统platform_get_resource

二、GPIO 子系统

1. GPIO 子系统架构?

  • 底层:GPIO 控制器硬件驱动(如芯片级 GPIO 控制器),实现寄存器操作(方向 / 电平 / 中断);
  • 核心层(gpiolib):提供统一的 GPIO 抽象接口(gpio_request/gpio_set_value),屏蔽不同控制器的硬件差异;
  • 上层:驱动层调用 gpiolib 接口操作 GPIO,支持设备树解析、中断映射、sysfs 导出。

2. GPIO 子系统实现?(核心逻辑)

  1. GPIO 控制器注册:驱动实现gpio_chip结构体(包含方向 / 电平 / 中断操作接口),通过gpiochip_add_data注册到 gpiolib;
  2. GPIO 编号管理:为每个 GPIO 分配全局编号(静态 /base 或动态),关联到具体控制器;
  3. GPIO 请求 / 释放:驱动通过gpio_request申请 GPIO(防止冲突),gpio_free释放;
  4. 电平 / 方向操作:通过gpio_direction_input/output设置方向,gpio_get_value/set_value读写电平。

3. GPIO 子系统的主要组件有哪些?

  • gpio_chip:表示一个 GPIO 控制器,包含控制器的硬件操作接口(如方向设置、电平读写);
  • gpio_desc:单个 GPIO 引脚的描述符,存储 GPIO 编号、方向、电平、中断属性、所属gpio_chip
  • gpiolib:核心库,提供 GPIO 申请、释放、电平操作、中断映射的统一接口;
  • GPIO 控制器驱动:硬件层实现,对具体芯片的 GPIO 寄存器(如 NXP 高通 GPIO 控制器)操作。

4. 如何在驱动中使用 GPIO?

// 1. 从设备树获取GPIO编号int gpio_num = of_get_named_gpio(np, "reset-gpio"0);// 2. 申请GPIOif (gpio_request(gpio_num, "reset-gpio") < 0return -EBUSY;// 3. 设置方向(输出)gpio_direction_output(gpio_num, 1);// 4. 操作电平gpio_set_value(gpio_num, 0); // 拉低// 5. 释放GPIO(驱动卸载时)gpio_free(gpio_num);

进阶:使用devm_gpio_request(设备管理接口),自动释放 GPIO,避免内存泄漏。

5. GPIO 中断是如何实现的?

  1. 中断映射:通过gpio_to_irq将 GPIO 编号转换为中断号;
  2. 申请中断:调用request_irq注册中断处理函数,指定触发方式(上升沿 / 下降沿 / 双边沿);
  3. 硬件触发:GPIO 引脚电平变化触发控制器中断,内核调用注册的中断处理函数;
  4. 中断释放:驱动卸载时调用free_irq释放中断。

示例:

int irq_num = gpio_to_irq(gpio_num);request_irq(irq_num, gpio_irq_handler, IRQF_TRIGGER_RISING, "gpio-irq", dev);

三、Pinctrl 子系统

1. Pinctrl 子系统架构?

  • 核心层:提供引脚复用、配置(上拉 / 下拉 / 速率)的统一接口;
  • 硬件层:芯片级 pinctrl 驱动(如 pinctrl-s32k),实现寄存器级引脚配置;
  • 设备树层:描述引脚组(pin group)、复用功能(function)、配置属性;
  • 接口层:驱动通过pinctrl_get/pinctrl_select_state调用配置。

2. Pinctrl 子系统实现?(核心步骤)

  1. pinctrl 驱动注册:实现pinctrl_desc结构体(包含引脚配置、复用接口),通过pinctrl_register注册;
  2. 设备树解析:解析设备节点的pinctrl-0/pinctrl-names属性,获取引脚状态(默认 / 休眠);
  3. 引脚配置:驱动通过pinctrl_select_state选择引脚状态,底层驱动修改寄存器配置复用 / 上下拉。

3. Pinctrl 子系统的作用是什么?

  • 引脚复用:配置引脚功能(如同一引脚切换为 GPIO/I2C_SDA/SPI_CLK);
  • 引脚配置:设置引脚的电气特性(上拉 / 下拉 / 驱动强度、速率、开漏 / 推挽);
  • 引脚管理:统一管理系统所有引脚,避免引脚冲突;
  • 状态切换:支持引脚在不同状态(默认 / 休眠 / 唤醒)下的配置切换,适配低功耗场景。

4. Pinctrl 与 GPIO 子系统的关系是什么?

  • 依赖关系:GPIO 引脚必须先通过 Pinctrl 配置为 “GPIO 功能”,才能被 GPIO 子系统操作;
  • 分工不同:Pinctrl 负责引脚的 “复用 + 电气配置”(硬件属性),GPIO 负责引脚的 “方向 + 电平 + 中断”(功能操作);
  • 流程联动:驱动先通过 Pinctrl 将引脚设为 GPIO 模式,再调用 GPIO 子系统操作电平 / 中断。

5. 设备树中如何描述 Pinctrl 配置?

dts

// 1. 定义引脚组和配置pinctrl@40014000 {    pinctrl_my_gpio: my-gpio-grp {        pinctrlx = <PIN_PA0L_GPIOx>; // 复用为GPIO        bias-pull-up; // 上拉        drive-strength = <20>; // 驱动强度20mA    };};// 2. 设备节点引用my_device {    compatible = "vendor,my-device";    pinctrl-names = "default";    pinctrl-0 = <&pinctrl_my_gpio>; // 关联引脚配置    reset-gpio = <&gpioa 1 GPIO_ACTIVE_LOW>;};

四、I2C 子系统

1. I2C 子系统架构?

  • 硬件层:I2C 控制器驱动(如 I2c-imx),实现总线时序(START/STOP/ACK)、寄存器操作;
  • 核心层:I2C 核心(i2c-core),提供总线管理、设备 / 驱动注册、数据传输接口;
  • 设备层i2c_client(表示 I2C 设备),关联设备地址、总线号、设备树节点;
  • 驱动层i2c_driver(I2C 设备驱动),实现 probe/remove、数据传输接口。

2. I2C 子系统实现?(核心逻辑)

  1. 控制器注册:I2C 控制器驱动通过i2c_add_adapter注册适配器(i2c_adapter);
  2. 设备注册:从设备树解析 I2C 设备节点,创建i2c_client并关联到适配器;
  3. 驱动匹配i2c_driverof_match_tablei2c_client的设备树节点匹配,调用 probe;
  4. 数据传输:驱动通过i2c_transfer/i2c_smbus_read/write完成数据收发。

3. I2C 子系统的主要组件有哪些?

  • i2c_adapter:表示 I2C 控制器(适配器),管理一条 I2C 总线,提供时序驱动;
  • i2c_client:表示总线上的 I2C 设备,包含设备地址、所属 adapter、设备树信息;
  • i2c_driver:I2C 设备驱动,包含匹配表、probe/remove、数据传输接口;
  • i2c_msg:I2C 传输消息结构体,描述传输方向、地址、数据长度、数据缓冲区;
  • i2c-core:核心层,负责 adapter/client/driver 的管理、匹配、传输调度。

4. I2C 设备驱动如何与设备匹配?

  1. 设备树匹配(主流)i2c_driverof_match_tablecompatible与设备树 I2C 子节点的compatible匹配;

  2. ID 匹配i2c_driverid_table(包含设备名 / 地址)与i2c_clientname/addr匹配;

  3. 名称匹配: i2c_driver 的driver.name与 i2c_client 的name 匹配; 匹配成功后,内核调用  i2c_driver 的 probe函数,传入  i2c_client 。

5. 如何在 I2C 驱动中进行数据传输?

// 方式1:i2c_transfer(通用)structi2c_msgmsgs[] = {// 第一步:读寄存器地址    { .addr = client->addr, .flags = 0, .len = 1, .buf = &reg_addr },// 第二步:读寄存器数据    { .addr = client->addr, .flags = I2C_M_RD, .len = 2, .buf = data_buf },};i2c_transfer(client->adapter, msgs, ARRAY_SIZE(msgs));// 方式2:i2c_smbus(简化)u16 data = i2c_smbus_read_word_data(client, reg_addr);

五、SPI 子系统

1. SPI 子系统架构?

  • 硬件层:SPI 控制器驱动(如 spi-imx),实现 SPI 时序(CLK/MOSI/MISO/CS)、寄存器操作;
  • 核心层:SPI 核心(spi-core),管理适配器、设备、驱动,提供传输接口;
  • 设备层spi_device(SPI 设备),包含片选号、传输模式、速率、设备树信息;
  • 驱动层spi_driver(SPI 设备驱动),实现 probe/remove、数据传输逻辑。

2. SPI 子系统实现?(核心逻辑)

  1. 控制器注册:SPI 控制器驱动通过spi_register_master注册主控制器(spi_master);
  2. 设备注册:从设备树解析 SPI 子节点,创建spi_device并关联到spi_master
  3. 驱动匹配spi_driverof_match_tablespi_device的设备树节点匹配,调用 probe;
  4. 数据传输:驱动通过spi_transfer/spi_write/read完成数据收发。

3. SPI 子系统的主要组件有哪些?

  • spi_master:表示 SPI 控制器(主设备),管理一条 SPI 总线,提供时序驱动;
  • spi_device:表示 SPI 从设备,包含片选号、传输速率、模式(CPOL/CPHA)、所属 master;
  • spi_driver:SPI 设备驱动,包含匹配表、probe/remove、数据传输接口;
  • spi_message:SPI 传输消息,包含多个spi_transfer,支持链式传输;
  • spi_transfer:单个 SPI 传输单元,描述传输方向、数据长度、缓冲区、片选控制。

4. SPI 设备驱动如何与设备匹配?

  1. 设备树匹配(主流)spi_driverof_match_tablecompatible与设备树 SPI 子节点的compatible匹配;

  2. ID 匹配spi_driverid_table(设备名)与spi_devicemodalias匹配;

  3. 名称匹配 : spi_driver的 driver.name与 spi_device 的modalias匹配; 匹配成功后,内核调用 spi_driver的probe 函数,传入 spi_device 。

5. 如何在 SPI 驱动中进行数据传输?

// 构造传输结构体structspi_transfert = {    .tx_buf = tx_buf, // 发送缓冲区    .rx_buf = rx_buf, // 接收缓冲区    .len = 4,         // 传输长度    .speed_hz = 1000000// 速率1MHz    .cs_change = 0,   // 传输后不释放CS};structspi_messagemsg;spi_message_init(&msg);spi_message_add_tail(&t, &msg);// 执行传输spi_sync(spi, &msg);

六、设备树与驱动匹配

1. 设备树中的 compatible 属性有什么作用?

  • 核心作用:驱动与设备的匹配关键字,是设备树匹配的核心依据;
  • 格式规则:字符串格式为 “厂商名,设备名”(如 “nxp,s32k344-i2c”),可包含多个字符串(兼容不同驱动);
  • 匹配逻辑:驱动的of_match_table遍历compatible字符串列表,只要有一个匹配即触发 probe;
  • 兼容性:支持 “向下兼容”(如新设备兼容旧驱动的compatible字符串)。

2. 驱动如何获取设备树中的属性?

通过内核of_系列接口解析:

structdevice_node *np = dev->of_node;// 1. 获取整型属性u32 reg_val;of_property_read_u32(np, "reg", &reg_val);// 2. 获取字符串属性char name[32];of_property_read_string(np, "name", name);// 3. 获取地址属性structresourceres;of_address_to_resource(np, 0, &res);// 4. 获取数组属性u32 arr[4];of_property_read_u32_array(np, "data-arr", arr, 4);

3. 如何处理设备树中的 GPIO 描述?

  1. 设备树描述格式gpio = <&gpio控制器 引脚号 标志>;(如reset-gpio = <&gpioa 5 GPIO_ACTIVE_LOW>;);
  2. 驱动解析
// 方式1:直接获取GPIO编号int gpio = of_get_named_gpio(np, "reset-gpio"0);// 方式2:获取gpio_desc(推荐,支持更多特性)structgpio_desc *desc = gpiod_get_from_of_node(np, "reset-gpio", 0,GPIOD_OUT_HIGHNULL);// 操作GPIOgpiod_set_value(desc, 0);// 释放gpiod_put(desc);

七、驱动框架综合应用

1. 如何确保驱动资源的正确释放?

  • 设备管理接口(devm_*):优先使用devm_kzalloc/devm_gpio_request/devm_request_irq,内核自动在设备卸载时释放资源,避免手动泄漏;
  • remove/exit 函数:在驱动remove(设备移除)/exit(模块卸载)函数中,释放未使用 devm 的资源(如手动分配的内存、注册的字符设备);
  • 错误回滚:probe 函数中,若某一步失败,回滚已分配的资源(如 goto 清理);

示例:

intmy_probe(...){void *ptr = devm_kzalloc(dev, size, GFP_KERNEL);int irq = devm_request_irq(dev, irq_num, handler, 0"irq", dev);if (irq < 0return irq; // 自动释放ptr// devm资源无需手动回滚structcdev *cdev = cdev_alloc();if (!cdev) {        ret = -ENOMEM;goto err_cdev;    }return0;err_cdev:// 手动释放非devm资源    ret = -ENOMEM;}voidmy_remove(...){// 仅释放非devm资源    cdev_del(cdev);}

2. 如何处理驱动的依赖关系?

  • 模块依赖:通过MODULE_DEPENDS声明依赖模块(如MODULE_DEPENDS("i2c-core")),或modprobe时指定依赖;
  • 总线依赖:确保驱动依赖的总线(如 I2C/spi)已加载,可在 probe 中检查总线状态;
  • 硬件依赖:通过设备树depends-on属性,确保依赖设备先初始化;
  • 运行时依赖:使用devm_phandle_domain_attach/clk_prepare_enable等接口,确保时钟 / 电源 / 复位等依赖资源就绪后,再初始化驱动;
  • 加载顺序:通过initcall_level(如module_init/late_initcall)调整驱动加载顺序,核心依赖先加载。

3. 如何调试 Linux 驱动问题?

(1) 内核日志调试

  • 核心工具dmesg/cat /var/log/kern.log,驱动中用dev_info/dev_err/pr_debug打印日志;
  • 动态调试:开启CONFIG_DYNAMIC_DEBUG,通过echo "file my_driver.c +p" > /sys/kernel/debug/dynamic_debug/control打开调试日志。

(2) 硬件调试

  • 示波器 / 逻辑分析仪:抓取总线时序(I2C/SPI/GPIO),排查电平异常、时序不匹配;
  • 万用表:测量电源 / 引脚电平,排查短路、供电异常。

(3) 内核调试工具

  • kgdb:内核远程调试,断点调试驱动代码;
  • ftrace:跟踪函数调用(如 probe/remove)、中断执行时间;
  • perf:分析驱动性能瓶颈(如 CPU 占用、函数耗时);
  • sysfs/procfs:导出驱动状态(如/sys/class/gpio//proc/interrupts),查看资源占用。

(4) 常见问题排查

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-08 21:43:19 HTTP/2.0 GET : https://f.mffb.com.cn/a/461033.html
  2. 运行时间 : 0.126246s [ 吞吐率:7.92req/s ] 内存消耗:4,873.91kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=416a940ca50aa2866fd287da6372e2a0
  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.000495s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000680s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.005966s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000291s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000473s ]
  6. SELECT * FROM `set` [ RunTime:0.000199s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000559s ]
  8. SELECT * FROM `article` WHERE `id` = 461033 LIMIT 1 [ RunTime:0.008174s ]
  9. UPDATE `article` SET `lasttime` = 1770558199 WHERE `id` = 461033 [ RunTime:0.010976s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000345s ]
  11. SELECT * FROM `article` WHERE `id` < 461033 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000462s ]
  12. SELECT * FROM `article` WHERE `id` > 461033 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000373s ]
  13. SELECT * FROM `article` WHERE `id` < 461033 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001591s ]
  14. SELECT * FROM `article` WHERE `id` < 461033 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000766s ]
  15. SELECT * FROM `article` WHERE `id` < 461033 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.027305s ]
0.127921s