Camera|7.瑞芯微rk3568平台摄像头控制器MIPI-CSI驱动架构梳理

原创 一口Linux 2023-04-11 11:50
点击左上方蓝色“一口Linux”,选择“设为星标


第一时间看干货文章 

【干货】嵌入式驱动工程师学习路线
【干货】一个适合初学者的Linux物联网综合项目
【干货】Linux嵌入式知识点-思维导图-免费获取



 1

瑞芯微 | 摄像头ov13850移植笔记

Camera | 1.Camera基础知识

Camera | 2.MIPI、CSI基础

Camera | 3.瑞芯微平台MIPI摄像头常用调试命令

Camera | 4.瑞芯微平台MIPI摄像头应用程序编写

Camera | 5.Linux v4l2架构(基于rk3568)

Camera | 6.v4l2拓扑架构(基于rk3568)

因为有拍照、录制视频、直播等刚需,现在手机的摄像头基本都是高清,支持高清摄像头的SoC都支持MIPI-CSI。

不同SoC的MIPI-CSI在实现上有一定差别,即使同一厂家设计生产的芯片也都不尽相同。

本文基于瑞芯微rk3568平台evb1公板为例来详细讲解MIPI-CSI/DPHY驱动。

阅读本文之前,建议大家先仔细学习前面几篇文章。

1一、rk3568硬件模块部分

驱动的研究往往要先从硬件着手,下面我首先看下rk3568公板电路。

1)电路图

由电路图可得摄像头与SoC的MIPI-CSI接口,可以是x4lane,也可以是x2lane,data和clk都是差分信号。

如果不了解,建议问下硬件工程师。

控制摄像头接口是I2C接口,并且位于I2C通道4下。

2)rk3568内部MIPI相关模块图

电路图只能查看SoC的MIPI控制器与摄像头的接口关系,下面我们来看下rk3568内部与mipi相关的模块。

吐槽一下瑞芯微的文档,一言难尽,我严重怀疑厂家压根就不想让其他人真正搞懂他们的SDK,这样好收每年的技术支持费用,高通这损招是让丫彻底学明白了。

由于官方给的手册要么有错误,要么就是有些图片错误,就不截图了。

下图是根据官方手册说明,整理的内部模块图。

  1. Sensor输出数据流通过MIPI的lanes传输给rk3568的DPHY控制器
  2. CSI控制器从硬件中提取出图像数据
  3. VICAP从MIPI接口读取数据
  4. 然后将数据传递给给ISP ,ISP 再输出经过一系列图像处理算法后得到图像。
  5. MP用于预览图像
  6. SP用于缩放
  • VICAP Video Capture通过DVP/MIPI接口从摄像头读取数据,并通过AXI总线将数据传输到主存中。

VICAP特性:

支持 BT601 YCbCr 422 8bit  、 RAW 8/10/12bit 输入
支持 BT656 YCbCr 422 8bit  输入
支持 BT1120 YCbCr 422 8bit 输入 , 单/双边 取样
支持 2/4 mixed BT656/BT1120 YCbCr 422 8bit input
支持 YUYV 序列的配置
支持 the polarity of pixel_clk, hsync and vsync configurable
支持接收 CSI2 协议的数据(最多4个IDs)
支持接收 DSI 协议的数据(Video mode/Command mode)
支持窗口裁剪
支持virtual stride when write to DDR
支持输出NV16/NV12格式的YUV数据
支持compact/non-compact output for RAW data
支持MMU
  • ISP(图像信号处理)

ISP是一个完整的视频和静止图像输入设备。这个模块支持集成YCbCr处理图像传感器和简单CMOS传感器 ,提交没有任何综合图像处理Bayer RGB模式图像。

rk3568采用的是ISP21版本。

ISP21 包含了一系列的图像处理算法模块,主要包括:暗电流矫正、坏点矫正、3A、HDR、镜头阴影矫 正、镜头畸变矫正、3DLUT、去噪(包括RAW域去噪,多帧降噪,颜色去噪等)、锐化等。

ISP21包括硬件算法实现及软件逻辑控制部分,RkAiq即为软件逻辑控制部分的实现。

RkAiq不断从ISP HW获取统计数据,并经过3A等算法生成新的参数反馈给各硬件模块。

RkAiq软件模块主要实现的功能为:从ISP驱动获取图像统计,结合IQ Tuning参数,使用一系列算法计 算出新的ISP、Sensor等硬件参数,不断迭代该过程,最终达到最优的图像效果。

3)CSI_RX、VICAP、ISP寄存器基地址

《Rockchip RK3568 TRM Part1 V1.1-20210301.pdf》

2二、 瑞芯微MIPI-CSI设备树分析

在rk3568中主要包含4个设备:

  • isp-subdev:图像处理控制器,如3a处理,并将处理后的所得的参数反馈给sensor。
  • csi-subdev:mipi数据解析控制器。
  • cis2-dphy: mipi数据硬件接收控制器。
  • sensor: 外接的sensor,支持mipi输出。

下面我看下瑞芯微MIPI-CSI是如何用设备树描述的。

1. 内核中相关MIPI设备树说明文档

瑞芯微MIPI-CSI设备树节点属性说明参考内核说明文档:

[kernel\Documentation\devicetree\bindings\media]
video-interfaces.txt             关于sensor节点属性的说明,接口类型,
rockchip-isp1.txt                isp模块属性说明
rockchip-mipi-dphy.txt           dphy模块的说明
kernel\Documentation\devicetree\bindings\media\i2c\ovxxxxxx.txt  ov系列的摄像设备树说明

2. 设备树节点说明

rk3568的MIPI-CSI用到的所有的设备树节点:

a) rockchip,rkisp-vir

rkisp_vir0: rkisp-vir0 {
    compatible = "rockchip,rkisp-vir";
    rockchip,hw = <&rkisp>;
    status = "disabled";
};    

该设备树信息对应的初始化函数

[kernel\drivers\media\platform\rockchip\isp\dev.c]
struct platform_driver rkisp_plat_drv = {
 .driver = {
     .name = DRIVER_NAME,
     .of_match_table = of_match_ptr(rkisp_plat_of_match),
     .pm = &rkisp_plat_pm_ops,
 },
 .probe = rkisp_plat_probe,
 .remove = rkisp_plat_remove,
};

该节点用于初始化isp相关的组件,

驱动程序会创建拓扑图中的 rkisp-isp-subdev、rkisp-csi-subdev、rkisp_mainpath、rkisp_selfpath、rkisp_rawwr0、rkisp_rawwr2、rkisp_rawwr3、rkisp_rawrd0_m、rkisp_rawrd2_s、rkisp-statistics、、rkisp-input-params 组件

isp硬件相关的信息在父节点**rockchip,hw = <&rkisp>;**中描述。

b) rkisp

rkisp: rkisp@fdff0000 {
    compatible = "rockchip,rk3568-rkisp";
    reg = <0x0 0xfdff0000 0x0 0x10000>;
    interrupts = ,
             ,
             ; //中断使用的gpio,触发方式高电平触发
    interrupt-names = "mipi_irq""mi_irq""isp_irq"; //中断名称
    clocks = <&cru ACLK_ISP>, <&cru HCLK_ISP>, <&cru CLK_ISP>; //时钟
    clock-names = "aclk_isp""hclk_isp""clk_isp";   //时钟名称
    resets = <&cru SRST_ISP>, <&cru SRST_H_ISP>;
    reset-names = "isp""isp-h";
    rockchip,grf = <&grf>;   
    power-domains = <&power RK3568_PD_VI>;     //isp vicap电源和时钟
    iommus = <&rkisp_mmu>;                //mmu属性
    rockchip,iq-feature = /bits/ 64 <0x3FBFFFE67FF>;
    status = "disabled";
};    
 rkisp_mmu: iommu@fdff1a00 {
  compatible = "rockchip,iommu-v2";
  reg = <0x0 0xfdff1a00 0x0 0x100>;
  interrupts = ;
  interrupt-names = "isp_mmu";
  clocks = <&cru ACLK_ISP>, <&cru HCLK_ISP>;
  clock-names = "aclk""iface";
  power-domains = <&power RK3568_PD_VI>;
  #iommu-cells = <0>;
  rockchip,disable-mmu-reset;
  status = "disabled";
 };
 pmu: power-management@fdd90000 {
   pd_vi@RK3568_PD_VI {
    reg = ;
    clocks = <&cru HCLK_VI>,
      <&cru PCLK_VI>;
    pm_qos = <&qos_isp>,
      <&qos_vicap0>,
      <&qos_vicap1>;
   };
};

该设备树节点用于描述ISP硬件信息:基地址0xfdff0000 、中断源、时钟、reset引脚、iommus等。

驱动提取对应的硬件信息,填充到struct rkisp_hw_dev结构体变量中。

对应驱动入口:

[kernel\drivers\media\platform\rockchip\isp\hw.c]
static struct platform_driver rkisp_hw_drv = {
 .driver = {
  .name = "rkisp_hw",
  .of_match_table = of_match_ptr(rkisp_hw_of_match),
  .pm = &rkisp_hw_pm_ops,
 },
 .probe = rkisp_hw_probe,
 .remove = rkisp_hw_remove,
 .shutdown = rkisp_hw_shutdown,
};

c)  CSI2协议相关设备树

  • csi2_dphy0 拓扑结构相关信息
  • csi2_dphy_hw csi2驱动相关硬件信息

以下是描述csi2_dphy0拓扑信息,实际摄像头信息需要用户自己填写:

[rk3568-evb1-ddr4-v10.dtsi]
&csi2_dphy0 {
    status = "okay";

    ports {
        #address-cells = <1>;
        #size-cells = <0>;
        port@0 {
            reg = <0>;
            #address-cells = <1>;
            #size-cells = <0>;

            mipi_in_ucam0: endpoint@1 {
                reg = <1>;
                remote-endpoint = <&0v13850_out>;
                data-lanes = <1 2 3 4>;
            };
        };
        port@1 {
            reg = <1>;
            #address-cells = <1>;
            #size-cells = <0>;

            csidphy_out: endpoint@0 {
                reg = <0>;
                remote-endpoint = <&isp0_in>;
            };
        };
    };
};

该节点描述内容:

- 父节点csi2_dphy0 
- port@n          : 表示pad号为n
- mipi_in_ucam0   : Sink Pad(in表示进入该entity,上游连接的设备由remote-endpoint给出,即摄像头0v13850_out)
- data-lanes      : mipi通道数量:4
- csidphy_out     : Source Pad,下游连接的设备由remote-endpoint给出,即isp0_in

以下是csi2_dphy控制器相关硬件信息,位于瑞芯微3568平台设备树文件rk3568.dtsi中

[rk3568.dtsi]
aliases {
 csi2dphy0 = &csi2_dphy0;
    ……
}
csi2_dphy0: csi2-dphy0 {
    compatible = "rockchip,rk3568-csi2-dphy";
    rockchip,hw = <&csi2_dphy_hw>;
    status = "disabled";
};

csi2_dphy_hw: csi2-dphy-hw@fe870000 {
    compatible = "rockchip,rk3568-csi2-dphy-hw";
    reg = <0x0 0xfe870000 0x0 0x1000>;
    clocks = <&cru PCLK_MIPICSIPHY>;
    clock-names = "pclk";
    rockchip,grf = <&grf>;
    status = "disabled";
};

csi2dphy0 对应的驱动入口为:

[kernel\drivers\phy\rockchip\phy-rockchip-csi2-dphy-hw.c]
static struct platform_driver rockchip_csi2_dphy_hw_driver = {
 .probe = rockchip_csi2_dphy_hw_probe,
 .remove = rockchip_csi2_dphy_hw_remove,
 .driver = {
  .name = "rockchip-csi2-dphy-hw",
  .of_match_table = rockchip_csi2_dphy_hw_match_id,
 },
};

在函数rockchip_csi2_dphy_hw_probe()中还会注册结构体变量 rockchip_csi2_dphy_driver

630    platform_driver_register(&rockchip_csi2_dphy_driver);

rockchip_csi2_dphy_driver定义如下:


[kernel\drivers\phy\rockchip\phy-rockchip-csi2-dphy-hw.c]
struct platform_driver rockchip_csi2_dphy_driver = {
 .probe = rockchip_csi2_dphy_probe,
 .remove = rockchip_csi2_dphy_remove,
 .driver = {
  .name = "rockchip-csi2-dphy",
  .pm = &rockchip_csi2_dphy_pm_ops,
  .of_match_table = rockchip_csi2_dphy_match_id,
 },
};

分析驱动就要从这些入口函数probe开始分析。

3三、驱动初始化 

1.  驱动文件目录

kernel
   ├── arch/arm64/boot/dts/rockchip DTS 配置文件
   ├── drivers/phy/rockchip/
       ├── phy-rockchip-csi2-dphy.c
    └── phy-rockchip-csi2-dphy-hw.c mipi dphy 驱动     
   ├── drivers/media|
    ├── platform/rockchip/isp rkisp isp 驱动
       │                   ├── capture_v21.c 包含 mp/sp 的配置及 vb2,帧中断处理  
       │                   ├── dev.c 包含 probe、异步注册、 clock、 pipeline、iommu 及 
                                      media/v4l2 framework
       │                   ├── isp_params_v21.c 3A 相关参数设置
       │                   ├── isp_stats_v21.c 3A 相关统计
       │                   ├── regs.c 寄存器相关的读写操作
       │                   └──  rkisp.c 对应 isp_sd entity 节点,
       │                       包含从 mipi 接收数据,并有 crop 功能
       ├── v4l2-core  v4l2核心代码
       └── i2c/
            └── ov13850.c CIS(cmos image sensor)驱动

注:3568的isp版本是v21,只需要看v21结尾的文件

1. 字符设备号申请:videodev_init()

该函数主要用于申请设备号:

主设备号 :81 设备名     :video4linux 申请class:video4linux

#define VIDEO_MAJOR 81
#define VIDEO_NUM_DEVICES 256
#define VIDEO_NAME              "video4linux"

static struct class video_class = {
 .name = VIDEO_NAME,
 .dev_groups = video_device_groups,
};
static int __init videodev_init(void)
{
 dev_t dev = MKDEV(VIDEO_MAJOR, 0);
 ret = register_chrdev_region(dev, VIDEO_NUM_DEVICES, VIDEO_NAME);
 ret = class_register(&video_class);
}
static void __exit videodev_exit(void)
{
 dev_t dev = MKDEV(VIDEO_MAJOR, 0);

 class_unregister(&video_class);
 unregister_chrdev_region(dev, VIDEO_NUM_DEVICES);
}

注意 为简化起见,所有代码只把最重要的部分列举出来,后同。

2. isp架构初始化:rkisp_plat_probe()

该函数是最重要的一个初始化函数,除了rkisp_csi2_dphy(entity67)外,其他的功能部件都在该函数中初始化。

注册rkisp-vir0父设备、isp-dubdev子设备、csi2-dev子设备等,由于rk3568支持多路sensor输入,即isp支持多路处理,因此会虚拟多通道isp-virx。

该函数主要工作:

  1. 给isp_dev申请内存并初始化,该结构体用于camera控制器所有的信息
  2. 注册v4l2_device结构体
  3. 初始化media相关资源
  4. 函数rkisp_register_platform_subdevs(),用于注册拓扑结构中的各个模块,对应的entity详见图
  5. entity1、7注册为sub_device 初始化struct v4l2_subdev_ops、初始化media子模块需要相关信息 entity1还会设置默认的图像格式
  6. entity13、19、25、31、37、43、49、55、61注册为video_device 填充struct v4l2_file_operations(struct video_device->fops)、struct v4l2_ioctl_ops(struct video_device->ioctl_ops),struct vb2_ops(struct video_device->vb2_queue->ops)

![ ](https://img-blog.csdnimg.cn/796972bedb2046e89d3e3772fec31a9b.png

其中对于研发人员最重要的就是这些回调函数,应用层下发的各个命令最终都会通过架构调用到这些函数。

下面把重要的几个模块所注册的回调函数做了个总结:

这些回调函数在架构中关系参考下图:其中entity67相关资源是在函数rockchip_csi2_dphy_probe()中注册。

3. isp驱动初始化:rkisp_hw_probe()

该函数主要初始化isp驱动

static const struct of_device_id rkisp_hw_of_match[] = {
 ……
 {
  .compatible = "rockchip,rk3568-rkisp",
  .data = &rk3568_isp_match_data,
 },
 {},
};

640 static int rkisp_hw_probe(struct platform_device *pdev)
641 
{    
646  struct rkisp_hw_dev *hw_dev;                                                                                                                                                                                                                                                                                                                                                          
  ……
  /*匹配设备树compatible属性*/
651     match = of_match_node(rkisp_hw_of_match, node);
654  /*为hw_dev 分配内存*/
655     hw_dev = devm_kzalloc(dev, sizeof(*hw_dev), GFP_KERNEL);
659     dev_set_drvdata(dev, hw_dev);//dev->driver_data
660     hw_dev->dev = dev;
661     hw_dev->is_thunderboot = IS_ENABLED(CONFIG_VIDEO_ROCKCHIP_THUNDER_BOOT_ISP);
662     dev_info(dev, "is_thunderboot: %d\n", hw_dev->is_thunderboot);
663     hw_dev->max_in.w = 0;
664     hw_dev->max_in.h = 0;
665     hw_dev->max_in.fps = 0;
  //获得grf句柄*/
669     hw_dev->grf = syscon_regmap_lookup_by_phandle(node, "rockchip,grf");
672     /*获取控制器物理地址
673     res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
  /*将物理地址映射为基地址*/

679     hw_dev->base_addr = devm_ioremap_resource(dev, res);

694     match_data = match->data;
695     hw_dev->mipi_irq = -1;
696 
697     hw_dev->pdev = pdev;
698     hw_dev->match_data = match_data;
699     if (!hw_dev->is_thunderboot)
700         rkisp_register_irq(hw_dev);  //注册中断
701  /*从设备树中提取时钟*/
702     for (i = 0; i < match_data->num_clks; i++) {
703         struct clk *clk = devm_clk_get(devmatch_data->clks[i]);
704 
707         hw_dev->clks[i] = clk;
708     }
709     hw_dev->num_clks = match_data->num_clks;
710     hw_dev->clk_rate_tbl = match_data->clk_rate_tbl;
711     hw_dev->num_clk_rate_tbl = match_data->num_clk_rate_tbl;
712  /*提取reset属性*/
713     hw_dev->reset = devm_reset_control_array_get(dev, falsefalse);
718 
719     ret = of_property_read_u64(node, "rockchip,iq-feature", &hw_dev->iq_feature);
720     if (!ret)
721         hw_dev->is_feature_on = true;
722     else
723         hw_dev->is_feature_on = false;
724  /*初始化其他的一些变量*/
725     hw_dev->dev_num = 0;
  …………
743     hw_dev->is_shutdown = false;
744     hw_dev->is_mmu = is_iommu_enable(dev);
745     ret = of_reserved_mem_device_init(dev);
 …………
770 }

4.  mipi接口dphy驱动初始化:rockchip_csi2_dphy_probe()、rockchip_csi2_dphy_hw_probe()


文中各种mipi技术文档,后台回复关键字:mipi

后面还会继续更新几篇Camera文章,

建议大家订阅本专题!

也可以后台留言,加一口君好友yikoupeng,

拉你进高质量技术交流群。

end


一口Linux 


关注,回复【1024】海量Linux资料赠送

精彩文章合集


文章推荐

【专辑】ARM
【专辑】粉丝问答
专辑linux入门
专辑计算机网络
专辑Linux驱动
【干货】嵌入式驱动工程师学习路线
【干货】Linux嵌入式所有知识点-思维导图


一口Linux 写点代码,写点人生!
评论
  • 一、SAE J1939协议概述SAE J1939协议是由美国汽车工程师协会(SAE,Society of Automotive Engineers)定义的一种用于重型车辆和工业设备中的通信协议,主要应用于车辆和设备之间的实时数据交换。J1939基于CAN(Controller Area Network)总线技术,使用29bit的扩展标识符和扩展数据帧,CAN通信速率为250Kbps,用于车载电子控制单元(ECU)之间的通信和控制。小北同学在之前也对J1939协议做过扫盲科普【科普系列】SAE J
    北汇信息 2024-12-11 15:45 113浏览
  • 全球智能电视时代来临这年头若是消费者想随意地从各个通路中选购电视时,不难发现目前市场上的产品都已是具有智能联网功能的智能电视了,可以宣告智能电视的普及时代已到临!Google从2021年开始大力推广Google TV(即原Android TV的升级版),其他各大品牌商也都跟进推出搭载Google TV操作系统的机种,除了Google TV外,LG、Samsung、Panasonic等大厂牌也开发出自家的智能电视平台,可以看出各家业者都一致地看好这块大饼。智能电视的Wi-Fi连线怎么消失了?智能电
    百佳泰测试实验室 2024-12-12 17:33 56浏览
  • 天问Block和Mixly是两个不同的编程工具,分别在单片机开发和教育编程领域有各自的应用。以下是对它们的详细比较: 基本定义 天问Block:天问Block是一个基于区块链技术的数字身份验证和数据交换平台。它的目标是为用户提供一个安全、去中心化、可信任的数字身份验证和数据交换解决方案。 Mixly:Mixly是一款由北京师范大学教育学部创客教育实验室开发的图形化编程软件,旨在为初学者提供一个易于学习和使用的Arduino编程环境。 主要功能 天问Block:支持STC全系列8位单片机,32位
    丙丁先生 2024-12-11 13:15 66浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-12 10:13 40浏览
  • RK3506 是瑞芯微推出的MPU产品,芯片制程为22nm,定位于轻量级、低成本解决方案。该MPU具有低功耗、外设接口丰富、实时性高的特点,适合用多种工商业场景。本文将基于RK3506的设计特点,为大家分析其应用场景。RK3506核心板主要分为三个型号,各型号间的区别如下图:​图 1  RK3506核心板处理器型号场景1:显示HMIRK3506核心板显示接口支持RGB、MIPI、QSPI输出,且支持2D图形加速,轻松运行QT、LVGL等GUI,最快3S内开
    万象奥科 2024-12-11 15:42 88浏览
  • 时源芯微——RE超标整机定位与解决详细流程一、 初步测量与问题确认使用专业的电磁辐射测量设备,对整机的辐射发射进行精确测量。确认是否存在RE超标问题,并记录超标频段和幅度。二、电缆检查与处理若存在信号电缆:步骤一:拔掉所有信号电缆,仅保留电源线,再次测量整机的辐射发射。若测量合格:判定问题出在信号电缆上,可能是电缆的共模电流导致。逐一连接信号电缆,每次连接后测量,定位具体哪根电缆或接口导致超标。对问题电缆进行处理,如加共模扼流圈、滤波器,或优化电缆布局和屏蔽。重新连接所有电缆,再次测量
    时源芯微 2024-12-11 17:11 109浏览
  • 铁氧体芯片是一种基于铁氧体磁性材料制成的芯片,在通信、传感器、储能等领域有着广泛的应用。铁氧体磁性材料能够通过外加磁场调控其导电性质和反射性质,因此在信号处理和传感器技术方面有着独特的优势。以下是对半导体划片机在铁氧体划切领域应用的详细阐述: 一、半导体划片机的工作原理与特点半导体划片机是一种使用刀片或通过激光等方式高精度切割被加工物的装置,是半导体后道封测中晶圆切割和WLP切割环节的关键设备。它结合了水气电、空气静压高速主轴、精密机械传动、传感器及自动化控制等先进技术,具有高精度、高
    博捷芯划片机 2024-12-12 09:16 85浏览
  • 本文介绍瑞芯微RK3588主板/开发板Android12系统下,APK签名文件生成方法。触觉智能EVB3588开发板演示,搭载了瑞芯微RK3588芯片,该开发板是核心板加底板设计,音视频接口、通信接口等各类接口一应俱全,可帮助企业提高产品开发效率,缩短上市时间,降低成本和设计风险。工具准备下载Keytool-ImportKeyPair工具在源码:build/target/product/security/系统初始签名文件目录中,将以下三个文件拷贝出来:platform.pem;platform.
    Industio_触觉智能 2024-12-12 10:27 68浏览
  • 应用环境与极具挑战性的测试需求在服务器制造领域里,系统整合测试(System Integration Test;SIT)是确保产品质量和性能的关键步骤。随着服务器系统的复杂性不断提升,包括:多种硬件组件、操作系统、虚拟化平台以及各种应用程序和服务的整合,服务器制造商面临着更有挑战性的测试需求。这些挑战主要体现在以下五个方面:1. 硬件和软件的高度整合:现代服务器通常包括多个处理器、内存模块、储存设备和网络接口。这些硬件组件必须与操作系统及应用软件无缝整合。SIT测试可以帮助制造商确保这些不同组件
    百佳泰测试实验室 2024-12-12 17:45 63浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-11 17:58 86浏览
  • 首先在gitee上打个广告:ad5d2f3b647444a88b6f7f9555fd681f.mp4 · 丙丁先生/香河英茂工作室中国 - Gitee.com丙丁先生 (mr-bingding) - Gitee.com2024年对我来说是充满挑战和机遇的一年。在这一年里,我不仅进行了多个开发板的测评,还尝试了多种不同的项目和技术。今天,我想分享一下这一年的故事,希望能给大家带来一些启发和乐趣。 年初的时候,我开始对各种开发板进行测评。从STM32WBA55CG到瑞萨、平头哥和平海的开发板,我都
    丙丁先生 2024-12-11 20:14 73浏览
  • 在智能化技术快速发展当下,图像数据的采集与处理逐渐成为自动驾驶、工业等领域的一项关键技术。高质量的图像数据采集与算法集成测试都是确保系统性能和可靠性的关键。随着技术的不断进步,对于图像数据的采集、处理和分析的需求日益增长,这不仅要求我们拥有高性能的相机硬件,还要求我们能够高效地集成和测试各种算法。我们探索了一种多源相机数据采集与算法集成测试方案,能够满足不同应用场景下对图像采集和算法测试的多样化需求,确保数据的准确性和算法的有效性。一、相机组成相机一般由镜头(Lens),图像传感器(Image
    康谋 2024-12-12 09:45 75浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦