当前位置:首页>Linux>嵌入式 Linux 开发会被 AI 取代吗?BSP 工程师和应用开发者的真实处境

嵌入式 Linux 开发会被 AI 取代吗?BSP 工程师和应用开发者的真实处境

  • 2026-06-29 00:19:26
嵌入式 Linux 开发会被 AI 取代吗?BSP 工程师和应用开发者的真实处境

嵌入式 Linux 开发会被 AI 取代吗?

BSP 工程师和应用开发者的真实处境

一个朋友最近在面试,面试官直接问他:"你觉得你自己三年后还有没有被雇佣的价值?"

这问题听着像刁难,但我觉得这是 2026 年每一个嵌入式 Linux 工程师都应该认真想一遍的问题。

AI 写代码这件事已经不是新鲜事了——GitHub Copilot 全球超过 2000 万用户,41% 的代码由 AI 参与生成。但嵌入式 Linux 这个圈子有它独特的复杂性:你不只是在写代码,你是在让 Linux 跑在一块可能从没见过 Linux 的板子上。

这里面的水,比你想的深。

先把"嵌入式 Linux 开发"拆开来看

很多人说"嵌入式 Linux 开发",其实在说两件差别很大的事:

嵌入式 Linux 开发├── BSP 层(Board Support Package)│   ├── Bootloader 移植(U-Boot)│   ├── 内核配置与裁剪(Kconfig、DTS)│   ├── 设备驱动开发(字符设备、平台驱动、子系统驱动)│   └── 根文件系统构建(Yocto / Buildroot)└── 应用层(Application)    ├── 系统级应用(守护进程、systemd 服务)    ├── 驱动用户态接口(ioctl、sysfs、netlink)    ├── 网络与通信(socket、MQTT、OTA 升级)    └── 业务逻辑开发

这两层被 AI 影响的方式截然不同。搞清楚这个,才能判断自己的饭碗有多稳。

BSP 层:AI 进来之后,踩了多少坑

先说 AI 在 BSP 层干了什么

Linux 内核社区其实已经在用 AI 了,而且用得很务实。

AUTOSEL 是 NVIDIA 工程师 Sasha Levin 写的工具,用多个 LLM 联合投票,每天自动筛选哪些 upstream 补丁值得 backport 到 stable/LTS 内核树。以前维护者每天要人工看 100 个补丁,只有 5~10 个值得 backport——这种重复劳动 AI 干得比人好,速度也快。

Btrfs 的作者、Meta 工程师 Chris Mason 也在搞 AI 辅助的 patch code review,把大段 diff 拆成小块,逐块让 LLM 审查,再汇总报告。

这些都是真实落地的 AI 应用,不是 PPT。

但是——

坑一:AI 不认识你的板子

BSP 最硬核的挑战在于,你的目标平台可能是全球独一份的。

假设你在给一块基于 RK3568 的定制工业板做 BSP,板子上挂了一颗你们硬件团队自研的 FPGA,通过 SPI 连接,中断走的 GPIO 扩展器。

你让 AI 写这个驱动,它会给你一段"看起来很完整"的 spi_driver 代码:

staticintmy_fpga_probe (struct spi_device *spi){    struct my_fpga_dev *dev;    int ret;    dev = devm_kzalloc(&spi->dev, sizeof (*dev), GFP_KERNEL);if (!dev)        return -ENOMEM;/* AI 生成的代码在这里会自信地填上 SPI 参数 */    spi->max_speed_hz = 10000000;  /* 10MHz,AI 猜的,没有根据 */    spi->mode = SPI_MODE_0;        /* MODE_0,也是猜的 */    ret = spi_setup(spi); if (ret < 0)        return ret;/* 中断处理?AI 根本不知道你的 GPIO 扩展器型号 */    dev->irq = spi->irq;  /* spi->irq 在你这块板子上是 0,永远触发不了 */return0;}

这段代码能编译,甚至能 insmod 不报错——但它不工作。spi->irq 是 0,因为 AI 不知道你的中断实际上经过了 GPIO 扩展器(比如 PCA9555),DTS 里需要专门声明 interrupt-parent 和 interrupts

AI 不读你的原理图,不知道你的硬件拓扑。 这个问题无解,除非你告诉它。

坑二:Device Tree 的坑深不见底

DTS 是 BSP 工程师的日常,也是 AI 最容易翻车的地方。

我测试过让 AI 写一个 I2C 温度传感器(LM75A)的 DTS 节点,以及对应的 Linux 驱动绑定。AI 给的结果:

/* AI 生成 */&i2c1{   lm75@48{       compatible="national,lm75a";        reg=<0x48>;        /* AI 忘了加这个,但你的板子需要 */        /* vs-supply = <&reg_3v3>; */    };};

漏了电源域声明,在有电源管理的系统上,传感器在 suspend/resume 之后挂掉,i2c_transfer 返回 -EIO,你要花几个小时才能定位到这里。

更糟的是,有时 AI 会编造根本不存在的 compatible 字符串。比如 "myvendor,custom-sensor" 这种,写进 DTS 能过编译,内核启动时找不到匹配驱动,设备静默地不工作,没有任何报错。这比崩溃还难定位。

坑三:内核 API 一直在变,AI 的训练数据跟不上

Linux 内核没有稳定的驱动接口——这是官方立场,不是抱怨。

内核从 v5.10 到 v6.10,API 变化量巨大。AI 训练数据有截止日期,它给你写的 request_irq 参数列表可能对应的是旧内核,你用的是新内核,编译直接报错还算好的,运行时行为异常更麻烦。

有研究团队(DRIVEBENCH / AUTODRIVER)专门研究了这个问题:让 LLM 自动迁移跨内核版本的 out-of-tree 驱动,成功率在 74% 左右——这已经是优化过的结果了。换句话说,1/4 的驱动迁移还是要人来收尾。

/* Linux 5.x 写法 */ret = request_irq(irq, handler, IRQF_SHARED"mydev", dev);/* Linux 6.x 某些场景推荐用 devm 版本 */ret = devm_request_irq(&pdev->dev, irq, handler,                        IRQF_SHARED"mydev", dev);/* AI 可能给你混用,也可能给你一个已废弃的接口 */
坑四:Yocto 配方(Recipe)是 AI 的重灾区

Buildroot 还好,Makefile + kconfig,AI 尚能应付。

Yocto 就是另一回事了。

一个 Yocto recipe 的 .bb 文件涉及

  • • BitBake 的 DSL 语法;
  • • RDEPENDS/DEPENDS 的区别;
  • • do_install 函数;
  • • FILES:${PN} 的 split packaging;
  • • BBCLASSEXTEND 的用法……

我让 AI 写过一个给 RK3568 平台集成 Qt6 的 Yocto recipe,结果:

  • • DEPENDS 写成了 RDEPENDS,导致编译期找不到 Qt6 头文件
  • • do_install 里的安装路径用了 ${prefix} 但没有 inherit autotools,变量未定义
  • • SRC_URI 的 branch= 和 rev= 同时写了,BitBake 版本不同行为不一样

这些 bug 在 Yocto 的构建日志里会给你看几百行错误,要一条一条定位。

AI 对 Yocto 的理解停留在"能写出语法正确的 .bb 文件",距离"能在真实项目里跑通"还差很远。

应用层:AI 的能力上限在哪里

相比 BSP,嵌入式 Linux 应用层和通用 Linux 应用开发更接近,AI 的帮助力度也更大。

AI 真的能干好的事

守护进程框架

让 AI 生成一个基于 epoll 的事件驱动守护进程框架,非常稳:

// AI 生成的 epoll 骨架,质量相当不错int epfd = epoll_create1(EPOLL_CLOEXEC);if (epfd == -1) {    perror("epoll_create1");return-1;}struct epoll_event ev = {    .events = EPOLLIN | EPOLLET,  /* 边沿触发,减少唤醒次数 */    .data.fd = sockfd,};epoll_ctl(epfd, EPOLL_CTL_ADD, sockfd, &ev);/* 主循环 */while (running) {    int nfds = epoll_wait(epfd, events, MAX_EVENTS, -1);    for (int i = 0; i < nfds; i++) {        handle_event(&events[i]);    }}

这种代码 AI 写得比很多初级工程师好,注释也到位。

协议解析

Modbus RTU/TCP、MQTT、自定义串口帧格式——这些有明确规范的协议解析,AI 给出的代码准确率相当高,结构也清晰。

systemd service 文件

# AI 生成,直接能用[Unit]Description=My Embedded ApplicationAfter=network.targetWants=network-online.target[Service]Type=notifyExecStart=/usr/bin/myapp --config /etc/myapp/config.jsonRestart=on-failureRestartSec=5sWatchdogSec=30sStandardOutput=journalStandardError=journal[Install]WantedBy=multi-user.target

OTA 升级逻辑

基于 RAUC 或 SWUpdate 的 A/B 分区更新方案,AI 能给出相当靠谱的框架代码和配置思路。

应用层的 AI 死穴

坑一:ioctl 接口和驱动强耦合

你写用户态代码去操作一个自研驱动,需要知道内核驱动里具体的 ioctl 命令字定义。AI 不知道你驱动里 #define MY_IOCTL_SET_FREQ _IOW('M', 1, uint32_t) 是什么含义,它会给你写出一段"语法正确但命令字对不上"的代码——在运行时返回 ENOTTY 或者更诡异的行为。

坑二:多线程 + 信号处理的边界情况

/* 这段 AI 生成的代码有隐患,你能看出来吗? */staticvolatilesig_atomic_t g_running = 1;staticpthread_mutex_t g_mutex = PTHREAD_MUTEX_INITIALIZER;voidsigint_handler(int sig) {    pthread_mutex_lock(&g_mutex);   /* ← 信号处理函数里锁 mutex,这是 UB */    g_running = 0;    pthread_mutex_unlock(&g_mutex);}

在信号处理函数里调用非异步信号安全的函数(pthread_mutex_lock 不是),是未定义行为。AI 经常犯这个错误,表现为偶发的死锁,复现概率极低,排查极难。

坑三:实时性要求(PREEMPT_RT)

如果你的应用跑在打了 PREEMPT_RT 补丁的内核上,优先级继承、中断线程化、spinlock 变 sleeping lock——这些细节 AI 基本不懂。它给你的代码在普通内核上跑得好好的,换到 RT 内核上可能死锁。

AI 怎么用才不会踩坑:一套实战工作流

综合下来,AI 在嵌入式 Linux 开发里的定位应该是这样:

你的工作流──────────────────────────────────────────阶段 1:需求理解 + 架构设计  → 完全靠你,AI 不了解你的硬件约束阶段 2:样板代码生成  → AI 主导,你提供精确上下文  → 告诉 AI:目标内核版本、SoC 型号、具体外设型号阶段 3:代码 Review(关键!)  → 逐行对着数据手册和内核文档验证  → 重点检查:中断号、寄存器偏移、API 版本阶段 4:硬件验证  → 示波器、逻辑分析仪、串口日志  → AI 介入不了,物理世界是你的主场阶段 5:调试定位  → GDB + KGDB、ftrace、perf、dmesg  → AI 可以辅助分析 crash log,但诊断要靠你

给 AI 的 Prompt 质量,决定了生成代码的可用程度。

烂 Prompt:

"帮我写一个 Linux SPI 驱动"

好 Prompt:

"我在 Linux 6.1(PREEMPT_RT)上为 RK3568 写一个 SPI 字符设备驱动,外接的是 Microchip MCP3204 ADC,SPI0,片选 GPIO3_B5,中断无,只需要支持 read() 系统调用,每次读取 4 字节 ADC 值。请使用 devm 系列 API,参考 drivers/spi/ 目录下的驱动风格。"

后者 AI 给出的代码,可用率能从 30% 提升到 70%+。

行业现实:嵌入式 Linux 岗位在消失吗

完全相反。

看看 2025 年真实的市场需求:

方向
需求趋势
车载 Linux / AGL
🔥 暴增(L2+ 自动驾驶域控)
工业边缘计算
🔥 持续增长(OPC-UA、TSN)
AI 边缘推理(NPU 驱动)
🔥 新兴需求
传统裸机 MCU 移植 Linux
→ 平稳
纯应用层(无硬件经验)
↘ 被 AI 压缩

最大的变化是:新增了"嵌入式 Linux + AI 推理加速"这个交叉岗位

RK3588 上的 NPU、高通 SA8255P 的 Hexagon DSP、地平线 J6 的 BPU——这些 AI 加速器都需要工程师写内核驱动、调用 runtime API、做内存对齐和 DMA 优化。这些工作 AI 干不了,市面上能干的人也不多,薪资水涨船高。

一次真实的踩坑经历

之前在做一个工业网关项目,基于 i.MX8M Mini,需要把一颗 RS-485 工业协议芯片通过 SPI 挂到 Linux 上。

我用 AI 生成了初版驱动,编译通过,insmod 成功,/dev/spi-485 节点也出现了。读写第一次能工作,但在高负载下偶发数据错误。

排查了两天,最后发现:AI 生成的代码在 SPI 传输完成后没有等待 CS(片选)释放的 tHold 时间就立刻发起下一帧传输,这个芯片的 datasheet 里写了需要至少 50ns 的 CS 高电平保持时间,AI 完全不知道。

/* AI 生成的代码(有问题) */spi_sync(spi, &msg);/* 直接返回,没有任何延迟 */return0;/* 正确做法 */spi_sync(spi, &msg);ndelay(50);  /* tHold:CS 释放后至少 50ns,来自 datasheet Table 3 */return0;

这个 bug 只在特定 SPI 速率和特定数据模式下出现,AI 永远发现不了——因为它没有读你的 datasheet,更没有用示波器量 CS 波形。

一句话总结

AI 能帮你写嵌入式 Linux 代码,但它不能帮你理解那块板子。

理解板子,是嵌入式 Linux 工程师不可替代的核心价值。

BSP 工程师的护城河是:原理图 + 数据手册 + 内核子系统的深度融合。应用层工程师的护城河是:硬件行为 + 系统资源 + 业务约束的全局理解。

学会用 AI 做你的苦力,而不是让 AI 替代你的判断——这才是 2026 年嵌入式 Linux 工程师应该有的姿势。

你用 AI 写嵌入式 Linux 代码踩过什么坑?DTS 写错了?Yocto recipe 编不过?评论区聊聊,没准能救下一个被坑的同行。

END

往期推荐
RECOMMEND
1
在边缘自动优化PID参数?PSO粒子群优化及其在嵌入式系统中的应用
2
跨平台移植modbus,从STM32到TMS320F28377D,kimi 2.6半小时搞定
3
MCU 的进化史
4
AI Box,“小龙虾”规模化上车的真正底座
5
STM32C5在MX2下的FREERTOS配置
“阅读原文”了解更多!

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 09:46:34 HTTP/2.0 GET : https://f.mffb.com.cn/a/493492.html
  2. 运行时间 : 0.101673s [ 吞吐率:9.84req/s ] 内存消耗:4,666.79kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=91c343da292450d0b662c7461c738be3
  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.000434s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000587s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000338s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000319s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000492s ]
  6. SELECT * FROM `set` [ RunTime:0.000209s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000701s ]
  8. SELECT * FROM `article` WHERE `id` = 493492 LIMIT 1 [ RunTime:0.002899s ]
  9. UPDATE `article` SET `lasttime` = 1783043194 WHERE `id` = 493492 [ RunTime:0.019107s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000302s ]
  11. SELECT * FROM `article` WHERE `id` < 493492 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000700s ]
  12. SELECT * FROM `article` WHERE `id` > 493492 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001428s ]
  13. SELECT * FROM `article` WHERE `id` < 493492 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001857s ]
  14. SELECT * FROM `article` WHERE `id` < 493492 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.004091s ]
  15. SELECT * FROM `article` WHERE `id` < 493492 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001788s ]
0.103287s