当前位置:首页>Linux>Linux BSP 学习,不要一上来就啃驱动

Linux BSP 学习,不要一上来就啃驱动

  • 2026-04-19 23:28:55
Linux BSP 学习,不要一上来就啃驱动
很多人学 Linux BSP,第一反应是去看驱动、改 DTS、编内核,结果学了几个月,知识点越来越多,真正串不起来。今天这篇文章,我想换一种方式讲 Linux BSP:它不是若干零散技术点的集合,而是一条从芯片到系统、从硬件到产品的交付链路。
如果没有这条主线,学习过程就会变成:
• 会改一点设备树,但不知道为什么这样改
• 会看一点驱动代码,但不知道驱动为什么 probe 失败
• 会编译内核和 U-Boot,但不知道启动链条里每一段在负责什么
• 会用 Yocto 或 Buildroot,但不知道它们和 BSP 的边界在哪里
所以,真正适合 BSP 的学习方式,不是“按文件类型学”,而是“按系统链路学”。
这篇文章分三部分:
• 先讲 Linux BSP 的整体学习架构
• 再把 BSP 拆成几个必须掌握的学习分支
• 最后讲每个分支到底该怎么学,避免学成“只会改现成工程”
一、先建立一个正确的 BSP 学习架构
先给一个结论:Linux BSP 的本质,是让某一块具体硬件板卡稳定地启动、识别外设、运行系统,并具备可调试、可量产、可维护能力的一整套平台支撑。
所以你要学的,不只是 Linux 内核,而是下面这张脑图背后的整套能力:
1. 启动架构
从上电到用户态,系统一般会经历这些阶段:
1. BootROM
2. 第一阶段引导程序,比如 SPL、FSBL 或厂商私有加载器
3. 第二阶段引导程序,比如 U-Boot、TF-A 配合 U-Boot
4. Linux Kernel
5. RootFS
6. 用户空间服务与业务程序
这条链路是 BSP 的第一主线。你必须知道每一阶段从哪里加载、初始化了什么、把什么信息传给了下一阶段。
2. 硬件描述架构
BSP 不是脱离硬件存在的。它必须围绕具体 SoC、具体板卡和具体外设展开。这里的关键对象包括:
• SoC 手册
• 板级原理图
• 时钟树
• 电源域
• pinmux
• 中断
• 总线
• 存储介质
如果你对硬件侧完全没有模型,后面看到 DTS、驱动、时序、电源管理问题时,基本只能靠猜。
3. 平台软件架构
这是多数工程师平时接触最多的一层,包括:
• U-Boot 配置
• 内核配置
• 设备树
• 驱动框架
• 文件系统
• 构建系统
这一层解决的问题是:怎么把硬件抽象成系统可识别、可管理、可调用的软件对象。
4. 调试验证架构
很多人以为把板子点亮就算学会 BSP,其实远远不够。真正的 BSP 工作,一定离不开:
• 启动日志分析
• 串口调试
• JTAG
• 寄存器定位
• 内核日志与 trace
• 性能分析
• 稳定性测试
如果没有这部分能力,你最多只是“会搬运 BSP”,还谈不上“会做 BSP”。
5. 产品交付架构
当系统能跑起来以后,BSP 的学习还没有结束。真正落地时,你还要考虑:
• 镜像制作
• 分区设计
• OTA 升级
• 安全启动
• 量产烧录
• 版本管理
• 缺陷闭环
所以 BSP 的学习终点不是“会改代码”,而是“能交付一个可维护的平台”。
二、Linux BSP 可以拆成哪几个学习分支
我建议把 Linux BSP 拆成七个分支来学。这样拆的好处是,每个分支都能独立推进,但最终又能回到同一条主线。
分支一:硬件基础与芯片手册
这是 BSP 的地基。很多人想跳过这一层,直接学 Linux,后面基本都会卡住。
这一分支重点掌握:
• SoC 基本架构:CPU、DDR、存储、时钟、电源、总线
• 板级原理图阅读
• 常见外设接口:GPIO、I2C、SPI、UART、USB、PCIe、SDIO、MIPI
• 中断、DMA、复位、pinctrl 的基本概念
分支二:启动链路
这是最容易建立系统感的一条线。你只要把启动过程吃透,对 BSP 的理解就会立刻上一个层次。
这一分支重点掌握:
• BootROM 做了什么
• SPL/FSBL 做了什么
• TF-A 和 U-Boot 的职责边界
• Kernel 是如何被加载和启动的
• rootfs 是如何挂载起来的
分支三:设备树与板级描述
设备树是 BSP 学习中的关键节点。它不是简单的配置文件,而是“硬件描述和内核匹配机制”的入口。
这一分支重点掌握:
• DTS / DTSI 的组织方式
• compatible、reg、interrupts、clocks、resets、pinctrl 这些属性
• 板级差异如何通过设备树表达
• 设备树与驱动匹配的关系
分支四:内核配置与驱动框架
这是 BSP 的核心能力区。你要理解驱动不是一个个孤立文件,而是运行在 Linux 驱动模型里的。
这一分支重点掌握:
• Kconfig、Makefile、defconfig
• platform device / driver
• I2C、SPI、PCI、USB 等总线模型
• probe/remove 流程
• 中断、DMA、内存映射、同步机制
• 电源管理、时钟管理、reset 控制
分支五:根文件系统与系统集成
BSP 不是只有 bootloader 和 kernel。没有 rootfs,很多问题根本无法闭环。
这一分支重点掌握:
• BusyBox、systemd、init 脚本
• 根文件系统目录结构
• 动态库与工具链依赖
• 驱动节点、udev、mdev 的作用
• 板级测试工具和系统服务集成
分支六:构建系统与版本管理
你迟早会碰到 Buildroot、Yocto、厂商 SDK、交叉编译环境、补丁管理这些事情。不会这一块,BSP 工程往往做不稳。
这一分支重点掌握:
• 交叉编译工具链
• Buildroot / Yocto 的基本思想
• 厂商 SDK 的目录组织
• patch 管理、配置固化、自动化构建
• 镜像打包和发布流程
分支七:调试、稳定性与量产交付
这部分决定你是“能调通”,还是“能负责一块板子”。
这一分支重点掌握:
• 启动失败定位
• 驱动 probe 失败定位
• 挂载失败、时钟异常、电源异常排查
• 内核 panic、死机、内存泄漏、性能抖动分析
• 烧录、升级、回滚、量产验证
三、每个分支到底该怎么学
下面不讲空话,直接讲具体方法。
分支一:硬件基础与芯片手册,怎么学
这一阶段不要急着写代码,先建立硬件模型。
建议按这个顺序学:
1. 看一份具体 SoC 的 block diagram,先知道芯片里有哪些控制器
2. 看板级原理图,找出 UART、eMMC、以太网、USB、PMIC、传感器分别挂在哪些控制器上
3. 对照芯片手册,理解这些控制器需要哪些时钟、中断、寄存器、pin 配置
4. 画一张自己的板级资源图,把“哪个器件挂在哪个总线、用了哪些 GPIO、供电来自哪里”画清楚
这一阶段的目标不是背手册,而是做到两件事:
• 看到一个外设,知道它大概会牵涉哪些软件节点
• 看到一段设备树,能反推出它描述的是哪块硬件
最好的练习方式不是做题,而是做“硬件映射表”。你把板子上每个关键器件和下面这些内容对应起来:
• 控制器
• 总线地址
• 中断号
• 时钟
• 电源
• reset
• pinctrl
做完这个表,后面的学习会快很多。
分支二:启动链路,怎么学
启动链路一定要“带着日志学”,不要只看概念图。
建议按这个顺序:
1. 先拿一份完整启动日志
2. 按时间顺序切分日志:BootROM、SPL、U-Boot、Kernel、init
3. 对照源码去找每一阶段做了哪些初始化
4. 重点看加载介质、DDR 初始化、设备树传递、内核启动参数、rootfs 挂载
这部分要回答清楚以下问题:
• 板子上电后最先执行的是谁
• DDR 是在哪一阶段初始化的
• U-Boot 从哪里把 kernel、dtb、initramfs 读出来
• 内核命令行是谁传进去的
• 根文件系统为什么能挂载成功,失败又会报什么错
学习启动链路最有效的方法,是自己做一张“启动责任表”:
• 这一阶段初始化了什么
• 它依赖上一阶段提供什么
• 它把什么交给下一阶段
• 如果这一阶段失败,现象是什么
一旦这张表建立起来,你对 BSP 的理解会从“看代码”变成“看系统”。
分支三:设备树与板级描述,怎么学
设备树不要当成语法题来学,要当成“板级硬件数据库”来学。
建议分四步:
1. 先学设备树最核心的节点和属性
2. 再看一块真实开发板的 DTS 和 DTSI 继承关系
3. 找几个外设节点,对照原理图和驱动一起看
4. 自己动手增加、删除、屏蔽一个设备节点,观察启动日志和 `/sys` 变化
这里最关键的是建立三者对应关系:
• 原理图里的硬件连接
• 设备树里的节点描述
• 驱动里的匹配逻辑
如果这三者能串起来,设备树就真正学明白了。
这一分支要重点练的不是“会写属性”,而是“会判断一个设备为什么起不来”。比如:
• compatible 不匹配
• reg 地址错了
• clocks 没配
• pinctrl 缺失
• 中断号不对
• 电源域没开
这些都是典型 BSP 问题。
分支四:内核配置与驱动框架,怎么学
学驱动最怕一上来就写字符设备模板,最后学成和 BSP 脱节。BSP 场景里,最该优先学的是平台驱动和总线驱动。
建议按这个路径走:
1. 先学 Linux 驱动模型:device、driver、bus
2. 再学 platform 驱动的 probe 流程
3. 再扩展到 I2C、SPI、USB、PCIe 这类总线
4. 最后再进入具体控制器驱动或外设驱动
这部分一定要带着问题学源码,不要顺着文件从头看到尾。建议围绕下面这些问题去读:
• 驱动是怎么匹配到设备树节点的
• probe 里为什么先拿时钟、reset、电源、GPIO
• 资源申请失败为什么要返回特定错误码
• 中断注册后处理链路是什么
• suspend/resume 为什么会影响设备稳定性
一个很有效的训练方式,是针对一个常见外设做完整剖析,比如 I2C 触摸屏、SPI 屏、GPIO 按键、以太网 PHY。每次都按同一模板拆:
• 硬件怎么接
• 设备树怎么写
• 驱动怎么匹配
• probe 做了什么
• 出问题怎么看日志和寄存器
重复三到五次,你会明显形成平台感。
分支五:根文件系统与系统集成,怎么学
这一块最容易被低估,但它直接决定你能不能把系统真正跑起来。
建议按这个思路学:
1. 先从最小 rootfs 开始,知道一个系统能启动至少需要什么
2. 再理解 `/init`、`/sbin/init`、systemd、rcS 这些入口
3. 再补齐设备节点、动态库、网络工具、调试工具
4. 最后把板级测试、服务拉起、业务程序纳入系统启动流程
这部分要能解释这些问题:
• 为什么 kernel 启动了却进不了用户态
• 为什么根文件系统能挂载但 `init` 起不来
• 为什么某个命令在开发板上跑不了
• 为什么驱动正常但用户空间访问不到设备节点
学习时不要只会“拷贝一个现成 rootfs”,要自己做一版最小系统,这样你才知道哪些东西是必要依赖。
分支六:构建系统与版本管理,怎么学
BSP 工程做久了,你会发现很多问题不是技术点不会,而是工程组织太差。
这一分支要把“能编过”和“可持续维护”区分开。
建议按这个顺序:
1. 先把交叉编译工具链、sysroot、环境变量弄明白
2. 再理解 kernel、U-Boot、rootfs 各自如何构建
3. 再接触厂商 SDK 目录结构和补丁组织方式
4. 最后学习 Buildroot 或 Yocto 这类更完整的系统构建方案
这一阶段一定要养成几个习惯:
• 所有改动尽量补丁化
• 板级配置尽量固化,不靠人工步骤
• 构建流程尽量脚本化
• 输出物命名、版本号、分支管理要统一
如果没有这些习惯,后面项目一多,BSP 会很快失控。
分支七:调试、稳定性与量产交付,怎么学
这一块是最接近真实工作的,也是很多学习资料讲得最少的。
建议把它分成三层:
第一层是“能看到问题”:
• 会看串口日志
• 会开 debug log
• 会看 `dmesg`
• 会用 `/proc`、`/sys`
第二层是“能定位问题”:
• 会根据报错回溯启动链路
• 会用寄存器和时序判断外设状态
• 会判断是设备树问题、驱动问题还是硬件问题
• 会做最小化复现
第三层是“能闭环问题”:
• 修复后能做回归
• 能评估对别的板型有没有副作用
• 能把问题沉淀成 checklist
• 能纳入版本和发布流程
学习这一分支时,不要只看“成功案例”,要主动收集“失败案例”。比如:
• DDR 初始化失败
• 根文件系统挂载失败
• 网卡偶发起不来
• suspend 后外设丢失
• 高温压力下死机
真正让人成长的,往往不是功能跑通,而是这些问题怎么被拆开、定位、修掉。
四、给 BSP 学习者的一条实际路线
如果你现在还在入门阶段,我建议按下面的节奏推进,不要一口吃成胖子。
第一阶段:先建立主线
目标不是写驱动,而是把下面四件事讲清楚:
• 板子怎么启动
• 设备树在描述什么
• 驱动怎么匹配到硬件
• rootfs 怎么把系统带到用户态
这一阶段如果讲不清楚,不要急着往后冲。
第二阶段:抓一个板子做全链路学习
最好的方式不是同时看很多平台,而是抓住一块板子,从头到尾打穿一次。建议至少走完:
• 编译 bootloader
• 编译 kernel
• 改设备树
• 调通一个外设
• 做一个 rootfs
• 看懂启动日志
只要你完整走通一遍,后面的迁移能力就会起来。
第三阶段:进入专项突破
到这一步,再根据工作需要选方向深入:
• 偏启动:深挖 U-Boot、TF-A、安全启动、升级链路
• 偏内核:深挖平台驱动、时钟、电源管理、调度与内存
• 偏系统:深挖 Yocto、Buildroot、发布与 OTA
• 偏调试:深挖 trace、perf、崩溃分析、稳定性测试
第四阶段:用交付标准检验学习成果
判断自己会不会 BSP,不要问“我看过多少源码”,要问下面这些问题:
• 给你一块新板子,你能不能快速梳理启动链路
• 给你一个外设不起的故障,你能不能判断是硬件、设备树还是驱动问题
• 给你一套 SDK,你能不能把改动固化成可维护的工程
• 给你一个版本发布任务,你能不能保证可编译、可烧录、可回滚
如果这些问题你都能比较稳定地回答,说明你的 BSP 学习已经开始进入工程化阶段了。
五、最后的建议:BSP 学的是“系统观”
很多人把 Linux BSP 学成一堆零散知识点:
• 记住几个 DTS 属性
• 改过几个驱动
• 会一点 menuconfig
• 编过几次镜像
但这还不够。
BSP 真正难的地方,从来不是某一行代码,而是你能不能把下面这些东西同时放进脑子里:
• 硬件连接
• 启动链路
• 内核机制
• 驱动模型
• 文件系统
• 构建体系
• 调试方法
• 交付要求
说到底,Linux BSP 不是“学一个模块”,而是“学会把一块板子从上电带到可交付”。
这也是为什么我建议大家按架构和分支去学,而不是一上来就扎进驱动细节。
先有主线,再学分支;先能串起来,再去啃深水区。这样学 BSP,才会越学越清楚,而不是越学越碎。
如果你也在学 Linux BSP,欢迎留言说说你现在卡在哪一段:启动链路、设备树、驱动、rootfs,还是构建发布。我可以继续把其中任意一个分支单独展开,写成更细的一篇。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-20 20:37:03 HTTP/2.0 GET : https://f.mffb.com.cn/a/484646.html
  2. 运行时间 : 0.104330s [ 吞吐率:9.58req/s ] 内存消耗:4,872.63kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=991dfc72bbedb3e9a70d189fd3735fd3
  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.000438s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000631s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000322s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000329s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000538s ]
  6. SELECT * FROM `set` [ RunTime:0.000249s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000567s ]
  8. SELECT * FROM `article` WHERE `id` = 484646 LIMIT 1 [ RunTime:0.000457s ]
  9. UPDATE `article` SET `lasttime` = 1776688623 WHERE `id` = 484646 [ RunTime:0.007155s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000319s ]
  11. SELECT * FROM `article` WHERE `id` < 484646 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000586s ]
  12. SELECT * FROM `article` WHERE `id` > 484646 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000768s ]
  13. SELECT * FROM `article` WHERE `id` < 484646 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001586s ]
  14. SELECT * FROM `article` WHERE `id` < 484646 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002533s ]
  15. SELECT * FROM `article` WHERE `id` < 484646 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.013802s ]
0.106159s