Rockchip RK3566 Camera点亮

news2024/9/30 17:35:21

一.camera名词解释

在现代移动设备中,常用一种接口用来连接SOC和LCD和Camera,这种接口就是MIPI
其中SOC和LCD连接叫 DSI(DisplayCommandSet),SOC和Camera连接叫CSI(DisplaySerialInterface)。

二.camera数据通路

一般情况下,Camera和SOC有两个接口进行连接,分为为MIPI接口和I2C接口,其中MIPI接口用来传输图像的数据,数据传输路径为从Sensor传输到SOC。另一个接口为I2C接口,主要是用来SOC对Sensor初始化配置寄存器和摄像头参数的配置,比如要进行图像数据捕获的时候就需要通过i2c对Sensor的寄存器进行配置。

在这里插入图片描述

在这里插入图片描述

由上面的两个图可以看到,光线经过Sensor之后,Sensor芯片经过ADC转换生成图像数据,然后Sensor生成的图像数据经过MIPI总线进入SOC,进入SOC之后经过ISP进行图像处理。所以由此可以可以看出,Camera驱动V4L2一定有这3部分组成,第一部分与Sensor相关的,比如控制Sensor的寄存器进行配置,这一部分是有Sensor厂家提供。第二部分和MIPI相关的,需要MIPI进行图像传输,所以驱动应该就有这一部分的驱动,这部分一般是由SOC厂家提供。第三部分就是ISP部分,有些SOC有ISP图像处理模块,经过MIPI传输的图像进入SOC之后需要在传入SOC的ISP模块对图像进一步进行加工,所以一定是有一部分驱动是描述ISP模块的。


三.Camera 使用

用单目摄像头配置为full mode,若使用双目摄像头配置为split mode。

full mode:

  • 仅使用csi2_dphy0,csi2_dphy0与csi2_dphy1/csi2_dphy2互斥,不可同时使用;
  • data lane最大4 lanes;
  • 最大速率2.5Gbps/lane;

split mode:

  • 仅使用csi2_dphy1和csi2_dphy2, 与csi2_dphy0互斥,不可同时使用;

  • csi2_dphy1和csi2_dphy2可同时使用;

  • csi2_dphy1和csi2_dphy2各自的data lane最大是2 lanes;

  • csi2_dphy1对应物理dphy的lane0/lane1;

  • csi2_dphy2对应物理dphy的lane2/lane3;

  • 最大速率2.5Gbps/lane

四.点亮sensergc2053/gc2093

添加驱动源文件:

\kernel\drivers\media\i2c\gc2053.c

\kernel\drivers\media\i2c\gc2093.c

\kernel\include\config\video\gc2053.h

\kernel\include\config\video\gc2093.h

修改Makefile:

kernel/drivers/media/i2c/Makefile

+obj-$(CONFIG_VIDEO_GC2053)	+= gc2053.o
+obj-$(CONFIG_VIDEO_GC2093)	+= gc2093.o

修改Kconfig:

config VIDEO_GC2053
	tristate "GalaxyCore GC2053 sensor support"
	depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
	depends on MEDIA_CAMERA_SUPPORT
	select V4L2_FWNODE
	help
	  Support for the GalaxyCore GC2053 sensor.

	  To compile this driver as a module, choose M here: the
	  module will be called gc2053.

config VIDEO_GC2093
	tristate "GalaxyCore GC2093 sensor support"
	depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
	depends on MEDIA_CAMERA_SUPPORT
	select V4L2_FWNODE
	help
	  Support for the GalaxyCore GC2093 sensor.

	  To compile this driver as a module, choose M here: the
	  module will be called gc2093.

添加驱动对应的宏开关:

kernel/arch/arm64/configs/rockchip_linux_defconfig

CONFIG_VIDEO_GC2053=y
CONFIG_VIDEO_GC2093=y

添加完以上三个,就是在内核中添加驱动完成,可以看开机log中有没有驱动中的log来看驱动有没有被加载,没加载可能存在多个宏开关xxxx_defconfig,需要重新添加。

添加设备树:

首先找到编译进内核的这板dts

/device/rockchip/rk356x/BoardConfig-rk3566-evb2-lp4x-v10.mk

# Kernel dts
export RK_KERNEL_DTS=rk3566-evb2-lp4x-v10-linux

找到rk3566-evb2-lp4x-v10-linux

添加双摄dtsi头文件:

#include "rk3566-tamsong-cam-2ms2m.dtsi"
&i2c4 {
	status = "okay";
	gc2053: gc2053@37 { //IR
		status = "okay";
		compatible = "galaxycore,gc2053";//需要与驱动中的匹配字符串一致
		reg = <0x37>;// sensor I2C 设备地址,7位

        //查看硬件配置引脚,特别注意clocks与pinctrl-0一一对应,
        //CLK_CAM0_OUT->cam_clkout0, CLK_CAM1_OUT->cam_clkout1, CLK_CIF_OUT->cif_clk, 
        //CLK_MIPICSI_OUT->mipicsi_clk0
		avdd-supply = <&vcc_camera>;
		power-domains = <&power RK3568_PD_VI>;
		clocks = <&cru CLK_CAM0_OUT>;
        pinctrl-0 = <&cam_clkout0>;
		clock-names = "xvclk";
		pinctrl-names = "default";

		//power-gpios = <&pca9555 PCA_IO0_3 GPIO_ACTIVE_HIGH>; //IR_PWR_EN
		power-gpios = <&gpio4 RK_PB0 GPIO_ACTIVE_HIGH>; //IR_PWR_EN
        // power管脚分配及有效电平
		pwdn-gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_LOW>;

		firefly,clkout-enabled-index = <1>;
		rockchip,camera-module-index = <0>;
        // 模组朝向,有"back"和"front"
		rockchip,camera-module-facing = "back";
        //module与lens命令要与设备/etc/iqfiles中对应sensor的iq文件名后面相同,如gc2053_YT- 
        //RV1109-2-V1_40IR-2MP-F20.xm
		rockchip,camera-module-name = "YT-RV1109-2-V1";
		rockchip,camera-module-lens-name = "40IR-2MP-F20";
		port {
			gc2053_out: endpoint {
				remote-endpoint = <&dphy1_in>;
				data-lanes = <1 2>;
			};
		};
	};

	gc2093: gc2093b@7e { //RGB
		status = "okay";
		compatible = "galaxycore,gc2093";
		reg = <0x7e>;

		avdd-supply = <&vcc_camera>;
		power-domains = <&power RK3568_PD_VI>;
		//clocks = <&pmucru CLK_WIFI>;
		clock-names = "xvclk";
		pinctrl-names = "default";
		//pinctrl-0 = <&refclk_pins>;
		//flash-leds = <&flash_led>;

		pwdn-gpios = <&gpio4 RK_PB7 GPIO_ACTIVE_HIGH>;

		firefly,clkout-enabled-index = <0>;
		rockchip,camera-module-index = <1>;
		rockchip,camera-module-facing = "front";
		rockchip,camera-module-name = "YT-RV1109-2-V1";
		rockchip,camera-module-lens-name = "40IR-2MP-F20";
		port {
			gc2093_out: endpoint {
				remote-endpoint = <&dphy2_in>;
				data-lanes = <1 2>;
			};
		};
	};
};

五.调试

将编译的内核镜像烧写到设备,设备启动后i2c总线上没有检测到0x37的设备:

[root@RK356X:/]# i2cdetect -y 4
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- -- 

启动日志也显示gc2053的驱动加载失败:

[?2004hroot@RK356X:/# dmesg | grep gc
[    0.000000] Linux version 4.19.232 (tamsong@tamsong-pc) (gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05), GNU ld (Linaro_Binutils-2017.05) 2.27.0.20161019) #5 SMP Tue Dec 13 14:53:49 CST 2022
[    0.984327] gc2053 4-0037: driver version: 00.01.01
[    0.984369] gc2053 4-0037: Failed to get reset-gpios
[    0.984426] gc2053 4-0037: Looking up dovdd-supply from device tree
[    0.984435] gc2053 4-0037: Looking up dovdd-supply property in node /i2c@fe5d0000/gc2053@37 failed
[    0.984462] gc2053 4-0037: 4-0037 supply dovdd not found, using dummy regulator
[    0.984543] gc2053 4-0037: Linked as a consumer to regulator.0
[    0.984557] gc2053 4-0037: Looking up avdd-supply from device tree
[    0.984606] gc2053 4-0037: Linked as a consumer to regulator.9
[    0.984620] gc2053 4-0037: Looking up dvdd-supply from device tree
[    0.984628] gc2053 4-0037: Looking up dvdd-supply property in node /i2c@fe5d0000/gc2053@37 failed
[    0.984641] gc2053 4-0037: 4-0037 supply dvdd not found, using dummy regulator
[    0.984683] gc2053 4-0037: lane_num(2)  pixel_rate(118800000)
[    0.984698] gc2053 4-0037: could not get default pinstate
[    0.984705] gc2053 4-0037: could not get sleep pinstate
[    0.989435] gc2053 4-0037: gc2053 read reg(0xf0 val:0x0) failed !
[    0.989627] gc2053 4-0037: gc2053 read reg(0xf1 val:0x0) failed !
[    0.989642] gc2053 4-0037: gc2053_read_reg failed (-6)
[    0.989812] gc2053 4-0037: Dropping the link to regulator.9
[    0.990142] gc2093 4-007e: driver version: 00.01.04
[    0.990233] gc2093 4-007e: Failed to get reset-gpios
[    0.990276] gc2093 4-007e: Looking up dovdd-supply from device tree
[    0.990286] gc2093 4-007e: Looking up dovdd-supply property in node /i2c@fe5d0000/gc2093b@7e failed
[    0.990311] gc2093 4-007e: 4-007e supply dovdd not found, using dummy regulator
[    0.990358] gc2093 4-007e: Linked as a consumer to regulator.0
[    0.990372] gc2093 4-007e: Looking up avdd-supply from device tree
[    0.990420] gc2093 4-007e: Linked as a consumer to regulator.9
[    0.990433] gc2093 4-007e: Looking up dvdd-supply from device tree
[    0.990440] gc2093 4-007e: Looking up dvdd-supply property in node /i2c@fe5d0000/gc2093b@7e failed
[    0.990453] gc2093 4-007e: 4-007e supply dvdd not found, using dummy regulator
[    1.012241] gc2093 4-007e: i2c read failed at addr: 3f0
[    1.012444] gc2093 4-007e: i2c read failed at addr: 3f1
[    1.012459] gc2093 4-007e: Failed to read sensor id, (-6)
[    1.012636] gc2093 4-007e: Dropping the link to regulator.9

查看gpio的占用情况:

发现设备树中power-gpio(gpio-136),pwdn-gpio(gpio-142,gpio-142)并没有出现。

[?2004hroot@RK356X:/# cat /sys/kernel/debug/gpio
gpiochip0: GPIOs 0-31, parent: platform/fdd60000.gpio, gpio0:
 gpio-5   (                    |vcc5v0_otg          ) out lo
 gpio-6   (                    |vcc5v0_host         ) out hi
 gpio-13  (                    |GTP_INT_IRQ         ) in  hi
 gpio-14  (                    |GTP_RST_PORT        ) out hi
 gpio-15  (                    |work                ) out lo
 gpio-18  (                    |vcc3v3_pcie         ) out lo
 gpio-21  (                    |vcc3v3_lcd1_n       ) out hi
 gpio-23  (                    |vcc3v3_lcd0_n       ) out hi

gpiochip1: GPIOs 32-63, parent: platform/fe740000.gpio, gpio1:
 gpio-42  (                    |reset               ) out hi

gpiochip2: GPIOs 64-95, parent: platform/fe750000.gpio, gpio2:
 gpio-73  (                    |reset               ) out lo
 gpio-77  (                    |bt_default_rts      ) in  hi
 gpio-79  (                    |bt_default_reset    ) out lo
 gpio-80  (                    |bt_default_wake_host) in  lo
 gpio-81  (                    |bt_default_wake     ) in  lo

gpiochip3: GPIOs 96-127, parent: platform/fe760000.gpio, gpio3:
 gpio-99  (                    |reset               ) out hi
 gpio-114 (                    |mdio-reset          ) out hi

gpiochip4: GPIOs 128-159, parent: platform/fe770000.gpio, gpio4:
 gpio-145 (                    |vcc_camera          ) out lo

使用示波器测量时钟引脚,发现并没有时钟,怀疑时钟引脚被占用。

查看gpio的复用情况:

RK356X:/sys/kernel/debug/pinctrl/pinctrl-rockchip-pinctrl# cat  pinmux-pins
pin 126 (gpio3-30): fe010000.ethernet (GPIO UNCLAIMED) function gmac1 group gmac1m1-rgmii-bus
pin 127 (gpio3-31): fe010000.ethernet (GPIO UNCLAIMED) function gmac1 group gmac1m1-rgmii-bus
pin 128 (gpio4-0): fe010000.ethernet (GPIO UNCLAIMED) function gmac1 group gmac1m1-rgmii-clk
pin 129 (gpio4-1): fe010000.ethernet (GPIO UNCLAIMED) function gmac1 group gmac1m1-rgmii-bus
pin 130 (gpio4-2): fe010000.ethernet (GPIO UNCLAIMED) function gmac1 group gmac1m1-rgmii-bus
pin 131 (gpio4-3): fe010000.ethernet (GPIO UNCLAIMED) function gmac1 group gmac1m1-rgmii-clk
pin 132 (gpio4-4): fe010000.ethernet (GPIO UNCLAIMED) function gmac1 group gmac1m1-tx-bus2
pin 133 (gpio4-5): fe010000.ethernet (GPIO UNCLAIMED) function gmac1 group gmac1m1-tx-bus2
pin 134 (gpio4-6): fe010000.ethernet (GPIO UNCLAIMED) function gmac1 group gmac1m1-tx-bus2
pin 135 (gpio4-7): fe010000.ethernet (GPIO UNCLAIMED) function gmac1 group gmac1m1-rx-bus2
pin 136 (gpio4-8): (MUX UNCLAIMED) (GPIO UNCLAIMED)
pin 137 (gpio4-9): fe010000.ethernet (GPIO UNCLAIMED) function gmac1 group gmac1m1-rx-bus2
pin 138 (gpio4-10): fe5d0000.i2c (GPIO UNCLAIMED) function i2c4 group i2c4m0-xfer
pin 139 (gpio4-11): fe5d0000.i2c (GPIO UNCLAIMED) function i2c4 group i2c4m0-xfer
pin 140 (gpio4-12): (MUX UNCLAIMED) (GPIO UNCLAIMED)
pin 141 (gpio4-13): (MUX UNCLAIMED) (GPIO UNCLAIMED)
pin 142 (gpio4-14): (MUX UNCLAIMED) (GPIO UNCLAIMED)
pin 143 (gpio4-15): fe010000.ethernet (GPIO UNCLAIMED) function gmac1 group gmac1m1-miim
pin 144 (gpio4-16): (MUX UNCLAIMED) (GPIO UNCLAIMED)
pin 145 (gpio4-17): (MUX UNCLAIMED) gpio4:145
pin 146 (gpio4-18): (MUX UNCLAIMED) (GPIO UNCLAIMED)

 发现gpio135时钟引脚被复用做gmac1m1-rx-bus2。

解决办法:使用gpio135复用其他功能时就需要将gmac1m1-rx-bus2  disabled掉。

重新烧录,摄像头加载成功。

[?2004hroot@RK356X:/# dmesg | grep gc
[    0.000000] Linux version 4.19.232 (tamsong@tamsong-pc) (firefly: de4cbd1026ad12db7a811180023b5ab6704f0dc8) (sdk version: rk356x_linux_release_20221015_v1.3.0b.xml) (gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05), GNU ld (Linaro_Binutils-2017.05) 2.27.0.20161019) #7 SMP Wed Dec 7 22:52:55 CST 2022
[    1.489249] gc2053 4-0037: driver version: 00.01.01
[    1.489312] gc2053 4-0037: Failed to get reset-gpios
[    1.489382] gc2053 4-0037: Looking up dovdd-supply from device tree
[    1.489394] gc2053 4-0037: Looking up dovdd-supply property in node /i2c@fe5d0000/gc2053@37 failed
[    1.489428] gc2053 4-0037: 4-0037 supply dovdd not found, using dummy regulator
[    1.489514] gc2053 4-0037: Linked as a consumer to regulator.0
[    1.489532] gc2053 4-0037: Looking up avdd-supply from device tree
[    1.489584] gc2053 4-0037: Linked as a consumer to regulator.12
[    1.489602] gc2053 4-0037: Looking up dvdd-supply from device tree
[    1.489611] gc2053 4-0037: Looking up dvdd-supply property in node /i2c@fe5d0000/gc2053@37 failed
[    1.489633] gc2053 4-0037: 4-0037 supply dvdd not found, using dummy regulator
[    1.489736] gc2053 4-0037: lane_num(2)  pixel_rate(118800000)
[    1.489759] gc2053 4-0037: could not get default pinstate
[    1.489773] gc2053 4-0037: could not get sleep pinstate
[    1.496116] gc2053 4-0037: Detected GC2053 sensor
[    1.496201] rockchip-csi2-dphy csi2-dphy1: dphy1 matches m00_b_gc2053 4-0037:bus type 4
[    1.497236] gc2093 4-007e: driver version: 00.01.04
[    1.497336] gc2093 4-007e: Failed to get reset-gpios
[    1.497396] gc2093 4-007e: Looking up dovdd-supply from device tree
[    1.497409] gc2093 4-007e: Looking up dovdd-supply property in node /i2c@fe5d0000/gc2093b@7e failed
[    1.497444] gc2093 4-007e: 4-007e supply dovdd not found, using dummy regulator
[    1.497525] gc2093 4-007e: Linked as a consumer to regulator.0
[    1.497544] gc2093 4-007e: Looking up avdd-supply from device tree
[    1.497617] gc2093 4-007e: Linked as a consumer to regulator.12
[    1.497674] gc2093 4-007e: Looking up dvdd-supply from device tree
[    1.497685] gc2093 4-007e: Looking up dvdd-supply property in node /i2c@fe5d0000/gc2093b@7e failed
[    1.497713] gc2093 4-007e: 4-007e supply dvdd not found, using dummy regulator
[    1.518888] gc2093 4-007e: Detected GC2093 sensor
[    1.518955] rockchip-csi2-dphy csi2-dphy2: dphy2 matches m01_f_gc2093 4-007e:bus type 4
[    8.802897] gc2093 4-007e: sensor mode: 0
[    8.904273] gc2053 4-0037: gc2053 not support hdr mode

六.拍照测试

内核会为摄像头在目录/sys/class/video4linux下分配设备信息描述文件

[?2004hroot@RK356X:/# grep "" /sys/class/video4linux/v*/name | grep mainpath
/sys/class/video4linux/video0/name:rkisp_mainpath
/sys/class/video4linux/video9/name:rkisp_mainpath

在上层可以用video0和video9分别打开两个摄像头。

使用如下脚本获取预览图像:

#!/bin/bash

export DISPLAY=:0
export XAUTHORITY=/home/firefly/.Xauthority
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/aarch64-linux-gnu/gstreamer-1.0
WIDTH=640
HEIGHT=480
SINK=xvimagesink

gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,format=NV12,width=${WIDTH},height=${HEIGHT}, framerate=30/1 ! videoconvert ! $SINK &
gst-launch-1.0 v4l2src device=/dev/video9 ! video/x-raw,format=NV12,width=${WIDTH},height=${HEIGHT}, framerate=30/1 ! videoconvert ! $SINK &

wait

补充知识:

ROC-RK3568-PC 有 5 组 GPIO bank:GPIO0~GPIO4,每组又以 A0-A7、B0-B7、 C0-C7、 D0-D7 作为编号区分,常用以下公式计算引脚:

GPIO 引脚计算公式:pin = bank * 32 + number
GPIO 小组编号计算公式:number = group * 8 + X
下面演示GPIO4_D5 引脚计算方法:

bank = 4;       // GPIO4_D5 => 4, bank ∈ [0,4]
group = 3;      // GPIO4_D5 => 3, group ∈ {(A=0), (B=1), (C=2), (D=3)}
X = 5;          // GPIO4_D5 => 5, X ∈ [0,7]

number = group * 8 + X = 3 * 8 + 5 = 29
pin = bank * 32 + number = 4 * 32 + 29 = 157;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/128507.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

collect2.exe: error: ld returned 1 exit status分析与解决

这里写自定义目录标题1、问题描述2、分析3、解决办法4、总结5、码字不易&#xff0c;点赞&#xff01;&#xff01;&#xff01;1、问题描述 Windows下进行网络编程&#xff0c;devc&#xff0c;运行.cpp程序时报如下错&#xff1a; [Error] ld returned 1 exit status报错图…

WebCollector

1.WebCollector简介 WebCollector也是一个基于Java的开源网络爬虫框架&#xff0c;其支持多线程、深度采集、URL维护及结构化数据抽取等。WebCollector项目的源码可以在GitHub上进行下载。相比于Crawler4j&#xff0c;WebCollector的可扩展性和适用性更强&#xff0c;如可以实现…

Labelme分割标注的使用(非常好)

博客转自于: Labelme分割标注软件使用 1. Labelme的使用 这里建议大家按照我提供的目录格式事先准备好数据&#xff0c;然后在该根目录下启动labelme&#xff08;注意启动目录位子&#xff0c;因为标注json文件中存储的图片路径都是以该目录作为相对路径的&#xff09; ├─…

Live800:降低客服成本,你必须了解的事

无论是售前咨询还是售后服务&#xff0c;咨询客服都是客户的“必经之路”&#xff0c;因此客服又被称为企业形象的“代言”、品牌美誉的“前台”、企业文化的一面“镜子”。 然而网友关于客服的吐槽&#xff0c;我们不时可以见到&#xff0c;有的客服答非所问&#xff0c;对产品…

一次明白 JDBC,ORM,JPA,SpringDataJPA 之间的关系

java持久层框架访问数据库一般有两种方式&#xff1a; 以SQL为核心&#xff0c;封装JDBC操作&#xff0c;如&#xff1a;MyBatis以java实体类为核心&#xff0c;将实体类和数据库表之间映射的ORM框架&#xff0c;比如&#xff1a;Spring Data JPA和Hibernate 接下来就是详细的…

blender指定地图影像数据作为背景

qgis导出一个层刚好温和 然后 切换到shading 默认只有表面化 bsdf 点击添加 图片纹理 选择图片&#xff0c;然后把那个颜色拦截到基础色就ok了&#xff0c;操作方法和ue类似 image.pnguv editing必须进入编辑模式 方可操作&#xff0c;如果要刚好铺满整个框&#xff0c;要开启那…

Django 学习 Day10

1.聚合查询 聚合查询是指对一个数据表中的一个字段的数据进行部分或全部的统计查询。差Book数据表中的全部书的平均价格、查询所有书的总数等都需要使用聚合查询。 聚合查询分为&#xff1a; &#xff08;1&#xff09;整表聚合 聚合函数的导入&#xff1a; from django.db.…

Qt QFileSystemModel类详解

文章目录一.QFileSystemModel类属性信号函数二.使用说明一.QFileSystemModel类 属性 nameFilterDisables : bool 此属性保存未通过名称筛选器的文件是隐藏还是禁用&#xff0c;默认值为trueoptions : Options 此属性包含影响模型的各种选项&#xff0c;默认情况下&#xff0c…

索引排序内部流程

select 查询字段是不是索引覆盖&#xff0c;覆盖到了就直接内存中排序&#xff0c;输出结果&#xff0c; 如果索引没有覆盖查询字段&#xff0c;计算select的字段释放超过单行所有字段总和限制&#xff0c;超过限制就进行双路排序&#xff0c;否则就使用单路排序 双路排序&…

裂缝波导天线

1. 裂缝波导天线波导裂缝天线属于阵列天线&#xff0c;如图1-1所示&#xff0c;在一根波导上开一系列裂缝可构成线阵天线&#xff0c;三种波导裂缝线阵&#xff08;两种在宽边&#xff0c;一种在窄边&#xff09;通过控制裂缝的偏置或倾角实现所要求的口径幅度分布。图1-1 波导…

钉钉的想象力,向企业服务第一平台进阶

作者 | 曾响铃 文 | 响铃说 时近年末&#xff0c;钉钉7.0版本在杭州重磅发布。 两年一个大版本&#xff0c;这一次钉钉正试图向更高的维度进化&#xff1a; 第一&#xff0c;在完成一家企业的组织数字化和业务数字化后&#xff0c;钉钉开始将重点突破到企业间&#xff0c;突…

如何获取完整、准确的用户需求?

1、成立专业且全面的综合项目组 想要获取完整且准确的用户需求&#xff0c;首先需要成立由技术人员、业务人员、测试人员等组成的项目组&#xff0c;项目组成员最好既懂技术又懂业务。这样的综合项目组有助于全面获取用户需求。 如何获取完整、准确的用户需求&#xff1a;专业全…

模拟前端的开关器件隔离度分析与优化

1、模拟开关的隔离程度 下图为一个模拟开关在 SiPM接收切换中的应用电路。 V1点的波形输入的信号下降沿为500ps&#xff0c;上升沿为10ns&#xff0c;波形如下图所示。 V2点的波形如下图所示&#xff0c;此时IN为低&#xff0c;应该是S1导通&#xff0c;S2断开的&#xff0c;此…

Unity 3D 导入资源包 || Unity 3D 导出资源包

项目中的一些资源具有复用性&#xff0c;只需要将资源导出&#xff0c;就能够重复使用。 导出资源包 执行 Assets → Select Dependencies 菜单命令&#xff0c;选中与导出资源相关的内容。接着执行 Assets→ Export Package 菜单命令。弹出的 Exporting Package 导出资源对话框…

大数据NiFi(一):什么是NiFi

文章目录 什么是NiFi 一、NiFi背景介绍

第5章 函数

&#x1f31e;欢迎来到机器学习的世界 &#x1f308;博客主页&#xff1a;卿云阁 &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f31f;本文由卿云阁原创&#xff01; &#x1f320;本阶段属于练气阶段&#xff0c;希望各位仙友顺利完…

软件测试复习

软件测试定义 什么是软件测试 使用人工或自动手段运行或测定某个系统的过程&#xff0c;其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件测试就是“验证”和“确认”活动构成的整体。 软件测试的作用 验证软件需求和功能是否得到完整实现验证软…

花房集团成功上市,构建互联互通的在线社交娱乐生态

近日&#xff0c;花房集团正式在香港联合交易所主板上市。对于花房集团而言&#xff0c;登陆港股市场是新的征程、新的起点。 可以看到&#xff0c;花房集团在稳固“直播社交”业务基本盘的同时&#xff0c;持续探索元宇宙领域&#xff0c;上市当日首次发布了最新的战略方向“娱…

Apriori算法的python实现

文章目录函数介绍实例Step1:整理数据Step2:挖掘频繁项集Step3:挖掘关联规则Step4:进一步筛选规则作者&#xff1a;李雪茸函数介绍 实现Apriori关联规则挖掘是借助mlxtend第三方包&#xff0c;使用步骤如下&#xff1a; 1、调用apriori算法挖掘频繁项集&#xff0c;apriori()中…

十一、通过程序向闪存文件系统写入信息

1、闪存 (1)每一个esp8266都配有一个闪存&#xff0c;闪存就类似于一个小硬盘。 (2)我们编译上传的程序就存储在闪存中。 (3)闪存的全称是Serial Peripheral Interface Flash File System&#xff08;SPIFFS&#xff09;&#xff0c;串行外设接口Flash文件系统。 (4)闪存除…