一口Linux

文章数:1382 被阅读:1966155

账号入驻

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

最新更新时间:2022-11-08
    阅读数:
点击左上方蓝色“一口Linux”,选择“设为星标


第一时间看干货文章

【干货】 一个适合初学者的Linux物联网综合项目



1

关于瑞芯微的文章,之前写了3篇,链接如下:

1.瑞芯微rk356x板子快速上手

《2.Linux驱动|瑞芯微rtc-hym8563移植笔记》

《3.Linux驱动 | Linux内核 RTC时间架构-基于瑞芯微》

后面会持续更新瑞芯微相关文章,有兴趣的老铁加关注。

0、环境

soc  : rk3568   
board: EVB1-DDR4-V10
软  件:Android 11
Linux:4.19.232

一、ov13850简介

1. 产品参数

  • 品牌:Omnivision
  • 型号:CMK-OV13850
  • 接口:MIPI
  • 像素:1320W OV13850彩色图像传感器是一款低电压、高性能1/3.06英寸1320万像素CMOS图像传感器,使用OmniBSI+?技术提供了单-1320万像素(4224×3136)摄像头的功能。通过串行摄像头控制总线(SCCB)接口的控制,它提供了全帧、下采样、开窗的10位MIPI图像。

OV13850拥有一个能够在10位1320万像素分辨率下以每秒24帧(fps)的速度运行的图像阵列,用户可以完全控制图像质量、格式和输出数据传输。所有需要的图像处理功能,包括曝光控制、白平衡、缺陷像素消除等,都可以通过SCCB接口进行编程。

此外,OmniBSI图像传感器使用专有的传感器技术,通过减少或消除固定图案噪声、污迹等常见的图像污染光源来提高图像质量,从而产生干净、完全稳定的彩色图像。

为了提供定制信息,OV13850包括一个单编程(OPT)存储器。OV13850拥有最多4车道的MIPI接口。

OV13850适用于低功耗相机模块。

以下是测试用的摄像头&扩展板:

2. 特性

●镜头尺寸:1/3.06英寸 ●像素大小:1.12毫米×1.12毫米 ●31.2°CRA为6mm z高度 ●可编程控制帧速率,镜像和翻转,裁剪和窗口 ●1320万像素AT30fps ●双线串行总线控制(SCCB) ●闪光灯输出控制闪光 ●支持输出格式:10位RAW RGB ●支持图像大小:13.2MP(4224×3136)、10MP(4224×2376)、4K2K(3840×2160)、EIS 1080P(2112×1188)、EIS 720P(1408×792)、more3 ●支持2×2 Binning ●可达4车道MIPI串行输出接口 ●标准系列SCCB接口 ●8k bit的嵌入式一次性可编程(OTP)存储器(见侧注) ●两个片上锁相环(PLLs) ●可编程控制:增益、曝光、帧率、图像大水、水平反射镜、垂直翻转裁剪和平移 ●内置温度传感器 ●图像质量控制:缺陷校正,自动黑电平校准,镜头阴影校正,和高度计行HDR。●保证传感器结温:-300C到+850C ●电源核心:1.14V-1.26V;模拟:2.6-3.0V输入/输出:1.7-3.0V ●封装:PLCC40

3. ov13850引脚图

4. ov13850功能模块

定时脉冲发生器输出时钟来访问成像阵列的行,预先填充电荷并且按顺序对数组的行进行采样。

在预先填充电荷和采样的时间间隔内,每个像素点的电荷曝光时减少入射光。

这是在滚动快门的体系结构的曝光时间。

曝光时间通过调整预先填充电荷和采样之间的时间间隔控制。

在每一行的像素数据采样后,通过模拟电路(AMP)进一步处理:纠正偏移量和将数据乘以相应的增益。

模拟处理后通过10位ADC的输出数组中的每个像素的数据。

ISP(image sensor processor)通过图像输出接口单元,经过mipi接口(MCP/MDP)将图像数据发送出去。

5. 像素数组

OV13850传感器的图像数组4256列3152行(13414912像素)

颜色过滤器是安排在Bayer模式

Binning mode 2x2 binning

Binning mode 通常用于低分辨率

6. mirror 和 flip

OV13850提供图像mirror(左右翻转) 和 flip(上下翻转)模式

二、驱动移植

瑞芯微支持的摄像头,有个support list,

此次从该list中选择了ov13850

1. 驱动源文件及对应脚本

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

但是还是要确认下移植驱动对应的一些信息

  • 源程序
rk_android11.0_sdk_220718\kernel\drivers\media\i2c\ov13850.c 
rk_android11.0_sdk_220718\kernel\include\config\video\ov13850.h 
  • kernel/drivers/media/i2c/Makefile
115 obj-$(CONFIG_VIDEO_OV13850) += ov13850.o
  • kernel/drivers/media/i2c/Kconfig
1282 config VIDEO_OV13850                                                       
1283     tristate "OmniVision OV13850 sensor support"
1284     depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
1285     depends on MEDIA_CAMERA_SUPPORT
1286     select V4L2_FWNODE
1287     ---help---
1288       This is a Video4Linux2 sensor driver for the OmniVision
1289       OV13850 camera.
  • 驱动对应的宏开关

kernel/arch/arm64/configs/rockchip_defconfig

581 CONFIG_VIDEO_OV13850=y

2. 设备树

1)典型ov系列摄像头链接示意图

ov系列摄像头与SOC连接的主要的引脚有:i2c、rst、pwdn、mclk、MIPI Clk、MIPI DATA

这几根线是驱动工程师必须捋清楚的

2)电路图

本次我们直接将摄像头插在公版的视频接口,用的是通道0,使用了4个lane【不知道具体硬件信息就问硬件工程师】

由电路图可知,几个关键引脚关系:

  • reset信号:GPIO3 B6
  • power down信号:GPIO4 B4
  • I2C通道:4
  • clock:cif

3)设备树节点

参考sdk中其他平台的ov13850节点来填写

kernel/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi
   ov13850: ov13850@10 {
       status = "okay";
       compatible = "ovti,ov13850";
       reg = <0x10>;
       clocks = <&cru CLK_CIF_OUT>;
       clock-names = "xvclk";
       power-domains = <&power RK3568_PD_VI>;
       pinctrl-names = "default";
       pinctrl-0 = <&cif_clk>;
       reset-gpios = <&gpio3 RK_PB6 GPIO_ACTIVE_HIGH>;
       pwdn-gpios = <&gpio4 RK_PB4 GPIO_ACTIVE_HIGH>;
       rockchip,camera-module-index = <0>;
       rockchip,camera-module-facing = "back";             
       rockchip,camera-module-name = "ZC-OV13850R2A-V1";
       rockchip,camera-module-lens-name = "Largan-50064B31";
       port {
           ov13850_out: endpoint {
               remote-endpoint = <&mipi_in_ucam0>;
               data-lanes = <1 2 3 4>;
           };
       };
   };

114 &csi2_dphy0 {
115     status = "okay";
116 
117     ports {
118         #address-cells = <1>;
119         #size-cells = <0>;
120         port@0 {
121             reg = <0>;
122             #address-cells = <1>;                                                                                       
123             #size-cells = <0>;
124             
125             mipi_in_ucam0: endpoint@1 {
126                 reg = <1>;
127                 remote-endpoint = <&ov13850_out>;
128                 data-lanes = <1 2 3 4>;
129             };
……
152 };

设备树的信息最终转换成i2c_client,并传递给ov13850驱动ov13850_probe() compatible = "ovti,ov13850"; 与驱动的 of_match_table 保持一致

@rk_android11.0_sdk\kernel\drivers\media\i2c\ov13850.c
#if IS_ENABLED(CONFIG_OF)
static const struct of_device_id ov13850_of_match[] = {
 { .compatible = "ovti,ov13850" },
 {},
};
MODULE_DEVICE_TABLE(of, ov13850_of_match);
#endif

static const struct i2c_device_id ov13850_match_id[] = {
 { "ovti,ov13850"0 },
 { },
};

static struct i2c_driver ov13850_i2c_driver = {
 .driver = {
  .name = OV13850_NAME,
  .pm = &ov13850_pm_ops,
  .of_match_table = of_match_ptr(ov13850_of_match),
 },
 .probe  = &ov13850_probe,
 .remove  = &ov13850_remove,
 .id_table = ov13850_match_id,
};

关于摄像头驱动,

彭老师后面会继续更一篇文章讲解。

3. 安卓配置文件

在以下两个文件增加对应摄像头信息,

hardware/rockchip/camera/etc/camera/camera3_profiles_rk356x.xml
hardware/rockchip/camera/etc/camera/camera3_profiles.xml

一口君直接参考的其他文件,

然后找一个相近型号的摄像头修改的

三、查看摄像头相关信息

1. 开机log

移植成功后,确认下对应的驱动log

10-26 17:58:54.659     0     0 I ov13850 4-0010: driver version: 00.01.05
10-26 17:58:54.659     0     0 W ov13850 4-0010: Failed to get power-gpios, maybe no use
10-26 17:58:54.659     0     0 W ov13850 4-0010: 4-0010 supply avdd not found, using dummy regulator
10-26 17:58:54.659     0     0 I ov13850 4-0010: Linked as a consumer to regulator.0
10-26 17:58:54.659     0     0 W ov13850 4-0010: 4-0010 supply dovdd not found, using dummy regulator
10-26 17:58:54.659     0     0 W ov13850 4-0010: 4-0010 supply dvdd not found, using dummy regulator
10-26 17:58:54.660     0     0 E ov13850 4-0010: could not get default pinstate
10-26 17:58:54.660     0     0 E ov13850 4-0010: could not get sleep pinstate
10-26 17:58:54.665     0     0 I ov13850 4-0010: Detected OV00d850 sensor, REVISION 0xb2
10-26 17:58:54.665     0     0 I rockchip-csi2-dphy csi2-dphy0: dphy0 matches m00_b_ov13850 4-0010:bus type 4

2. 查看ov13850设备

驱动加载成功后,会有以下信息

  • 查看摄像头设备节点:
rk3568_r:/ # ls /dev/video* -l
ls /dev/video* -l
crw-rw---- 1 media camera 81,   0 2022-10-31 06:56 /dev/video0
crw-rw---- 1 media camera 81,   1 2022-10-31 06:56 /dev/video1
crw-rw---- 1 media camera 81,   2 2022-10-31 06:56 /dev/video2
crw-rw---- 1 media camera 81,   3 2022-10-31 06:56 /dev/video3
crw-rw---- 1 media camera 81,   4 2022-10-31 06:56 /dev/video4
crw-rw---- 1 media camera 81,   5 2022-10-31 06:56 /dev/video5
crw-rw---- 1 media camera 81,   6 2022-10-31 06:56 /dev/video6
crw-rw---- 1 media camera 81,   7 2022-10-31 06:56 /dev/video7
crw-rw---- 1 media camera 81,   8 2022-10-31 06:56 /dev/video8

3. 查看sys文件系统中文件信息

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

rk3568_r:/ # grep ov13850 /sys/class/video4linux/v*/name
grep ov13850 /sys/class/video4linux/v*/name
/sys/class/video4linux/v4l-subdev3/name:m00_b_ov13850 4-0010
rk3568_r:/ # grep "" /sys/class/video4linux/v*/name | grep mainpath
grep "" /sys/class/video4linux/v*/name | grep mainpath
/sys/class/video4linux/video0/name:rkisp_mainpath

4. 查看拓扑 media-ctl -d /dev/media0 -p

rk3568_r:/ # media-ctl -d /dev/media0 -p                  
media-ctl -d /dev/media0 -p                               
Opening media device /dev/media0                          
Enumerating entities                                      
Found 13 entities                                         
Enumerating pads and links                                
Media controller API version 0.0.255                      
                                                          
Media device information                                  
------------------------                                  
driver          rkisp-vir0                                
model           rkisp0                                    
serial                                                    
bus info                                                  
hw revision     0x0                                       
driver version  0.0.255                                   
                                                          
Device topology                                           
- entity 1: rkisp-isp-subdev (4 pads, 7 links)            
            type V4L2 subdev subtype Unknown              
            device node name /dev/v4l-subdev0             
        pad0: Sink                                        
                [fmt:SBGGR10/4224x3136                    
                 crop.bounds:(0,0)/4096x3072              
                 crop:(0,0)/4096x3072]                    
                <- "rkisp-csi-subdev":1 []                
                <- "rkisp_rawrd0_m":0 []                  
                <- "rkisp_rawrd2_s":0 []                  
        pad1: Sink                                        
                <- "rkisp-input-params":0 []              
        pad2: Source                                      
                [fmt:YUYV2X8/4096x3072                    
                 crop.bounds:(0,0)/4096x3072              
                 crop:(0,0)/4096x3072]                    
                -> "rkisp_mainpath":0 []                  
                -> "rkisp_selfpath":0 []                  
        pad3: Source                                      
                -> "rkisp-statistics":0 []                
                                                          
- entity 6: rkisp-csi-subdev (6 pads, 5 links)            
            type V4L2 subdev subtype Unknown              
            device node name /dev/v4l-subdev1             
        pad0: Sink                                        
                <- "rockchip-csi2-dphy0":1 []             
        pad1: Source                                      
                -> "rkisp-isp-subdev":0 []                
        pad2: Source                                      
                -> "rkisp_rawwr0":0 []                    
        pad3: Source                                      
        pad4: Source                                      
                -> "rkisp_rawwr2":0 []                    
        pad5: Source                                      
                -> "rkisp_rawwr3":0 []                    
                                                          
- entity 13: rkisp_mainpath (1 pad, 1 link)               
             type Node subtype V4L                        
             device node name /dev/video0                 
        pad0: Sink                                        
                <- "rkisp-isp-subdev":2 []                
                                                          
- entity 19: rkisp_selfpath (1 pad, 1 link)               
             type Node subtype V4L                        
             device node name /dev/video1                 
        pad0: Sink                                        
                <- "rkisp-isp-subdev":2 []                
                                                          
- entity 25: rkisp_rawwr0 (1 pad, 1 link)                 
             type Node subtype V4L                        
             device node name /dev/video2                 
        pad0: Sink                                        
                <- "rkisp-csi-subdev":2 []                
                                                          
- entity 31: rkisp_rawwr2 (1 pad, 1 link)                 
             type Node subtype V4L                        
             device node name /dev/video3                 
        pad0: Sink                                        
                <- "rkisp-csi-subdev":4 []                
                                                          
- entity 37: rkisp_rawwr3 (1 pad, 1 link)                 
             type Node subtype V4L                        
             device node name /dev/video4                 
        pad0: Sink                                        
                <- "rkisp-csi-subdev":5 []                
                                                          
- entity 43: rkisp_rawrd0_m (1 pad, 1 link)               
             type Node subtype V4L                        
             device node name /dev/video5                 
        pad0: Source                                      
                -> "rkisp-isp-subdev":0 []                
                                                          
- entity 49: rkisp_rawrd2_s (1 pad, 1 link)               
             type Node subtype V4L                        
             device node name /dev/video6                 
        pad0: Source                                      
                -> "rkisp-isp-subdev":0 []                
                                                          
- entity 55: rkisp-statistics (1 pad, 1 link)             
             type Node subtype V4L                        
             device node name /dev/video7                 
        pad0: Sink                                        
                <- "rkisp-isp-subdev":3 []                
                                                          
- entity 61: rkisp-input-params (1 pad, 1 link)           
             type Node subtype V4L                        
             device node name /dev/video8                 
        pad0: Source                                      
                -> "rkisp-isp-subdev":1 []                
                                                          
- entity 67: rockchip-csi2-dphy0 (2 pads, 2 links)        
             type V4L2 subdev subtype Unknown             
             device node name /dev/v4l-subdev2            
        pad0: Sink                                        
                <- "m00_b_ov13850 4-0010":0 []            
        pad1: Source                                      
                -> "rkisp-csi-subdev":0 []                
                                                          
- entity 70: m00_b_ov13850 4-0010 (1 pad, 1 link)         
             type V4L2 subdev subtype Sensor              
             device node name /dev/v4l-subdev3            
        pad0: Source                                      
                [fmt:SBGGR10/4224x3136]                   
                -> "rockchip-csi2-dphy0":0 []                                                              

从entity70信息中可以看到:

  • 该Entity完整的名称是:m00_b_ov13850 4-0010
  • 它是一个V4L2 subdev(Sub-Device) Sensor
  • 它对应的节点是/dev/v4l-subdev3,应用程序(如v4l2-ctl)可以打开它,并进行配置
  • 它仅有一个输出(Source)节点,记为pad0
  • 它的输出格式是[fmt:SBGGR10/4224x3136],其中SBGGR10是一种mbus-code的简称
  • 它的Source pad0 链接到"rockchip-csi2-dphy0"的pad0,并且当前的状态是 ENABLED。

三、拍照测试

1. 抓帧

rk3568_r:/ # v4l2-ctl -d /dev/video0 --set-fmt-video=width=800,height=600,pixelformat=NV12 --stream-mmap=3 --stream-to=/sdcard/out.yuv --stream-skip=9 --stream-count=1
m-mmap=3 --stream-to=/sdcard/out.yuv --stream-skip=9 --stream-count=1         <
<<<<<<<<< 7.51 fps
<

【看到<<<<<<<<< 7.51 fps 说明成功】

参数说明

-d: 摄像头对应设备文件
--set-fmt-video:指定了宽高及pxielformat(用FourCC表示)。NV12即用FourCC表示的pixelformat
--stream-mmap:指定buffer的类型为mmap,即由kernel分配的物理连续的或经过iommu映射的buffer
--stream-to:指定帧数据保存的文件路径
--stream-skip:指定丢弃(不保存到文件)前3帧
--stream-count:指定抓取的帧数,不包括--stream-skip丢弃的数量

其他参数
--set-selection,指定对输入图像进行裁剪。特别是当RKISP1的前级大小发生变化时要保证selection不大于前级输出大小。RKCIF的裁剪则是通过--set-crop参数设置的
--stream-poll,该选项指示v4l2-ctl采用异步IO,即在dqbuf前先用select等等帧数据完成,从而保证dqbuf不阻塞。否则dqbuf将会阻塞直到有数据帧到来

2. 显示图片:

将文件**/sdcard/out.yuv 从板子通过 adb pull**命令拷贝出来,

运行于windows下:
adb pull /sdcard/out.yuv

再拷贝到ubuntu中,执行以下命令显示图片【用其他可以打开yuv格式图片的工具也可以】

ffplay out.yuv -f rawvideo -pixel_format nv12 -video_size 800x600

【拍照时选择其他较高分辨率会出错,暂时还没解决这个问题,有知道的可以联系我:yikoupeng】

四、参数设置

1. 显示摄像头参数

显示摄像头参数

rk3568_r:/ # v4l2-ctl -d /dev/video0 -l     
v4l2-ctl -d /dev/video0 -l  
User Controls                                                                                                                                                               
                       exposure 0x00980911 (int)    : min=4 max=3324 step=1 default=1536 value=1536   
Image Source Controls                                                                                                                                                                                                                              
              vertical_blanking 0x009e0901 (int)    : min=192 max=29631 step=1 default=192 value=192   
            horizontal_blanking 0x009e0902 (int)    : min=576 max=576 step=1 default=576 value=576 flags=read-only 
                  analogue_gain 0x009e0903 (int)    : min=16 max=248 step=1 default=16 value=16   
Image Processing Controls                                                                                                       
                 link_frequency 0x009f0901 (intmenu): min=0 max=0 default=0 value=0 flags=read-only 
                     pixel_rate 0x009f0902 (int64)  : min=0 max=120000000 step=1 default=120000000 value=120000000 flags=read-only      
                   test_pattern 0x009f0903 (menu)   : min=0 max=4 default=0 value=0   

2. 增加曝光exposure

exposure值区间为:  4-3324 命令实例:

v4l2-ctl -d /dev/video0 --set-ctrl exposure=3324

3. 增加图片亮度analogue_gain

analogue_gain用于设置显示的图像的亮度

analogue_gain值区间:16-248

命令实例:

v4l2-ctl -d /dev/video0 --set-ctrl analogue_gain=240

analogue_gain=16现象

analogue_gain=244现象【效果非常明显】

4. 测试显示信息test_pattern

参数test_pattern,可以用于测试显示图像

  • 0:摄像头
  • 1-3 测试图片 命令实例:
v4l2-ctl -d /dev/video0 --set-ctrl test_pattern=0 

test_pattern = 1 test_pattern = 2 test_pattern = 3

5. 修改Entity的format、size

举例一,GC2053摄像头支持多个分辨率的输出,默认为1920x1080。现将输出分辨率改为640x480:

media-ctl -d/dev/media0 --set-v4l2' "m00_b_ov13850 4-0010":0[fmt:SBGGR10//640x480]'

修改GC2053输出后,rkisp-isp-subdev的大小及video device crop也相应要修改。因为后级的大小不能大于前级的大小。

~/>$ media-ctl -d/dev/media0 --set-v4l2 ' "rkisp-isp-subdev":0[fmt:SBGGR10/640x480]'
~/>$ media-ctl -d/dev/media0 --set-v4l2 ' "rkisp-isp-subdev":0[crop: (0, 0)/640x480]'
~/>$ media-ctl -d/dev/media0 --set-v4l2 ' "rkisp-isp-subdev":2[crop: (0, 0)/640x480]'
~/>$ v4l2-ctl -d/dev/video0\
--set-selection=target=crop, top=0, left=0, width=640, height=480

五、遇到问题解决

1.  解决闪退

主要是camera3_profiles_rk356x.xml和camera3_profiles.xml这两个文件中没有ov13850的信息

所以找到这两个文件,增加相对应的摄像头信息 改文件位于sdk的目录如下:

hardware/rockchip/camera/etc/camera/   

内容比较多,只贴出我修改那一段 【我将其他摄像头都删除了】

 "0" name="ov13850" moduleId="m00">
        
            "SUPPORTED_HW_RKISP1"/>
        


         
            
            "OFF"/>
            
            "OFF"/>
            "OFF,50HZ,60Hz,AUTO"/>
            "ON,OFF"/>
            "FALSE"/>
            …………
            "SENSOR_TYPE_RAW"/> 

文件camera3_profiles.xml参数的说明,瑞芯微官方有相应的说明文档

2. app 提示没有权限连接&打开设备失败

10-24 15:20:15.535  1668  1668 D CAM_Camera2OneCamMgr: Getting First BACK Camera
10-24 15:20:15.535  1668  1668 I CameraManagerGlobal: Connecting to camera service
10-24 15:20:15.539   346   346 W ServiceManager: Permission failure: android.permission.CAMERA_OPEN_CLOSE_LISTENER from uid=10090 pid=1668
10-24 15:20:15.542  1668  1668 D CAM_Camera2OneCamMgr: Getting First FRONT Camera
10-24 15:20:15.543  1668  1668 W CAM_Camera2OneCamMgr: No front-facing camera found,try to find external facing camera.
10-24 15:20:15.544  1668  1668 W CAM_Camera2OneCamMgr: No external camera found.

该log位于以下文件

./packages/apps/Camera2/src/com/android/camera/one/v2/Camera2OneCameraManagerImpl.java:172

修改文件

packages/apps/Camera2/AndroidManifest.xml

增加下面两处,会解决连接ManagerService 错误问题

"android.permission.CAMERA_OPEN_CLOSE_LISTENER"/>
android:sharedUserId="android.uid.system"

同时将设备树文件 将mipi_in_ucam0里的reg修改为1,如果有其他摄像头信息,一次往后填写或者删除。

114 &csi2_dphy0 {
115     status = "okay";
116 
117     ports {
118         #address-cells = <1>;
119         #size-cells = <0>;
120         port@0 {
121             reg = <0>;
122             #address-cells = <1>;                                                                                       
123             #size-cells = <0>;
124             
125             mipi_in_ucam0: endpoint@1 {
126                 reg = <1>;
127                 remote-endpoint = <&ov13850_out>;
128                 data-lanes = <1 2 3 4>;
129             };
……

【这个reg是什么意思,有知道的老铁可以给我留言】

3.  APP打开设备失败

从log看,没有任何permission问题,摄像头也打开了,但是就是连接失败,主要是xml文件的sensorType 设置不对

hardware/rockchip/camera/etc/camera/camera3_profiles_rk356x.xml
hardware/rockchip/camera/etc/camera/camera3_profiles.xml

找到这两个文件下面的值

"SENSOR_TYPE_RAW"/> 

修改为

"SENSOR_TYPE_SOC"/> 

六、后续

后面还有一些工作需要进一步研究:

  1. 目前只调通了1个摄像头,后需要会再增加1个2lane的摄像头
  2. 视频颜色还有点发绿,还需要进一步调试

有一起玩瑞芯微平台的老铁,后台猛戳我

【本文拒绝任何未授权的转载!转载请先联系作者:yikoupeng!】

end


一口Linux


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

精彩文章合集


文章推荐

【专辑】 ARM
【专辑】 粉丝问答
专辑 linux 入门
专辑 计算机网络
专辑 Linux驱动

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: TI培训

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved