当前位置:首页>学习笔记>V821开发学习笔记(三)—— 移植SPI LCD显示驱动及LVGL

V821开发学习笔记(三)—— 移植SPI LCD显示驱动及LVGL

  • 2026-04-20 11:31:06
V821开发学习笔记(三)—— 移植SPI LCD显示驱动及LVGL

本系列为基于百问网AvaotaF1 V821开发套件的全志V821芯片音视频学习笔记,据统计该芯片目前广泛应用于智能眼镜系统。

V821开发学习笔记(一)—— 开发板上手与环境搭建

V821开发学习笔记(二)—— SDK固件烧录及SmartIPC Demo演示

本章主要内容为移植SPI LCD显示驱动LCD_FB,驱动1.8' 128x160 RGB TFT LCD,屏幕驱动IC为ST7735

先看一眼最终效果:

本文大概预览:

  1. 前序概念

    LCD_FB驱动介绍、时序与信号

  2. 驱动移植

    源码结构、编写驱动、对接驱动框架、配置设备树、编译测试

  3. LVGL

  4. 彩蛋

1. 前序概念

1.1 LCD_FB驱动介绍

LCD_FB 驱动是 SDK 中基于 SPI(MIPI DBI Type-C)接口的显示驱动方案,其上层对接到 Linux framebuffer驱动,开辟一块内存区域用于存储显示内容的数据,屏幕的每个像素对应于内存中的一个值。下端对接到 SPI 驱动,通过 SPI 与显示屏通讯。

LCD_FB 所驱动的屏幕由于没有硬件格式转换,需要输入的图像数据格式符合 SPI 传输要求,即 RGB 数据格式。不支持直接显示 YUV 数据,需要应用层或中间层进行 YUV 到 RGB 的转换。

SPI LCD 一般用于小分辨率的 SPI 屏显示,该驱动支持使用 SPI 协议软件控制 DC 方式驱动 SPI 屏幕。

SPI LCD 驱动架构如下:

1.2 时序与信号

SPI 接口就是俗称的 4 线 SPI 模式,这是因为发送数据时需要额外借助DC线来区分命令和数据,与 SCLKCSSDA共四线。只支持 RGB565 模式。

Notes:

  • SPI 接口协议与 DBI 的 L4I1 和 L4I2 四线模式时序一样,完全兼容,区别是 DBI 下 DC 脚的控制是硬件自动化控制,而 SPI 模式下需要 CPU 软件控制 DC 脚,由于是非硬件操作,所以刷图性能平均较低。一般 SPI 屏幕配置 DBI L4I1 模式即可。由硬件控制 DC 脚即可。
  • 有一些特殊的屏幕需要专门控制 DC 时序,此时才使用 SPI 模式,手动控制 DC 时序。

1.2.1 SPI 时序

关于SPI时序这里不再展开介绍,时序图如下图所示:

1.2.2 RGB565

RGB565是一种 16 位色深的像素格式,主要用于内存和带宽受限的嵌入式系统,它将红、绿、蓝三个通道打包进 16 个比特中:

  • R(红色):5 位 → 32 个等级(0–31)
  • G(绿色):6 位 → 64 个等级(0–63)
  • B(蓝色):5 位 → 32 个等级(0–31)

总计 5 + 6 + 5 = 16 位,即 2 字节/像素。

因为人眼对绿色最敏感,所以绿色多 1 位,6 位绿色可以在有限空间内保留更多亮度细节。

送图数据如下时序图所示:

2. 驱动移植

2.1 源码结构

SPI LCD 驱动在内核中叫做 LCD FB 驱动。其源码如下所示:

v821@tina:~/Documents/tina-v821-v1.3/kernel/linux-5.4-ansc/bsp/drivers/video/sunxi/lcd_fb$ tree.├── dev_fb.c├── dev_fb.h├── dev_lcd_fb.c├── dev_lcd_fb.h├── disp_display.c├── disp_display.h├── disp_lcd.c├── disp_lcd.h├── include.h├── Kconfig├── lcd_fb_feature.h├── lcd_fb_intf.c├── lcd_fb_intf.h├── lcd_fb_ion_mem.c├── lcd_fb_ion_mem.h├── logo.c├── logo.h├── Makefile└── panels    ├── ch13613.c    ├── ch13613.h    ├── Kconfig    ├── kld2844b.c    ├── kld2844b.h    ├── kld35512.c    ├── kld35512.h    ├── kld39501.c    ├── kld39501.h    ├── lcd_source.h    ├── Makefile    ├── nv3029s.c    ├── nv3029s.h    ├── panels.c    ├── panels.h    ├── spi_panel.c    ├── st7735.c    ├── st7735.h    ├── st77916.c    └── st77916.h

SPI LCD 源码包括驱动源码与 SPI 屏幕驱动。其中屏幕驱动位于 panels 文件夹内。新增一款屏幕需要在 panels 文件夹中添加新屏幕驱动。(这里我们st7735.c/h就是我们新增的驱动文件)

2.2 编写SPI LCD显示屏驱动

2.2.1 获取屏幕初始化序列

ST7735是比较常用的一款驱动IC,网上有很多开源的驱动文件,也可以问屏幕厂商获取,主要是要配置正确的屏幕初始化序列。(篇幅问题,这里就只贴出部分源码,有需要的可以联系分享)
/* 初始化序列 */staticvoidLCD_panel_init(unsignedint sel){structsunxi_lcd_fb_disp_panel_parainfo;memset(&info, 0sizeof(info));if (sunxi_lcd_fb_bsp_disp_get_panel_info(sel, &info)) {  LCDFB_WRN("get panel info fail!\n");return; } else {  pr_info("st7735s %d*%d: Init start!\n", info.lcd_x, info.lcd_y); }/* 硬件复位 */ RESET(sel, 0); sunxi_lcd_delay_ms(100); RESET(sel, 1); sunxi_lcd_delay_ms(100);/* 0x11: Sleep out *//* 0xB1: Frame Rate Control 1 *//* 0xB2: Frame Rate Control 2 *//* 0xB3: Frame Rate Control 3 *//* 0xB4: Dot inversion *//* 0xC0: Power Control 1 *//* 0xC1: Power Control 2 *//* 0xC2: Power Control 3 *//* 0xC3: Power Control 4 *//* 0xC4: Power Control 5 *//* 0xC5: VCOM *//* 0x36: MADCTL *//* 0xE0: Gamma + *//* 0xE1: Gamma - *//* 0x3A: 65k mode *//* 设置全屏窗口 */ address(sel, 00, info.lcd_x - 1, info.lcd_y - 1);/* 0x29: Display on */ sunxi_lcd_cmd_write_dc(sel, 0x29); sunxi_lcd_cmd_write_dc(sel, 0x2c); /* Display ON */ printk(KERN_INFO "ST7735S: Init done!\n"); }

2.2.2 参照已有驱动改写

选择一个现成的 SPI LCD 改写即可,这里选择 nv3029s.c 驱动来修改。复制这两个驱动,重命名为 st7735.c

#include"st7735.h"#include<linux/gpio.h>#include<linux/of_gpio.h>staticvoidLCD_power_on(u32 sel);staticvoidLCD_power_off(u32 sel);staticvoidLCD_bl_open(u32 sel);staticvoidLCD_bl_close(u32 sel);staticvoidLCD_panel_init(u32 sel);staticvoidLCD_panel_exit(u32 sel);staticvoidaddress(unsignedint sel, int x, int y, int width, int height){ sunxi_lcd_cmd_write_dc(sel, 0x2B); /* Set row address */ sunxi_lcd_para_write(sel, (y >> 8) & 0xff); sunxi_lcd_para_write(sel, y & 0xff); sunxi_lcd_para_write(sel, (height >> 8) & 0xff); sunxi_lcd_para_write(sel, height & 0xff); sunxi_lcd_cmd_write_dc(sel, 0x2A); /* Set column address */ sunxi_lcd_para_write(sel, (x >> 8) & 0xff); sunxi_lcd_para_write(sel, x & 0xff); sunxi_lcd_para_write(sel, (width >> 8) & 0xff); sunxi_lcd_para_write(sel, width & 0xff);}...staticintlcd_set_addr_win(unsignedint sel, int x, int y, int width,int height){ address(sel, x, y, width, height); sunxi_lcd_cmd_write_dc(sel, 0x2c); /* Display ON */return0;}struct __lcd_panelst7735_panel = { .name = "st7735", .func = {  .cfg_open_flow = LCD_open_flow,  .cfg_close_flow = LCD_close_flow,  .blank = lcd_blank,  .set_var = lcd_set_var,  .set_addr_win = lcd_set_addr_win, },};
#ifndef __ST7735_PANEL_H__#define __ST7735_PANEL_H__#include"panels.h"externstruct __lcd_panelst7735_panel;#endif

2.3 对接驱动框架

修改源码同层Kconfig文件,增加st7735的配置:

config LCD_SUPPORT_ST7735 bool "LCD support ST7735 panel" default nhelp  If you want to support ST7735 panel for display driver, select it.

修改源码同层panels.c文件,在panel_array里增加st7735驱动的引用:

#if IS_ENABLED(CONFIG_LCD_SUPPORT_ST7735) &st7735_panel,#endif

修改源码同层panels.h文件,增加st7735驱动的引用:

#if IS_ENABLED(CONFIG_LCD_SUPPORT_ST7735)externstruct __lcd_panelst7735_panel;#endif

修改源码同层Makefile文件,增加st7735编译选项:

lcd_fb-${CONFIG_LCD_SUPPORT_ST7735} += panels/st7735.o

进入内核驱动配置界面,勾选新增的st7735驱动:

Allwinner BSP  ---> Device Drivers  --->  Video Drivers  --->   SPI LCD Panel Drivers  --->       <*> LCD FB Driver Support (SPI LCD)          LCD FB Panels select  --->           [*] LCD support st7735 panel

2.4 配置设备树

开发板SPI引脚示意图:

开发板与LCD连线示意图:

设备树配置如下:

&pio {	pwm5_pins_active: pwm5@0 {		pins = "PD6";		function = "pwm0_5";	};	pwm5_pins_sleep: pwm5@1 {		pins = "PD6";		function = "gpio_in";		bias-pull-down;	};	spi2_pins_default: spi2@0 {		pins = "PD1", "PD2", "PD3"; /* CS, SCK, SDA */		function = "spi2";		allwinner,drive = <3>;	};	spi2_pins_sleep: spi2@1 {		pins = "PD1", "PD2", "PD3";		function = "io_disabled";	};}&lcd_fb {	status = "okay";	port {#address-cells = <1>;#size-cells = <0>;		spi_panel0: endpoint@0 {			reg = <0>;			remote-endpoint = <&panel_st7735_spi2>;		};	};};&spi2 {	pinctrl-0 = <&spi2_pins_default>;	pinctrl-1 = <&spi2_pins_sleep>;	pinctrl-names = "default", "sleep";    clock-frequency = <100000000>;    sunxi,spi-bus-mode = <SUNXI_SPI_BUS_MASTER>;    sunxi,spi-cs-mode = <SUNXI_SPI_CS_AUTO>;	status = "okay";	panel_st7735_spi2: slave@0 {		device_type = "spi-panel";		compatible = "allwinner,spi-panel";		reg = <0x0>;		spi-max-frequency = <100000000>;		lcd_used = <1>;		lcd_driver_name = "st7735";		lcd_if = <0>;		lcd_dbi_if = <0>;		lcd_data_speed = <48>;		lcd_x = <128>;		lcd_y = <160>;		lcd_pixel_fmt = <10>;		lcd_dbi_fmt = <2>;		lcd_rgb_order = <0>;		lcd_width = <28>;		lcd_height = <35>;		lcd_pwm_used = <1>;		lcd_pwm_ch = <5>;		lcd_pwm_freq = <5000>;		lcd_pwm_pol = <0>;		lcd_frm = <1>;		lcd_gamma_en = <1>;		fb_buffer_num = <2>;		lcd_backlight = <100>;		lcd_fps = <60>;		lcd_dbi_te = <0>;		lcd_dbi_clk_mode = <0>;		lcd_spi_dc_pin = <&pio PD 5 GPIO_ACTIVE_LOW>;		lcd_gpio_0 = <&pio PD 4 GPIO_ACTIVE_LOW>;		status = "okay";	};};

lcd_fb 节点用于配置和管理 LCD 屏幕的显示功能。该节点通过 port 属性配置了两款不同的 SPI 接口屏幕,分别为 spi_panel0 和 spi_panel1。每个屏幕的配置都通过 endpoint 和 remote-endpoint 关联,指定了屏幕的接口和驱动信息。

spi 节点定义了 SPI 控制器使用的引脚,SPI 驱动方式、最大频率,其中定义了 Panel 的节点标识该 LCD 显示面板位于该 SPI 节点下。

panel_st7735_spi2节点定义了屏幕的物理尺寸,时序,接口,背光 PWM 等。

2.5 编译、测试

使用mp -j4编译打包,并使用烧录工具烧录到开发板,上电后可以看到屏幕亮起,使用如下命令测试屏幕,输出彩条测试:

echo 0 > /sys/class/lcd_fb/lcd_fb/attr/colorbar 显示黑屏,清零 FB 数据echo 1 > /sys/class/lcd_fb/lcd_fb/attr/colorbar 显示彩条,用于点屏测试

3. LVGL

LVGL是一个免费的开源图形库,提供了创建嵌入式 GUI 所需的一切,具有易于使用的图形元素,美观的视觉效果和低内存占用。Tina SDK 中移植了 LVGL 8.3.2 核心组件与 Demo,可以快速测试使用:

3.1 LVGL配置

执行make menuconfig命令,配置如下:

Gui --->    Littlevgl --->        <*> lv_examples                              (lvgl官方demo)        -*- lvgl-8.3.2 use sunxifb double buffer     (使能双缓冲,解决撕裂问题)        [ ] lvgl-8.3.2 use sunxifb cache             (V821 不支持此选项)        [ ] lvgl-8.3.2 use sunxifb g2d               (V821 不支持此选项)        [ ] lvgl-8.3.2 use sunxifb g2d rotate        (使能g2d旋转功能,需要开启g2d)        [ ] lvgl-8.3.2 use freetype                  (自动链接freetype)        [ ] lvgl-8.3.2 use sunxifb direct mode       (V821 不支持此选项)

LVGL 源码位于 platform/thirdparty/gui/lvgl-8, 其框架如图:

3.2 代码修改及测试

由于我们的LCD不支持触摸功能,而默认代码中会初始化evdev导致lvgl初始化失败,所以这里需要注释掉platform/thirdparty/gui/lvgl-8/lv_examples/src/main.c如下代码:

// evdev_init();// static lv_indev_drv_t indev_drv;// lv_indev_drv_init(&indev_drv);                /*Basic initialization*/// indev_drv.type =LV_INDEV_TYPE_POINTER;        /*See below.*/// indev_drv.read_cb = evdev_read;               /*See below.*/// /*Register the driver in LVGL and save the created input device object*/// lv_indev_t * evdev_indev = lv_indev_drv_register(&indev_drv);/*Create a Demo*/switch(atoi(argv[1])) {case0:        lv_demo_widgets();break;case1:        lv_demo_music();break;case2:        lv_demo_benchmark();break;case3:        lv_demo_keypad_encoder();break;case4:        lv_demo_stress();break;default:free(buf);        sunxifb_exit();return0;    }

可以看到,目前示例代码中支持0-4等5个测试demo,使用命令mp -j4编译打包并将镜像烧录至开发板,运行命令测试:

lv_examples 1

4. 彩蛋

接下来,把Linux小企鹅和启动日志也显示到LCD吧,关于这个LCD屏幕,硬件上背光引脚竟然是上拉的,也就是说只要接了3V3的电源,屏幕就会亮起白色,这就导致上电后在boot阶段一直是白屏,这里也不想再去修改boot的配置了。

进入内核配置页面:

  • 使能虚拟终端:

  • 使能Bootup logo

修改初始化脚本/etc/init.d/rcS,直接进入LVGL应用:

echo '/usr/bin/lv_examples 3 &' >> /etc/init.d/rcS

后面会介绍音频功能并添加其他外设,计划移植小智AI到V821开发板,感兴趣的可以继续关注。

参考:全志在线、百问网

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-21 06:22:06 HTTP/2.0 GET : https://67808.cn/a/482372.html
  2. 运行时间 : 0.102592s [ 吞吐率:9.75req/s ] 内存消耗:4,882.02kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=5404973d9d9d15304a4f75f341eeb3c4
  1. /yingpanguazai/ssd/ssd1/www/no.67808.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/no.67808.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/no.67808.cn/runtime/temp/6df755f970a38e704c5414acbc6e8bcd.php ( 12.06 KB )
  140. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000584s ] mysql:host=127.0.0.1;port=3306;dbname=no_67808;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000784s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000340s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000276s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000462s ]
  6. SELECT * FROM `set` [ RunTime:0.000195s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000564s ]
  8. SELECT * FROM `article` WHERE `id` = 482372 LIMIT 1 [ RunTime:0.000514s ]
  9. UPDATE `article` SET `lasttime` = 1776723726 WHERE `id` = 482372 [ RunTime:0.008713s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 65 LIMIT 1 [ RunTime:0.000249s ]
  11. SELECT * FROM `article` WHERE `id` < 482372 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001630s ]
  12. SELECT * FROM `article` WHERE `id` > 482372 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001291s ]
  13. SELECT * FROM `article` WHERE `id` < 482372 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001014s ]
  14. SELECT * FROM `article` WHERE `id` < 482372 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.011889s ]
  15. SELECT * FROM `article` WHERE `id` < 482372 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.007048s ]
0.104304s