RK3588 点亮imx586摄像头

一.硬件原理图

mipi摄像头硬件确认点:

1.供电:5V,2.8V,1.2V,1.8V,reset脚(硬拉3.3,上电的时候从低到高),pwron脚外接

   3.3V。

2,时钟:MCLKOUT是24兆时钟。

3.4组差分mipi线。mipi的data线的波形为方波。

二.驱动移植

RK提供的默认sdk里面已经将支持的所有摄像头驱动都添加到了内核,所以不需要移植该驱动了。

需确认下移植驱动对应的一些信息

源程序
kernel/drivers/media/i2c/imx586.c

kernel/drivers/media/i2c/Makefile

kernel/drivers/media/i2c/Kconfig

kernel/arch/arm64/configs/rockchip_linxu_defconfig

Makefile脚本

obj-$(CONFIG_VIDEO_IMX415) += imx586.oconfig VIDEO_IMX586tristate "Sony IMX586 sensor support"depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_APIdepends on MEDIA_CAMERA_SUPPORThelpThis is a Video4Linux2 sensor driver for the SonyIMX415 camera.To compile this driver as a module, choose M here: themodule will be called imx586.
  • 驱动对应的宏开关
CONFIG_VIDEO_IMX586=y

添加设备树文件:

&i2c5 {status = "okay";pinctrl-names = "default";pinctrl-0 = <&i2c5m0_xfer>;imx586: imx586@1a {compatible = "sony,imx586";reg = <0x10>;  //插摄像头看iic5上出现的新设备后填入clocks = <&cru CLK_MIPI_CAMARAOUT_M1>;clock-names = "xvclk";pinctrl-names = "default";pinctrl-0 = <&mipim0_camera3_clk>;//需要和硬件确认是复用的哪个时钟,确认可以量到波形power-domains = <&power RK3588_PD_VI>;//reset-gpios = <&gpio3 RK_PC7 GPIO_ACTIVE_HIGH>;//现在硬件上是直接拉高,所以不用配//avdd-supply = <&vcc_mipidphy0>;//供电也是直接供电,所以不用配rockchip,camera-module-index = <0>;rockchip,camera-module-facing = "back";rockchip,camera-module-name = "default";rockchip,camera-module-lens-name = "default";port {imx586_out0: endpoint {remote-endpoint = <&mipidphy0_in_ucam0>;data-lanes = <1 2 3 4>;};};};
};&csi2_dphy0 {status = "okay";ports {#address-cells = <1>;#size-cells = <0>;port@0 {reg = <0>;#address-cells = <1>;#size-cells = <0>;mipidphy0_in_ucam0: endpoint@1 {reg = <1>;remote-endpoint = <&imx586_out0>;data-lanes = <1 2 3 4>;};};port@1 {reg = <1>;#address-cells = <1>;#size-cells = <0>;csidphy0_out: endpoint@0 {reg = <0>;remote-endpoint = <&mipi2_csi2_input>;};};};
};&csi2_dphy0_hw {status = "okay";
};&mipi2_csi2 {status = "okay";ports {#address-cells = <1>;#size-cells = <0>;port@0 {reg = <0>;#address-cells = <1>;#size-cells = <0>;mipi2_csi2_input: endpoint@1 {reg = <1>;remote-endpoint = <&csidphy0_out>;};};port@1 {reg = <1>;#address-cells = <1>;#size-cells = <0>;mipi2_csi2_output: endpoint@0 {reg = <0>;remote-endpoint = <&cif_mipi2_in0>;};};};
};&rkcif {status = "okay";
};&rkcif_mipi_lvds2 {status = "okay";port {cif_mipi2_in0: endpoint {remote-endpoint = <&mipi2_csi2_output>;};};
};&rkcif_mipi_lvds2_sditf {status = "okay";port {mipi_lvds2_sditf: endpoint {remote-endpoint = <&isp0_vir0>;};};
};&rkcif_mmu {status = "okay";
};&rkisp_unite {status = "okay";
};&rkisp_unite_mmu {status = "okay";
};&rkisp0_vir0 {status = "okay";/* dual isp process image case* other rkisp hw and virtual nodes should disabled*/rockchip,hw = <&rkisp_unite>;port {#address-cells = <1>;#size-cells = <0>;isp0_vir0: endpoint@0 {reg = <0>;remote-endpoint = <&mipi_lvds2_sditf>;};};
};

三.驱动调试

把驱动代码和设备树文件添加进去后就可以开始调试了。

使用i2ctool工具查看i2c5,发现有2个新的设别:0x10,0x50,猜测其中一个是senser,另一个可能是sensor的马达地址,尝试修改sensor的地址为0x10或者0x50看imx586能不能进probe函数。

当修改imx586的地址为ox10的时候,看imx586已经进了probe函数了。

从log可以看出imx586已经进了probe函数,但是并没有识别到sensor。

这时候,需要确认mipi摄像头上的供电是否正常,时钟是否正常。

经确认是sensor的一路供电没有,供电正常后可以设别到sensor。

到了这一步,可以确认,iic设备已经可以设别到sensor了,并挂载在iic5上面。

四.查看拓扑

rk3588_t:/ # media-ctl -d /dev/media0 -p
Opening media device /dev/media0
Enumerating entities
Found 14 entities
Enumerating pads and links
Media controller API version 0.0.177Media device information
------------------------
driver          rkcif
model           rkcif-mipi-lvds2
serial
bus info
hw revision     0x0
driver version  0.0.177Device topology
- entity 1: stream_cif_mipi_id0 (1 pad, 11 links)type Node subtype V4Ldevice node name /dev/video0pad0: Sink<- "rockchip-mipi-csi2":1 [ENABLED]<- "rockchip-mipi-csi2":2 []<- "rockchip-mipi-csi2":3 []<- "rockchip-mipi-csi2":4 []<- "rockchip-mipi-csi2":5 []<- "rockchip-mipi-csi2":6 []<- "rockchip-mipi-csi2":7 []<- "rockchip-mipi-csi2":8 []<- "rockchip-mipi-csi2":9 []<- "rockchip-mipi-csi2":10 []<- "rockchip-mipi-csi2":11 []- entity 5: stream_cif_mipi_id1 (1 pad, 11 links)type Node subtype V4Ldevice node name /dev/video1pad0: Sink<- "rockchip-mipi-csi2":1 []<- "rockchip-mipi-csi2":2 [ENABLED]<- "rockchip-mipi-csi2":3 []<- "rockchip-mipi-csi2":4 []<- "rockchip-mipi-csi2":5 []<- "rockchip-mipi-csi2":6 []<- "rockchip-mipi-csi2":7 []<- "rockchip-mipi-csi2":8 []<- "rockchip-mipi-csi2":9 []<- "rockchip-mipi-csi2":10 []<- "rockchip-mipi-csi2":11 []- entity 9: stream_cif_mipi_id2 (1 pad, 11 links)type Node subtype V4Ldevice node name /dev/video2pad0: Sink<- "rockchip-mipi-csi2":1 []<- "rockchip-mipi-csi2":2 []<- "rockchip-mipi-csi2":3 [ENABLED]<- "rockchip-mipi-csi2":4 []<- "rockchip-mipi-csi2":5 []<- "rockchip-mipi-csi2":6 []<- "rockchip-mipi-csi2":7 []<- "rockchip-mipi-csi2":8 []<- "rockchip-mipi-csi2":9 []<- "rockchip-mipi-csi2":10 []<- "rockchip-mipi-csi2":11 []- entity 13: stream_cif_mipi_id3 (1 pad, 11 links)type Node subtype V4Ldevice node name /dev/video3pad0: Sink<- "rockchip-mipi-csi2":1 []<- "rockchip-mipi-csi2":2 []<- "rockchip-mipi-csi2":3 []<- "rockchip-mipi-csi2":4 [ENABLED]<- "rockchip-mipi-csi2":5 []<- "rockchip-mipi-csi2":6 []<- "rockchip-mipi-csi2":7 []<- "rockchip-mipi-csi2":8 []<- "rockchip-mipi-csi2":9 []<- "rockchip-mipi-csi2":10 []<- "rockchip-mipi-csi2":11 []- entity 17: rkcif_scale_ch0 (1 pad, 11 links)type Node subtype V4Ldevice node name /dev/video4pad0: Sink<- "rockchip-mipi-csi2":1 []<- "rockchip-mipi-csi2":2 []<- "rockchip-mipi-csi2":3 []<- "rockchip-mipi-csi2":4 []<- "rockchip-mipi-csi2":5 [ENABLED]<- "rockchip-mipi-csi2":6 []<- "rockchip-mipi-csi2":7 []<- "rockchip-mipi-csi2":8 []<- "rockchip-mipi-csi2":9 []<- "rockchip-mipi-csi2":10 []<- "rockchip-mipi-csi2":11 []- entity 21: rkcif_scale_ch1 (1 pad, 11 links)type Node subtype V4Ldevice node name /dev/video5pad0: Sink<- "rockchip-mipi-csi2":1 []<- "rockchip-mipi-csi2":2 []<- "rockchip-mipi-csi2":3 []<- "rockchip-mipi-csi2":4 []<- "rockchip-mipi-csi2":5 []<- "rockchip-mipi-csi2":6 [ENABLED]<- "rockchip-mipi-csi2":7 []<- "rockchip-mipi-csi2":8 []<- "rockchip-mipi-csi2":9 []<- "rockchip-mipi-csi2":10 []<- "rockchip-mipi-csi2":11 []- entity 25: rkcif_scale_ch2 (1 pad, 11 links)type Node subtype V4Ldevice node name /dev/video6pad0: Sink<- "rockchip-mipi-csi2":1 []<- "rockchip-mipi-csi2":2 []<- "rockchip-mipi-csi2":3 []<- "rockchip-mipi-csi2":4 []<- "rockchip-mipi-csi2":5 []<- "rockchip-mipi-csi2":6 []<- "rockchip-mipi-csi2":7 [ENABLED]<- "rockchip-mipi-csi2":8 []<- "rockchip-mipi-csi2":9 []<- "rockchip-mipi-csi2":10 []<- "rockchip-mipi-csi2":11 []- entity 29: rkcif_scale_ch3 (1 pad, 11 links)type Node subtype V4Ldevice node name /dev/video7pad0: Sink<- "rockchip-mipi-csi2":1 []<- "rockchip-mipi-csi2":2 []<- "rockchip-mipi-csi2":3 []<- "rockchip-mipi-csi2":4 []<- "rockchip-mipi-csi2":5 []<- "rockchip-mipi-csi2":6 []<- "rockchip-mipi-csi2":7 []<- "rockchip-mipi-csi2":8 [ENABLED]<- "rockchip-mipi-csi2":9 []<- "rockchip-mipi-csi2":10 []<- "rockchip-mipi-csi2":11 []- entity 33: rkcif_tools_id0 (1 pad, 11 links)type Node subtype V4Ldevice node name /dev/video8pad0: Sink<- "rockchip-mipi-csi2":1 []<- "rockchip-mipi-csi2":2 []<- "rockchip-mipi-csi2":3 []<- "rockchip-mipi-csi2":4 []<- "rockchip-mipi-csi2":5 []<- "rockchip-mipi-csi2":6 []<- "rockchip-mipi-csi2":7 []<- "rockchip-mipi-csi2":8 []<- "rockchip-mipi-csi2":9 [ENABLED]<- "rockchip-mipi-csi2":10 []<- "rockchip-mipi-csi2":11 []- entity 37: rkcif_tools_id1 (1 pad, 11 links)type Node subtype V4Ldevice node name /dev/video9pad0: Sink<- "rockchip-mipi-csi2":1 []<- "rockchip-mipi-csi2":2 []<- "rockchip-mipi-csi2":3 []<- "rockchip-mipi-csi2":4 []<- "rockchip-mipi-csi2":5 []<- "rockchip-mipi-csi2":6 []<- "rockchip-mipi-csi2":7 []<- "rockchip-mipi-csi2":8 []<- "rockchip-mipi-csi2":9 []<- "rockchip-mipi-csi2":10 [ENABLED]<- "rockchip-mipi-csi2":11 []- entity 41: rkcif_tools_id2 (1 pad, 11 links)type Node subtype V4Ldevice node name /dev/video10pad0: Sink<- "rockchip-mipi-csi2":1 []<- "rockchip-mipi-csi2":2 []<- "rockchip-mipi-csi2":3 []<- "rockchip-mipi-csi2":4 []<- "rockchip-mipi-csi2":5 []<- "rockchip-mipi-csi2":6 []<- "rockchip-mipi-csi2":7 []<- "rockchip-mipi-csi2":8 []<- "rockchip-mipi-csi2":9 []<- "rockchip-mipi-csi2":10 []<- "rockchip-mipi-csi2":11 [ENABLED]- entity 45: rockchip-mipi-csi2 (12 pads, 122 links)type V4L2 subdev subtype Unknowndevice node name /dev/v4l-subdev0pad0: Sink[fmt:SRGGB10/4000x3000crop.bounds:(0,0)/4000x3000crop:(0,0)/4000x3000]<- "rockchip-csi2-dphy0":1 [ENABLED]pad1: Source-> "stream_cif_mipi_id0":0 [ENABLED]-> "stream_cif_mipi_id1":0 []-> "stream_cif_mipi_id2":0 []-> "stream_cif_mipi_id3":0 []-> "rkcif_scale_ch0":0 []-> "rkcif_scale_ch1":0 []-> "rkcif_scale_ch2":0 []-> "rkcif_scale_ch3":0 []-> "rkcif_tools_id0":0 []-> "rkcif_tools_id1":0 []-> "rkcif_tools_id2":0 []pad2: Source-> "stream_cif_mipi_id0":0 []-> "stream_cif_mipi_id1":0 [ENABLED]-> "stream_cif_mipi_id2":0 []-> "stream_cif_mipi_id3":0 []-> "rkcif_scale_ch0":0 []-> "rkcif_scale_ch1":0 []-> "rkcif_scale_ch2":0 []-> "rkcif_scale_ch3":0 []-> "rkcif_tools_id0":0 []-> "rkcif_tools_id1":0 []-> "rkcif_tools_id2":0 []pad3: Source-> "stream_cif_mipi_id0":0 []-> "stream_cif_mipi_id1":0 []-> "stream_cif_mipi_id2":0 [ENABLED]-> "stream_cif_mipi_id3":0 []-> "rkcif_scale_ch0":0 []-> "rkcif_scale_ch1":0 []-> "rkcif_scale_ch2":0 []-> "rkcif_scale_ch3":0 []-> "rkcif_tools_id0":0 []-> "rkcif_tools_id1":0 []-> "rkcif_tools_id2":0 []pad4: Source-> "stream_cif_mipi_id0":0 []-> "stream_cif_mipi_id1":0 []-> "stream_cif_mipi_id2":0 []-> "stream_cif_mipi_id3":0 [ENABLED]-> "rkcif_scale_ch0":0 []-> "rkcif_scale_ch1":0 []-> "rkcif_scale_ch2":0 []-> "rkcif_scale_ch3":0 []-> "rkcif_tools_id0":0 []-> "rkcif_tools_id1":0 []-> "rkcif_tools_id2":0 []pad5: Source-> "stream_cif_mipi_id0":0 []-> "stream_cif_mipi_id1":0 []-> "stream_cif_mipi_id2":0 []-> "stream_cif_mipi_id3":0 []-> "rkcif_scale_ch0":0 [ENABLED]-> "rkcif_scale_ch1":0 []-> "rkcif_scale_ch2":0 []-> "rkcif_scale_ch3":0 []-> "rkcif_tools_id0":0 []-> "rkcif_tools_id1":0 []-> "rkcif_tools_id2":0 []pad6: Source-> "stream_cif_mipi_id0":0 []-> "stream_cif_mipi_id1":0 []-> "stream_cif_mipi_id2":0 []-> "stream_cif_mipi_id3":0 []-> "rkcif_scale_ch0":0 []-> "rkcif_scale_ch1":0 [ENABLED]-> "rkcif_scale_ch2":0 []-> "rkcif_scale_ch3":0 []-> "rkcif_tools_id0":0 []-> "rkcif_tools_id1":0 []-> "rkcif_tools_id2":0 []pad7: Source-> "stream_cif_mipi_id0":0 []-> "stream_cif_mipi_id1":0 []-> "stream_cif_mipi_id2":0 []-> "stream_cif_mipi_id3":0 []-> "rkcif_scale_ch0":0 []-> "rkcif_scale_ch1":0 []-> "rkcif_scale_ch2":0 [ENABLED]-> "rkcif_scale_ch3":0 []-> "rkcif_tools_id0":0 []-> "rkcif_tools_id1":0 []-> "rkcif_tools_id2":0 []pad8: Source-> "stream_cif_mipi_id0":0 []-> "stream_cif_mipi_id1":0 []-> "stream_cif_mipi_id2":0 []-> "stream_cif_mipi_id3":0 []-> "rkcif_scale_ch0":0 []-> "rkcif_scale_ch1":0 []-> "rkcif_scale_ch2":0 []-> "rkcif_scale_ch3":0 [ENABLED]-> "rkcif_tools_id0":0 []-> "rkcif_tools_id1":0 []-> "rkcif_tools_id2":0 []pad9: Source-> "stream_cif_mipi_id0":0 []-> "stream_cif_mipi_id1":0 []-> "stream_cif_mipi_id2":0 []-> "stream_cif_mipi_id3":0 []-> "rkcif_scale_ch0":0 []-> "rkcif_scale_ch1":0 []-> "rkcif_scale_ch2":0 []-> "rkcif_scale_ch3":0 []-> "rkcif_tools_id0":0 [ENABLED]-> "rkcif_tools_id1":0 []-> "rkcif_tools_id2":0 []pad10: Source-> "stream_cif_mipi_id0":0 []-> "stream_cif_mipi_id1":0 []-> "stream_cif_mipi_id2":0 []-> "stream_cif_mipi_id3":0 []-> "rkcif_scale_ch0":0 []-> "rkcif_scale_ch1":0 []-> "rkcif_scale_ch2":0 []-> "rkcif_scale_ch3":0 []-> "rkcif_tools_id0":0 []-> "rkcif_tools_id1":0 [ENABLED]-> "rkcif_tools_id2":0 []pad11: Source-> "stream_cif_mipi_id0":0 []-> "stream_cif_mipi_id1":0 []-> "stream_cif_mipi_id2":0 []-> "stream_cif_mipi_id3":0 []-> "rkcif_scale_ch0":0 []-> "rkcif_scale_ch1":0 []-> "rkcif_scale_ch2":0 []-> "rkcif_scale_ch3":0 []-> "rkcif_tools_id0":0 []-> "rkcif_tools_id1":0 []-> "rkcif_tools_id2":0 [ENABLED]- entity 58: rockchip-csi2-dphy0 (2 pads, 2 links)type V4L2 subdev subtype Unknowndevice node name /dev/v4l-subdev1pad0: Sink[fmt:SRGGB10/4000x3000]<- "m00_b_imx586 5-0010":0 [ENABLED]pad1: Source-> "rockchip-mipi-csi2":0 [ENABLED]- entity 63: m00_b_imx586 5-0010 (1 pad, 1 link)type V4L2 subdev subtype Sensordevice node name /dev/v4l-subdev2pad0: Source[fmt:SRGGB10/4000x3000]-> "rockchip-csi2-dphy0":0 [ENABLED]

m00_b_imx586 5-0010 (1 pad, 1 link):表示imx586实在mipi0上,挂载在iic5,。

fmt:SRGGB10/4000x3000 表示格式为GB10,分辨率为4000*3000.

拓扑通路为:

m00_b_imx586 -> rockchip-csi2-dphy0 -> rockchip-mipi-csi2 -> stream_cif_mipi_id0 -> video0

五.抓取图像

命令:

v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat=BG10 \--stream-mmap=3 \--stream-skip=3 \--stream-to=/tmp/cif888.out \--stream-count=1 \--stream-poll
[  370.297011] mipi2-csi2 ERR1:0x10000000 (ecc2)
[  370.297022] mipi2-csi2 ERR1:0x10000000 (ecc2)
[  370.297033] mipi2-csi2 ERR1:0x10000000 (ecc2)
[  370.297043] mipi2-csi2 ERR1:0x10000000 (ecc2)
[  370.297054] mipi2-csi2 ERR1:0x10000000 (ecc2)
[  370.297065] mipi2-csi2 ERR1:0x10000000 (ecc2)
[  370.297075] mipi2-csi2 ERR1:0x10000000 (ecc2)
[  370.297086] mipi2-csi2 ERR1:0x10000000 (ecc2)
[  370.297097] mipi2-csi2 ERR1:0x10000000 (ecc2)
[  370.297108] mipi2-csi2 ERR1:0x10000000 (ecc2)
[  370.297119] mipi2-csi2 ERR1:0x10000000 (ecc2)
[  370.297130] mipi2-csi2 ERR1:0x10000000 (ecc2)
[  370.297141] mipi2-csi2 ERR1:0x10000000 (ecc2)
[  370.297154] mipi2-csi2 ERR1:0x10000000 (ecc2)

发现一直报mipi2-csi2 ERR。

原因:一般报这种错误为物理层解析不到mipi协议。

排查:可能mipi4组差分线出现虚焊假焊,可能mipi插线没有整理好,也可能mipi波形不对。

mipi data波形:为方波

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

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

相关文章

Python正则表达式(re)

正则表达式&#xff0c;又称规则表达式,&#xff08;Regular Expression&#xff0c;在代码中常简写为regex、regexp或RE&#xff09;&#xff0c;是一种文本模式&#xff0c;包括普通字符&#xff08;例如&#xff0c;a 到 z 之间的字母&#xff09;和特殊字符&#xff08;称为…

已知平面内三点,求其平面的法向量

三点平面法向量 设三点坐标为A(x1,y1,z1),B(x2,y2,z2),C(x3,y3,z3) 向量AB(x2-x1,y2-y1,z2-z1),AC(x3-x1,y3-y1,z3-z1) AB、AC所在平面的法向量即ABAC(a,b,c),其中&#xff1a; a(y2-y1)(z3-z1)-(z2-z1)(y3-y1) b(z2-z1)(x3-x1)-(z3-z1)(x2-x1) c(x2-x1)(y3-y1)-(x3-x1)(y2-y1)…

JavaScript-DOM实战案例

一、window定时器 1.window定时器方法 有时我们并不想立即执行一个函数&#xff0c;而是等待特定一段时间之后再执行&#xff0c;我们称之为“计划调用&#xff08;scheduling a call&#xff09;”。 目前有两种方式可以实现&#xff1a; setTimeout 允许我们将函数推迟到一…

xen-gic初始化流程

xen-gic初始化流程 调试平台使用的是gic-600&#xff0c;建议参考下面的文档来阅读代码&#xff0c;搞清楚相关寄存器的功能。 《corelink_gic600_generic_interrupt_controller_technical_reference_manual_100336_0106_00_en》 《IHI0069H_gic_architecture_specification》…

【flink进阶】-- Flink kubernetes operator 版本升级

目录 1、检查当前 flink kubernetes operator 版本 2、停止生产上正在运行的 flink job 3、升级 CRD

linux万字图文学习进程信号

1. 信号概念 信号是进程之间事件异步通知的一种方式&#xff0c;属于软中断。 1.1 linux中我们常用Ctrlc来杀死一个前台进程 1. Ctrl-C 产生的信号只能发给前台进程。一个命令后面加个&可以放到后台运行,这样Shell不必等待进程结束就可以接受新的命令,启动新的进程。2. S…

简单记录一下Splunk ES 升级

1: 背景: 现在有些app 产品对splunk ES (enterprise security) 的版本有要求,这个就要求splunk ES 随着Splunk enterprise 也一起升级,下面先列一下各个版本的兼容: Splunk products version compatibility matrix - Splunk Documentation 下面列出的8.2.11 的版本: 2:…

day38 代码回想录 斐波那契数爬楼梯使用最小花费爬楼梯

大纲 ● 理论基础 ● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯 509. 斐波那契数 题目&#xff1a;509. 斐波那契数 // 斐波那契数列 // 动规 5部曲 // 1 dp[i]代表i处的斐波那契值 // 2 递归公式&#xff1a;dp[0] 0, dp[1]1, dp[i]dp[i-1]dp[i-2] // 3…

9月16日,每日信息差

今天是2023年09月16日&#xff0c;以下是为您准备的15条信息差 第一、天猫超市首单“茅小凌”已由菜鸟送达&#xff0c;首单已由菜鸟供应链完成履约&#xff0c;18分钟送达消费者手中 第二、软银考虑对OpenAI进行投资。此外&#xff0c;软银还初步拟收购英国人工智能芯片制造…

FE_Vue学习笔记 - 数据代理

Vue中的数据代理是一种机制&#xff0c;通过它&#xff0c;Vue实例&#xff08;vm&#xff09;可以代理其数据对象&#xff08;data&#xff09;中的属性操作。这种代理的原理主要是通过Object.defineProperty()方法&#xff0c;将data对象的每个属性都添加到vm对象上&#xff…

uni-app 实现自定义按 A~Z 排序的通讯录(字母索引导航)

创建 convertPinyin.js 文件 convertPinyin.js 将下面的内容复制粘贴到其中 const pinyin (function() {let Pinyin function(ops) {this.initialize(ops);},options {checkPolyphone: false,charcase: "default"};Pinyin.fn Pinyin.prototype {init: functi…

C语言希尔排序

希尔排序&#xff08;Shell Sort&#xff09;是插入排序的一种&#xff0c;也称缩小增量排序&#xff0c;是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。 希尔排序的基本思想是&#xff1a;先将整个待排序的记录序列分割成为若干子序列&#xff08;由…

解决Agora声网音视频在后台没有声音的问题

前言:本文会介绍 Android 与 iOS 两个平台的处理方式 一、Android高版本在应用退到后台时,系统为了省电会限制应用的后台活动,因此我们需要开启一个前台服务,在前台服务中发送常驻任务栏通知,以此来保证App 退到后台时不会被限制活动. 前台服务代码如下: package com.notify…

Limit分页遇到百万级数据该何去何从

一、Limit分页基础 mysql使用查询语句的时候&#xff0c;经常要返回前几条或者中间某几行数据&#xff0c;也就是我们说的分页&#xff0c;语法如下&#xff1a; SELECT * FROM table LIMIT offset,lengthLIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一…

TCP详解之滑动窗口

TCP详解之滑动窗口 引入窗口概念的原因 我们都知道 TCP 是每发送一个数据&#xff0c;都要进行一次确认应答。当上一个数据包收到了应答了&#xff0c; 再发送下一个。 这个模式就有点像我和你面对面聊天&#xff0c;你一句我一句。但这种方式的缺点是效率比较低的。 如果你…

git中无法使用方向键的问题

windows下使用git命令行执行react脚本安装&#xff0c;发现无法使用上下键来去选中选项。最后只能换成cmd命令执行&#xff0c;发现可以上下移动以选中需要的选项。 bash命令行&#xff1a;移动光标无法移动选项 cmd命令行

算法宝典1——Java版本(此系列持续更新,这篇文章有20道)(有题目的跳转链接)(此份宝典包含了链表、栈、队列、二叉树的算法题)

注&#xff1a;由于字数的限制&#xff0c;我打算把算法宝典做成一个系列&#xff0c;一篇文章就20题&#xff01;&#xff01;&#xff01; 目录 一、链表的算法题&#xff08;目前10道&#xff09; 1. 移除链表元素&#xff08;力扣&#xff1b;思路&#xff1a;前后指针&…

Linux-Nginx安装

一、Nginx下载 官网下载地址&#xff1a; https://nginx.org/en/download.html 国内镜像地址&#xff1a; https://mirrors.huaweicloud.com/nginx 二、Nginx安装 1. 将下载的Nginx安装包上传到Linux服务器指定安装盘符下&#xff0c;解压zip包 tar -zxvf nginx-1.23.3.ta…

【PHP】麻醉临床信息系统

麻醉临床信息系统以服务围术期临床业务工作的开展为核心&#xff0c;为医护人员、业务管理人员、院级领导提供流程化、信息化、自动化、智能化的临床业务综合管理平台。 麻醉信息系统处理的数据包含病人的手术信息、麻醉信息、病人手术过程中从监护仪上采集到的数据和病人情况等…

【嵌入式】2024届校招岗位汇总

公司岗位博世嵌入式自动化测试工程师博世嵌入式开发&#xff08;软件刷写及启动&#xff09;工程师博世Linux/C软件工程师博世自动驾驶软件开发工程师博世嵌入式软件工程师(BSP)博世嵌入式电子工程师 &#xff08;BMS&电源&#xff09;博世物联网嵌入式开发工程师 &#xf…