Changes

Jump to navigation Jump to search
Line 1: Line 1:  
[[CS-MIPI-IMX307 for Jetson Nano/zh|查看中文]]
 
[[CS-MIPI-IMX307 for Jetson Nano/zh|查看中文]]
   −
<big><big><big><big>How to use CS-MIPI-IMX307 camera module on NVIDIA Jetson Nano</big></big></big></big>
+
<big><big><big><big>How to use CS-MIPI-X camera module on NVIDIA Jetson Nano</big></big></big></big>
 
===Overview===
 
===Overview===
This guide shows how to connect CS-MIPI-IMX307 to Jetson Nano.Jetson SDK Version is(Jetpack4.2.2,L4T r32.2.1)and(Jetpack4.3,L4Tr32.3.1).. We provide two ways to do so: '''Prebuilt Binaries''' or '''Source Code. Yes, It's Open Source!'''
+
This guide shows how to connect CS-MIPI-X to Jetson Nano.Jetson SDK Version is:
   −
CS-MIPI-IMX307 is STARVIS camera module with ISP functions build in. It output UYVY data using MIPI-CSI2,1080p@30fps mode, 720p_crop@60fps mode and VGA@130fps. We provide '''V4L2 interface''' for video streaming apps , and  '''Video Control Toolkits (which is Shell Script)''' to control the camera module directly.
+
*Jetpack4.2.2,L4T r32.2.1
 +
*Jetpack4.3,L4Tr32.3.1
 +
*Jetpack4.4,L4T,r32.4.3
 +
 
 +
We provide two ways to do so: '''Prebuilt Binaries''' or '''Source Code. Yes, It's Open Source!'''
 +
 
 +
CS-MIPI-IMX307 is STARVIS camera module with ISP functions build in. It output UYVY data using MIPI-CSI2,1080p@30fps mode, 720p_crop@60fps mode and VGA@130fps.  
 +
 
 +
CS-MIPI-SC132 is global shutter camera module with ISP functions build in. It output UYVY data using MIPI-CSI2,support mulity video format and trigger mode.
 +
 
 +
We provide '''V4L2 interface''' for video streaming apps , and  '''Video Control Toolkits (which is Shell Script)''' to control the camera module directly.
    
The new version of Jetson Nano (B01) is supported.
 
The new version of Jetson Nano (B01) is supported.
 
===Hardware Setup===
 
===Hardware Setup===
Jetson Nano's CSI2 interface is compatible with CS-MIPI-IMX307. In addition,It need a 5V power.
+
Jetson Nano's CSI2 interface is compatible with CS-MIPI-X. It support 5V power or 3.3V power mode. [[Power supply mode switching|power switching]].
 +
 
 +
*'''The default power supply mode of CS-MIPI-SC132 is 3.3V via FFC cable, and there is no need to plug in red and black power cable.'''
 +
 
 
[[File:Cs mipi imx307 jetson nao.JPG|alt=|center|thumb|600x600px|Connect CS-MIPI-IMX307 to Jetson Nano]]
 
[[File:Cs mipi imx307 jetson nao.JPG|alt=|center|thumb|600x600px|Connect CS-MIPI-IMX307 to Jetson Nano]]
 
[[File:Jetson nano pwr connect.jpg|center|thumb|600x600px|Jetson Nano power wire|alt=]]
 
[[File:Jetson nano pwr connect.jpg|center|thumb|600x600px|Jetson Nano power wire|alt=]]
Line 15: Line 28:  
[[File:Jetson Nano B01 001.jpg|center|thumb|600x600px|CS-MIPI-307 dual cameras connect to Jetson Nano B01]]
 
[[File:Jetson Nano B01 001.jpg|center|thumb|600x600px|CS-MIPI-307 dual cameras connect to Jetson Nano B01]]
 
<br />
 
<br />
 +
===Upgrade Jetson Nano system===
 +
====Overview====
 +
This section describes how to upgrade the Jetson system to support our camera module. To support our camera module, we need to update the two parts of the L4T (Linux for Tegra) of the Jetson system, '''Image''' and '''DTB'''.
   −
===Buruing the prebuilt Image to upgrade Jetson nano system===
+
In the Image, we added the camera driver, while the DTB indicates the camera model used. In general, you only need to use the Image and DTB, that we have prebuilt, and you don't need to build from source  when it is not necessary.
 +
 
 +
In particular, for Jetson nano, we provide a burning image of the TF card.
 +
===Burning the prebuilt Image to upgrade Jetson nano system===
 
You can use the image prebuild by us to upgrade jetson nano system, which will support our camera.
 
You can use the image prebuild by us to upgrade jetson nano system, which will support our camera.
   Line 23: Line 42:  
*download :
 
*download :
   −
link:https://pan.baidu.com/s/1sWrcfEOivjuQ7T7P5bVcng
+
baiduyun:https://pan.baidu.com/s/1sWrcfEOivjuQ7T7P5bVcng
 +
 
 +
google driver:https://drive.google.com/drive/folders/1KHSMTdyw-ZczR1yJPj-5y9eIv7izbgt3?usp=sharing
    
If Baidu cloud disk download is too slow, you can contact our company customer service ''xumm@csoneplus.com'' to obtain.
 
If Baidu cloud disk download is too slow, you can contact our company customer service ''xumm@csoneplus.com'' to obtain.
Line 34: Line 55:  
Jetson Nano system setup, please refer to official document:[https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit get-started-jetson-nano-devkit].
 
Jetson Nano system setup, please refer to official document:[https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit get-started-jetson-nano-devkit].
   −
Development Docs:https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-321/index.html
+
Development Docs:https://docs.nvidia.com/jetson/archives/
 
====Setting Up the Environment====
 
====Setting Up the Environment====
   Line 70: Line 91:     
<code>export TOP_DIR=<absolute path to top dir;in my case is /home/xumm/nvidia/nvidia_sdk/JetPack_4.3_Linux_JETSON_NANO_DEVKIT/></code>
 
<code>export TOP_DIR=<absolute path to top dir;in my case is /home/xumm/nvidia/nvidia_sdk/JetPack_4.3_Linux_JETSON_NANO_DEVKIT/></code>
 +
 +
''-Jetpack4.4''
 +
 +
<code>export TOP_DIR=<absolute path to top dir;in my case is /home/xumm/nvidia/nvidia_sdk//JetPack_4.4_Linux_JETSON_NANO_DEVKIT/></code>
    
''- Common Part''
 
''- Common Part''
Line 124: Line 149:     
<code>sudo cp Image $L4T_DIR/kernel/ -f</code>
 
<code>sudo cp Image $L4T_DIR/kernel/ -f</code>
 +
 +
*CS-MIPI-IMX307
    
<code>sudo cp $RELEASE_PACK_DIR/Nano/JetPack_4.3_Linux_P3448/dts\ dtb/CS-MIPI-IMX307/tegra210-p3448-0000-p3449-0000-a02.dtb $L4T_DIR/kernel/dtb/ -f</code>
 
<code>sudo cp $RELEASE_PACK_DIR/Nano/JetPack_4.3_Linux_P3448/dts\ dtb/CS-MIPI-IMX307/tegra210-p3448-0000-p3449-0000-a02.dtb $L4T_DIR/kernel/dtb/ -f</code>
    
<code>sudo cp $RELEASE_PACK_DIR/Nano/JetPack_4.3_Linux_P3448/dts\ dtb/CS-MIPI-IMX307/tegra210-p3448-0000-p3449-0000-b00.dtb $L4T_DIR/kernel/dtb/ -f</code>
 
<code>sudo cp $RELEASE_PACK_DIR/Nano/JetPack_4.3_Linux_P3448/dts\ dtb/CS-MIPI-IMX307/tegra210-p3448-0000-p3449-0000-b00.dtb $L4T_DIR/kernel/dtb/ -f</code>
 +
 +
*CS-MIPI-SC132
 +
 +
<code>sudo cp $RELEASE_PACK_DIR/Nano/JetPack_4.3_Linux_P3448/dts\ dtb/CS-MIPI-SC132/tegra210-p3448-0000-p3449-0000-a02.dtb $L4T_DIR/kernel/dtb/ -f</code>
 +
 +
<code>sudo cp $RELEASE_PACK_DIR/Nano/JetPack_4.3_Linux_P3448/dts\ dtb/CS-MIPI-SC132/tegra210-p3448-0000-p3449-0000-b00.dtb $L4T_DIR/kernel/dtb/ -f</code>
 +
 +
- ''Jetpack4.4''
 +
 +
<code>tar -xzvf Image_l4t_r32.4.3_veyecam.tar.gz</code>
 +
 +
<code>sudo cp Image $L4T_DIR/kernel/ -f</code>
 +
 +
*For CS-MIPI-IMX307
 +
 +
<code>sudo cp $RELEASE_PACK_DIR/Nano/JetPack_4.4_Linux_JETSON_NANO_DEVKIT/dts\ dtb/CS-MIPI-IMX307/tegra210-p3448-0000-p3449-0000-a02.dtb $L4T_DIR/kernel/dtb/ -f</code>
 +
 +
<code>sudo cp $RELEASE_PACK_DIR/Nano/JetPack_4.4_Linux_JETSON_NANO_DEVKIT/dts\ dtb/CS-MIPI-IMX307/tegra210-p3448-0000-p3449-0000-b00.dtb $L4T_DIR/kernel/dtb/ -f</code>
 +
 +
*For CS-MIPI-SC132
 +
 +
<code>sudo cp $RELEASE_PACK_DIR/Nano/JetPack_4.4_Linux_JETSON_NANO_DEVKIT/dts\ dtb/CS-MIPI-SC132/tegra210-p3448-0000-p3449-0000-a02.dtb $L4T_DIR/kernel/dtb/ -f</code>
 +
 +
<code>sudo cp $RELEASE_PACK_DIR/Nano/JetPack_4.4_Linux_JETSON_NANO_DEVKIT/dts\ dtb/CS-MIPI-SC132/tegra210-p3448-0000-p3449-0000-b00.dtb $L4T_DIR/kernel/dtb/ -f</code>
    
<code>cd $L4T_DIR</code>
 
<code>cd $L4T_DIR</code>
Line 170: Line 221:  
*patch code
 
*patch code
   −
<code>cp $RELEASE_PACK_DIR/drivers_source/cs_imx307\ veye327/* $NVIDIA_PATH/drivers/media/i2c/</code>
+
<code>cp $RELEASE_PACK_DIR/drivers_source/cam_drv_src/* $NVIDIA_PATH/drivers/media/i2c/</code>
    
''- r32.2.1''
 
''- r32.2.1''
   −
<code>cp $RELEASE_PACK_DIR/drivers_source/kernel_csimx307veye327_config_32.2.1 $L4T_DIR/sources/kernel/kernel-4.9/arch/arm64/configs/tegra_csimx307veye327_defconfig</code>
+
<code>cp $RELEASE_PACK_DIR/drivers_source/kernel_veyecam_config_32.2.1 $L4T_DIR/sources/kernel/kernel-4.9/arch/arm64/configs/tegra_veyecam_defconfig</code>
    
''- r32.3.1''
 
''- r32.3.1''
   −
<code>cp $RELEASE_PACK_DIR/drivers_source/kernel_csimx307veye327_config_32.3.1 $L4T_DIR/sources/kernel/kernel-4.9/arch/arm64/configs/tegra_csimx307veye327_defconfig</code>
+
<code>cp $RELEASE_PACK_DIR/drivers_source/kernel_veyecam_config_32.3.1 $L4T_DIR/sources/kernel/kernel-4.9/arch/arm64/configs/tegra_veyecam_defconfig</code>
 +
 
 +
''- r32.4.3''
 +
 
 +
<code>cp $RELEASE_PACK_DIR/drivers_source/kernel_veyecam_config_32.4.3 $L4T_DIR/sources/kernel/kernel-4.9/arch/arm64/configs/tegra_veyecam_defconfig</code>
    
*build
 
*build
Line 184: Line 239:  
<code>cd $L4T_DIR/sources/kernel/kernel-4.9/</code>
 
<code>cd $L4T_DIR/sources/kernel/kernel-4.9/</code>
   −
<code>make ARCH=arm64 O=$TEGRA_KERNEL_OUT tegra_csimx307veye327_defconfig</code>
+
<code>make ARCH=arm64 O=$TEGRA_KERNEL_OUT tegra_veyecam_defconfig</code>
    
<code>make ARCH=arm64 O=$TEGRA_KERNEL_OUT Image -j4</code>
 
<code>make ARCH=arm64 O=$TEGRA_KERNEL_OUT Image -j4</code>
Line 206: Line 261:     
<code>cp $RELEASE_PACK_DIR/Nano/JetPack_4.3_Linux_P3448/dts\ dtb/common/t210/* -r $NANO_DTS_PATH/</code>
 
<code>cp $RELEASE_PACK_DIR/Nano/JetPack_4.3_Linux_P3448/dts\ dtb/common/t210/* -r $NANO_DTS_PATH/</code>
 +
 +
*CS-MIPI-IMX307
    
<code>cp $RELEASE_PACK_DIR/Nano/JetPack_4.3_Linux_P3448/dts\ dtb/CS-MIPI-IMX307/tegra210-porg-plugin-manager.dtsi -r $NANO_DTS_PATH/porg/kernel-dts/porg-plugin-manager</code>
 
<code>cp $RELEASE_PACK_DIR/Nano/JetPack_4.3_Linux_P3448/dts\ dtb/CS-MIPI-IMX307/tegra210-porg-plugin-manager.dtsi -r $NANO_DTS_PATH/porg/kernel-dts/porg-plugin-manager</code>
 +
 +
*CS-MIPI-SC132
 +
 +
<code>cp $RELEASE_PACK_DIR/Nano/JetPack_4.3_Linux_P3448/dts\ dtb/CS-MIPI-SC132/tegra210-porg-plugin-manager.dtsi -r $NANO_DTS_PATH/porg/kernel-dts/porg-plugin-manager</code>
 +
 +
''- Jetpack4.4''
 +
 +
<code>cp $RELEASE_PACK_DIR/Nano/JetPack_4.4_Linux_JETSON_NANO_DEVKIT/dts\ dtb/common/t210/* -r $NANO_DTS_PATH/</code>
 +
 +
*CS-MIPI-IMX307
 +
 +
<code>cp $RELEASE_PACK_DIR/Nano/JetPack_4.4_Linux_JETSON_NANO_DEVKIT/dts\ dtb/CS-MIPI-IMX307/tegra210-porg-plugin-manager.dtsi -r $NANO_DTS_PATH/porg/kernel-dts/porg-plugin-manager</code>
 +
 +
*CS-MIPI-SC132
 +
 +
<code>cp $RELEASE_PACK_DIR/Nano/JetPack_4.4_Linux_JETSON_NANO_DEVKIT/dts\ dtb/CS-MIPI-SC132/tegra210-porg-plugin-manager.dtsi -r $NANO_DTS_PATH/porg/kernel-dts/porg-plugin-manager</code>
    
*build
 
*build
Line 242: Line 315:  
<code>GStreamer 1.14.4</code>
 
<code>GStreamer 1.14.4</code>
   −
Note: Make sure that CS-MIPI-IMX307 is connected and the required driversare loaded.
+
Note: Make sure that CS-MIPI-X is connected and the required driversare loaded.
   −
During booting, the module drivers for CS-MIPI-IMX307 will be loaded automatically in the Jetson Nano™ development kit.
+
During booting, the module drivers for CS-MIPI-X will be loaded automatically in the Jetson Nano™ development kit.
    
2. Run the following command to confirm whether the camera is initialized.
 
2. Run the following command to confirm whether the camera is initialized.
   −
<code>dmesg | grep csx307</code>
+
*For CS-MIPI-IMX307
 +
 
 +
<code>dmesg | grep csx307</code>  
 +
 
 +
The output message appears as shown below.:
 +
 
 +
<code>Detected CS307 sensor</code>
 +
 
 +
<code>subdev csimx307 X-003b bound</code>
   −
The output message appears as shown below.
+
*For CS-MIPI-SC132
 +
 
 +
<code>dmesg | grep cssc132</code>  
   −
<code>subdev csx307 6/7/8-003b bound</code>
+
The output message appears as shown below.:
   −
The output message indicates that the camera is initialized properly.
+
<code>subdev cssc132 X-003b bound</code>
   −
3. Run the following command to check the presence of video node.
+
*Run the following command to check the presence of video node.
   −
<u><code>ls /dev/video*</code></u>
+
<code>ls /dev/video*</code>
    
The output message appears as shown below.
 
The output message appears as shown below.
Line 273: Line 356:     
<code>gst-launch-1.0 v4l2src ! "video/x-raw,format=(string)UYVY, width=(int)1280, height=(int)720, framerate=(fraction)60/1" ! nvvidconv ! "video/x-raw(memory:NVMM),format=(string)I420" ! nvoverlaysink sync=false</code>
 
<code>gst-launch-1.0 v4l2src ! "video/x-raw,format=(string)UYVY, width=(int)1280, height=(int)720, framerate=(fraction)60/1" ! nvvidconv ! "video/x-raw(memory:NVMM),format=(string)I420" ! nvoverlaysink sync=false</code>
 +
 +
*Preview 1280*1080@45 (CS-MIPI-SC132,HW accelerated)
 +
 +
<code>gst-launch-1.0 v4l2src ! "video/x-raw,format=(string)UYVY, width=(int)1280, height=(int)1080, framerate=(fraction)45/1" ! nvvidconv ! "video/x-raw(memory:NVMM),format=(string)I420" ! nvoverlaysink sync=false</code>
    
*Preview 640*480@130fps(HW accelerated)
 
*Preview 640*480@130fps(HW accelerated)
Line 310: Line 397:  
<code>cd $RELEASE_PACK_DIR/i2c_cmd/bin</code>
 
<code>cd $RELEASE_PACK_DIR/i2c_cmd/bin</code>
   −
Video Control Toolkits Manual : [[CS-MIPI-X i2c|CS-MIPI-IMX307 i2c]]
+
Video Control Toolkits Manual : [[CS-MIPI-X i2c|CS-MIPI-X i2c]]
 
===Others===
 
===Others===
 
This article and the source code are still in the process of improving. If you have any suggestions for improvement, you are welcome to email xumm#csoneplus.com.
 
This article and the source code are still in the process of improving. If you have any suggestions for improvement, you are welcome to email xumm#csoneplus.com.
    
<br />
 
<br />

Navigation menu