当前位置:首页>Linux>如何开始嵌入式Linux的学习呢?imx-forge学习指南

如何开始嵌入式Linux的学习呢?imx-forge学习指南

  • 2026-06-30 04:34:24
如何开始嵌入式Linux的学习呢?imx-forge学习指南

一切的源头——如何开始本项目的学习呢?

这里是公众号粉丝:目隐大佬的请求!我昨天一下班就回去看了一下仓库,的确太乱,而且mkdocs工具日益陷入停滞维护,所以我们转网站啦!

一键起飞:https://awesome-embedded-learning-studio.github.io/imx-forge/

感觉好看的 + 网站有用的话,麻烦点一个小小的Star?

仓库地址:https://github.com/Awesome-Embedded-Learning-Studio/imx-forge。

下面进入正文:所以呢?如何开始起手学习本项目呢?

我本来打算直接画一个Roadmap的,但是我收到反馈——就算画Roadmap,那些不太了解嵌入式Linux的朋友仍然会一头雾水。笔者决定,必须要把常见的问题汇总一下,整理成路线清单。聊聊我们的嵌入式Linux开发到底是什么。只有这样,学习这个项目,您才知道我们到底从那个地方开始!如果您对嵌入式Linux是什么本身已经非常清晰,滑到下面,直接挑您现在困惑的领域开始!

我需要首先说明的是——嵌入式Linux并不容易。绝大多数情况下,我们倾向于在Linux开发环境(专业的说,应当叫Linux的各个发行版,比如说UBuntu, Debian, 或者是笔者更为中意的Arch Linux等)开发嵌入式开发板的功能。

嵌入式Linux从最本质上讲,同嵌入式单片机开发有部分区别,但是又没有区别。没有区别的地方在哪里呢?

  1. 从驱动开发的角度上聊,都是面向硬件,在了解硬件基础特性后,使用软件代码——比如说,我们会使用C语言开发驱动(这是因为Linux提供的接口抽象只有C,近年来才慢慢有Rust)。从宏观的角度上讲,单片机的最本质的东西没有变:使用C来控制您的硬件。

  2. 从应用开发的角度上聊,还是面向业务。你把手头的需求搞清楚了,比匆忙行动更加重要。这是软件工程的要义。只不过用的是C++,或者是Rust,或者是其他您手头需要的业务语言,使用特定的框架,就像您开发OLED程序可能会去用u8g2库,驱动MPU6050用其他人写的封装好的库,等等!

抓住这些根,其实区别只有技术路线不同而已。这就是我们下面聊的,不一样的地方。

嵌入式Linux到底是个什么东西?

很多人第一次接触"嵌入式Linux"这个词的时候,脑子里是一团浆糊。你可能玩过Arduino,玩过STM32,觉得"嵌入式"就是那点东西:初始化时钟、配置GPIO、写几个中断、然后在while(1)里跑你的业务逻辑。这没错,这是经典单片机开发。再复杂一些,也就是上个RTOS,让简单的Schedular(跟Linux的比真的简单到爆炸了)托管您的多任务切换细节。

嵌入式Linux不一样。嵌入式Linux = 完整的Linux操作系统 + 跑在特定硬件平台上的应用系统。它不是一个简单的"超级单片机",它就是一台真正的计算机,对!你对一个复杂度就是你的电脑差不多的东西,对他做软硬件编程!

你平时在电脑上用的Ubuntu、Debian、Arch Linux,本质上和嵌入式Linux跑的东西是一样的。只不过你的电脑用的是x86-64处理器,而嵌入式设备用的是ARMRISC-V这类处理器。

这下麻烦了。经典的单片机开发中,我们几乎没有硬件和软件的隔离。

没有隔离的时候,我们叫裸机开发。以ARM芯片为例子(RISC-V笔者只有在学习玩具操作系统XV6的时候和跟人交流CPU架构,和短暂的学习计算机架构的时候短暂的接触过,所以不下结论),您的所有逻辑,都是被前后台架构托管。任务同步的串行执行,基于状态机的跳转任务流,顶多中断打断,修改状态。可以说这样的架构本身的复杂度可以说是入门级别的。

即便有RTOS隔离,也只是被RTOS很轻的一层抽象层抽象了一下,我们还是离硬件很近。我们的代码对于单片机而言是一视同仁的。有时候眼睛一闭上,您可能都能想得到现在您的ARM芯片上跑的什么指令。

嵌入式Linux变了。CPU的性能突然飙到了几百甚至1GMhz,主板硬件的内存芯片达到了几百甚至几个G的大小,片上的硬件的复杂度远远超出了您熟悉的开发板。这就要求我们使用更加复杂的操作系统控制——你知道的,就是Linux

随着 MMU 与虚拟内存机制的引入,现代的操作系统根本区别于您熟悉的RTOS,它基于页表完成虚拟地址到物理地址的映射,并实现进程间地址空间隔离。内存管理也不再停留于单片机或轻量 RTOS 中常见的简单堆分配器,而是发展出了以 Buddy System 为核心的页级内存管理,并结合 Slab/SLUB 等对象缓存分配器提升内核分配效率与缓存局部性。

任务调度方面,系统也从裸机循环或简单优先级抢占模型,逐渐演化为 Linux 中基于 CFS(Completely Fair Scheduler)的通用公平调度体系,并同时保留 SCHED_FIFOSCHED_RR 等实时调度能力,以兼顾吞吐、公平性与实时响应需求。

简单文件系统,我相信一些朋友可能玩过,对于嵌入式Linux而言,只有FAT32已经无法满足现代系统需求,EXT4Btrfs 等现代文件系统开始提供日志恢复、权限管理、大容量支持、延迟分配以及 Copy-on-Write 等能力。与此同时,网络设备与 TCP/IP 协议栈的引入,也使操作系统逐渐具备完整的网络通信能力。

更重要的是,现代操作系统通过用户态与内核态隔离建立了严格的权限边界:应用程序无法直接访问硬件资源,而必须通过系统调用由内核统一完成设备管理、资源调度与安全控制。这种分层架构也使驱动、进程管理、文件系统与网络协议栈逐渐形成了高度模块化的系统设计。而在裸机或轻量 RTOS 的单片机环境中,这些东西在裸机单片机里要么没有,要么是你自己造轮子造出来的简陋版本,因此系统复杂度、抽象层级以及工程规模都与现代通用操作系统存在本质差异。

当然,这些只是景观。您要是不跟我一样喜欢看Linux内核,那无所谓,知道就得了,实际上你极少改这里的代码。

所以嵌入式Linux我注意到一些朋友跟我吐槽说不自在,其实很简单。你是在一个已有的、成熟的操作系统框架下,去适配你的硬件,然后开发你的应用。这和单片机开发那种"一切从零开始"的思路完全不同。

和单片机开发到底有啥区别?

这个问题我当年也纠结过好久。后来踩了一堆坑之后,我总结出这么几个关键区别:

1. 启动链条的差异

单片机

上电 → 跳到main() → 说啥了干活呗

嵌入式Linux

上电 → 厂商小私货的ROM代码 → Bootloader(U-Boot) → Linux内核 → RootFS挂载 → Init进程 → 你的应用

看到区别了吗?单片机的启动过程简单粗暴,上电之后你的代码就开始跑了。但嵌入式Linux要经过一个完整的启动链条。每一个环节都可能出问题,每一个环节你都得懂。

U-Boot配置错了?不好意思起不来。可能串口都没消息!内核设备树写错了?送你一个Kernel Panic,再见!Rootfs挂载失败?还是Kernel Panic,那个挂载错误我都快背出来了。。。见太多次了!

这就是为什么这个项目里有这么多关于U-Boot内核Rootfs的教程——这些东西是绕不过的坎。

2. 开发模式的差异

单片机开发模式下,一个工程里驱动和应用都在一个main.c里,直接操作寄存器,全局变量随便用,中断里想干啥干啥。撑死了再封装一下下,真的就是一下下了,我是没见过比丢一个函数指针和参数就能起飞一个"App"抽象更简单的应用派发代码了。

但嵌入式Linux不一样,驱动和应用完全分离,一个在内核空间,一个在用户空间。你不能直接操作硬件,得通过系统调用。内核编程有一堆限制——不能用任何传统的C标准库,不能同步的无限循环(小心被骂死哦),要考虑并发安全。应用开发和在PC上写程序差不多,这个分离是很多从单片机转过来的朋友最不适应的,我的私信全是问这个的,哈哈!

你不能在应用里直接 GPIO->ODR = 0x01 这么写。你得写个驱动,然后应用通过 /dev/xxx设备文件去和驱动交互。 听起来很麻烦?确实麻烦。但这种麻烦带来的是安全性、稳定性和可维护性。

3. 调试方式的差异

单片机这块J-Link/SWD一连,单点调试走起,想看东西了?printf随便打,想在哪打在哪打!看寄存器、看内存、看变量,一切尽在掌握。但嵌入式Linux不太一样,驱动调试主要靠 pr_* 和 dmesg,当然也能JTag或者kgdb,但是笔者试过,麻烦程度有点小爆炸。应用调试可以用gdb,但跨平台调试有点折腾。你想看内存?不好意思,你只能拿到虚拟内存地址,背后真正的物理地址早就被MMU硬件和页表管理子系统托管的看不到了。日志、/procsysfs,信息分散在各处,很多时候你得靠"推理"和"经验"去定位问题。很多朋友第一次在内核里 pr_* 打了一堆日志,然后发现不知道怎么看,心态当场崩了。

4. 工具链的差异

单片机这块其实挺省心的,厂商IDE一键搞定,KeilIARCubeIDE什么的,图形界面点一点就完事了。但嵌入式Linux不一样,交叉编译工具链得自己装,MakefileKconfig得自己写,很多时候你要和命令行打交道。这也是为什么我们的教程从工具链开始——这是绕不过的第一步,你连编译器都没有,后面的一切都无从谈起。

这个项目的层级结构

好,说完了嵌入式Linux是什么,以及它和单片机的区别,我们来聊聊这个项目的结构。我尽量按照"从底层到上层"的逻辑来组织这个项目,你把它想象成一栋楼,得先打地基,然后一层一层往上盖。

最底层是工具链,这是地基。没有工具链,你啥也干不了,U-Boot编不了、内核编不了、应用编不了。我们的教程从这里开始,你去看看工具链安装就知道了,这一步绕不过。

再往上是U-Boot,你可以把它理解为嵌入式Linux的"第一个程序"。上电之后它先跑起来,负责初始化硬件——内存、串口、网络、存储这些,然后把Linux内核加载进来,最后把控制权交出去。这块的内容在U-Boot教程里,你想了解Bootloader的话可以看看。

然后是Linux内核,这是整个系统的核心。进程调度、内存管理、文件系统、设备驱动框架、网络协议栈,全是它在管。内核这块水挺深的,我们准备了内核教程,从编译配置到设备树,一步步带你走。

内核启动后需要挂载一个根文件系统,这里面有init进程(第一个用户进程)、/bin和/sbin这些目录下的工具、配置文件、库文件等等。RootFS这块的内容在Rootfs教程里,BusyBox怎么编、inittab怎么写、NFS怎么挂,都有。

再往上是驱动开发,这是连接硬件和应用的桥梁。驱动负责硬件初始化、寄存器操作、向上提供统一的接口、处理中断。这块是重头戏,驱动教程从字符设备到并发机制,从硬件访问到设备树,内容相当扎实。

最顶层就是你的应用了,通过设备文件访问驱动,调用各种系统库,做你想做的事情。应用开发和在PC上写程序差不多,只是编译时要用交叉编译工具链

如何开始学习?

这个问题其实没有标准答案,取决于你的背景。我给几个不同的路线,你可以对号入座。

如果你是完全的新手,建议按顺序来。先搞懂工具链,这一步绕不过,必须先搞定。然后了解一下U-Boot,不需要深入,知道它是干嘛的就行。接着了解一下内核,同样概念层面理解即可。搞一下RootFS,知道根文件系统是啥、里面有什么。最后开始驱动入门,这里是真正开始写代码的地方。这个路径比较稳,虽然慢一点,但基础打得牢。

如果你有单片机经验,你可以跳过一些基础概念,重点关注那些不一样的点。工具链安装还是得看,和单片机不一样。然后重点看内核空间基础,这个概念在单片机里没有,但是很重要。设备树也得学,单片机里硬件配置在代码里,Linux里在设备树里。之后就可以直接从字符设备驱动教程开始了。

如果你想快速上手,想尽快看到效果,可以走"实战路线"。不喜欢折腾工具链安装的,先把Docker环境搭起来,看QUICK_START.md就行。然后直接运行 ./scripts/release-all.sh 构建整套系统,把镜像烧到板子上,先跑起来再说。跑起来之后,你再回头慢慢研究各个模块,这样心里有底。

学习路线图(时间线)

最后我给一个大致的时间线参考,当然每个人情况不同,这只是我的估算。如果你想走马观花一遍,大概需要3-4周的时间。Docker环境搭建和工具链安装一天就够了(当然可以不Docker, 你是WSL好还是虚拟机好,都可以,一样的。),U-Boot基础两三天,Linux内核基础三五天,RootFS构建两三天,驱动开发基础得一两周,最后是系统整合与调试,这块是持续的工作。如果你想快速上手,一周时间足够让你跑起来一个基本系统。

最后的一些唠叨

说实话,嵌入式Linux的学习曲线确实比单片机要陡峭。但这并不是因为"更难",而是因为"东西更多"。单片机开发你只需要关注你的板子和你的代码,嵌入式Linux开发你需要关注工具链U-Boot内核设备树RootFS驱动应用,每一个环节都是一个不小的topic。但好消息是,一旦你掌握了这个完整的链条,你就拥有了从零构建一个嵌入式Linux系统的能力。这意味着你不受厂商SDK的束缚,想用哪个版本的内核就用哪个版本,想怎么定制系统就怎么定制系统,真正理解"底层"是什么。这种能力的价值,我觉得远大于学习过程中的那些麻烦。实际上,这也是我开始这个项目的原因—— 用 🔥 和无数串口终端堆出来的工程。希望我们可以更方便地自定义自己的 i.MX6ULL 系统。

接下来去哪里?

如果你已经看到这里,说明你是真的想学。那么下一步,

完全新手去工具链安装:https://awesome-embedded-learning-studio.github.io/imx-forge/tutorial/start/01_start_from_toolchain

想先看效果的去看QUICK_START.md:https://awesome-embedded-learning-studio.github.io/imx-forge/QUICK_START

想直接看驱动的去字符设备驱动教程:https://awesome-embedded-learning-studio.github.io/imx-forge/tutorial/driver/00_chardev_base/01_introduction

想了解U-Boot的去什么是U-Boot:https://awesome-embedded-learning-studio.github.io/imx-forge/tutorial/uboot/01_what_is_uboot

想了解内核的去内核概述:https://awesome-embedded-learning-studio.github.io/imx-forge/tutorial/kernel/01_kernel_overview

祝你在嵌入式Linux的世界里玩得开心!如果有问题随时去GitHub Issues找我们!!

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 18:00:34 HTTP/2.0 GET : https://f.mffb.com.cn/a/493339.html
  2. 运行时间 : 0.387448s [ 吞吐率:2.58req/s ] 内存消耗:4,874.23kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=24ad4a8082c4d005e98502194787d978
  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.000904s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001413s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.027149s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000885s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001368s ]
  6. SELECT * FROM `set` [ RunTime:0.033201s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001576s ]
  8. SELECT * FROM `article` WHERE `id` = 493339 LIMIT 1 [ RunTime:0.004940s ]
  9. UPDATE `article` SET `lasttime` = 1783072834 WHERE `id` = 493339 [ RunTime:0.031519s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.009911s ]
  11. SELECT * FROM `article` WHERE `id` < 493339 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.022872s ]
  12. SELECT * FROM `article` WHERE `id` > 493339 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.014690s ]
  13. SELECT * FROM `article` WHERE `id` < 493339 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.006440s ]
  14. SELECT * FROM `article` WHERE `id` < 493339 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.059382s ]
  15. SELECT * FROM `article` WHERE `id` < 493339 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.005907s ]
0.389724s