Line 214: |
Line 214: |
| | | |
| Also, y8 file can be used with this player: [https://yuv-player-deluxe.software.informer.com/2.6/ YUV Displayer Deluxe]. | | Also, y8 file can be used with this player: [https://yuv-player-deluxe.software.informer.com/2.6/ YUV Displayer Deluxe]. |
| + | |
| + | === Application examples === |
| + | |
| + | ====Configuring global variables==== |
| + | For the convenience of later descriptions, global variables are configured here according to the sensor size. |
| + | |
| + | *MV-MIPI-IMX178M |
| + | |
| + | <code>export WIDTH=3088</code> |
| + | |
| + | <code>export HEIGHT=2064</code> |
| + | |
| + | <code>export FPS=22</code> |
| + | |
| + | *MV-MIPI-SC130M |
| + | |
| + | <code>export WIDTH=1280</code> |
| + | |
| + | <code>export HEIGHT=1024</code> |
| + | |
| + | <code>export FPS=108</code> |
| + | |
| + | *MV-MIPI-IMX296M |
| + | |
| + | <code>export WIDTH=1456</code> |
| + | |
| + | <code>export HEIGHT=1088</code> |
| + | |
| + | <code>export FPS=60</code> |
| + | |
| + | *MV-MIPI-IMX287M |
| + | |
| + | <code>export WIDTH=704</code> |
| + | |
| + | <code>export HEIGHT=544</code> |
| + | |
| + | <code>export FPS=319</code> |
| + | |
| + | *MV-MIPI-IMX265M |
| + | |
| + | <code>export WIDTH=2048</code> |
| + | |
| + | <code>export HEIGHT=1544</code> |
| + | |
| + | <code>export FPS=45</code> |
| + | |
| + | *MV-MIPI-IMX264M |
| + | |
| + | <code>export WIDTH=2432</code> |
| + | |
| + | <code>export HEIGHT=2056</code> |
| + | |
| + | <code>export FPS=28</code> |
| + | |
| + | *RAW-MIPI-SC132M |
| + | |
| + | <code>export WIDTH=1080</code> |
| + | |
| + | <code>export HEIGHT=1280</code> |
| + | |
| + | <code>export FPS=120</code> |
| + | |
| + | ==== Configure parameters using v4l2-ctl ==== |
| + | <code>$ v4l2-ctl -d /dev/v4l-subdev2 -L</code> |
| + | |
| + | <code>User Controls</code> |
| + | |
| + | <code> trigger_mode 0x00981901 (int) : min=0 max=2 step=1 default=0 value=0 flags=volatile, execute-on-write</code> |
| + | |
| + | <code> trigger_src 0x00981902 (int) : min=0 max=1 step=1 default=1 value=1 flags=volatile, execute-on-write</code> |
| + | |
| + | <code> soft_trgone 0x00981903 (button) : flags=write-only, execute-on-write</code> |
| + | |
| + | <code> frame_rate 0x00981904 (int) : min=1 max=60 step=1 default=60 value=60 flags=volatile, execute-on-write</code> |
| + | |
| + | <code> roi_x 0x00981905 (int) : min=0 max=1376 step=8 default=0 value=0</code> |
| + | |
| + | <code> roi_y 0x00981906 (int) : min=0 max=1024 step=4 default=0 value=0</code> |
| + | |
| + | Parameters can be set and get using the following methods. |
| + | |
| + | <code>v4l2-ctl --set-ctrl [ctrl_type]=[val]</code> |
| + | |
| + | <code>v4l2-ctl --get-ctrl [ctrl_type]</code> |
| + | |
| + | All the above functions can be implemented using [[Mv mipi i2c.sh user guide|mv_mipi_i2c.sh]]. |
| + | |
| + | Note that the above parameters cannot be modified during the capture process. |
| + | |
| + | The following is an explanation of each parameter: |
| + | =====Trigger Mode===== |
| + | <code>v4l2-ctl --set-ctrl <small>trigger_mode=[0-2]</small></code> |
| + | |
| + | 0:Video streaming mode |
| + | |
| + | 1:Normal trigger mode. |
| + | |
| + | 2:High-speed continuous trigger mode. |
| + | =====Trigger Source===== |
| + | <code>v4l2-ctl --set-ctrl <small>trigger_src=[0-1]</small></code> |
| + | |
| + | 0: Software trigger mode. |
| + | |
| + | 1: Hardware trigger mode. |
| + | =====Software trigger command===== |
| + | <code>v4l2-ctl --set-ctrl <small>soft_trgone=1</small></code> |
| + | =====Set frame rate===== |
| + | <code>v4l2-ctl --set-ctrl frame_rate=[1-max]</code> |
| + | |
| + | The maximum frame rate is automatically updated as the resolution changed. |
| + | |
| + | ===== Set the starting position of the ROI ===== |
| + | <code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl roi_x=0</code> |
| + | |
| + | <code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl roi_y=0</code> |
| + | |
| + | After setting the ROI starting position, you need to complete the full ROI configuration using the <code>media-ctl</code> command. |
| + | |
| + | Note that setting the ROI may affect the maximum frame rate, and the ROI parameters need to meet the requirements specified in the camera manual. |
| + | |
| + | ==== Set image format using media-ctl ==== |
| + | use the following command to configure the camera's data format, resolution, and frame rate using <code>media-ctl</code>: |
| + | |
| + | <code>media-ctl -d /dev/media0 --set-v4l2 '"m00_b_mvcam 7-003b":0[fmt:Y8_1X8/'"$WIDTH"'x'"$HEIGHT"'@1/'"$FPS"']'</code> |
| + | |
| + | Among them: <code>"m00_b_mvcam 7-003b"</code> refers to the complete name of the camera entity, <code>Y8_1X8</code> is the mbus-code, <code>'"$WIDTH"'x'"$HEIGHT"'</code> indicates the resolution, <code>1/'"$FPS"'</code> indicates the resolution frame rate. |
| + | |
| + | The width and height here cooperate with the roi_x and roi_y of the v4l2-ctl command to form the ROI parameter. |
| + | |
| + | For example, for MV-MIPI-IMX296M, the command after variable replacement would be: |
| + | |
| + | <code>media-ctl -d /dev/media0 --set-v4l2 '"m00_b_mvcam 7-003b":0[fmt:Y8_1X8/1456x1088@1/60 field:none]'</code> |
| + | |
| + | You can not only configure the data format, resolution, and frame rate in one command, but also modify them separately as needed. |
| + | |
| + | ==== Video Streaming mode ==== |
| + | |
| + | ===== Set data format, resolution, frame rate ===== |
| + | <code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl roi_x=0</code> |
| + | |
| + | <code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl roi_y=0</code> |
| + | |
| + | <code>media-ctl -d /dev/media0 --set-v4l2 '"m00_b_mvcam 7-003b":0[fmt:Y8_1X8/'"$WIDTH"'x'"$HEIGHT"'@1/'"$FPS"']'</code> |
| + | =====Frame rate statistics===== |
| + | In streaming mode, the following commands can be used for frame rate statistics: |
| + | |
| + | <code>v4l2-ctl --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=/dev/null</code> |
| + | |
| + | ===== Save image to file ===== |
| + | |
| + | *raw8 |
| + | |
| + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-$WIDTHx$HEIGHT.raw</code> |
| + | |
| + | *raw10 |
| + | |
| + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat='Y10 ' --stream-mmap --stream-count=1 --stream-to=y10-$WIDTHx$HEIGHT.raw</code> |
| + | |
| + | *raw12 |
| + | |
| + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=$WIDTH,height=$HEIGHT,pixelformat='Y12 ' --stream-mmap --stream-count=1 --stream-to=y12-$WIDTHx$HEIGHT.raw</code> |
| + | |
| + | Please refer to the description in the previous section for the image format. |
| + | |
| + | ===== Example of gstreamer application ===== |
| + | To facilitate installation and debugging, the MV series cameras provide UYVY mode, which supports a maximum width of 2880 and can be previewed in real time using the following command. |
| + | |
| + | Note that the RAW series does not support the UYVY format. |
| + | |
| + | We provide several gstreamer routines that implement the preview function. See the [https://github.com/veyeimaging/rk356x_firefly/tree/main/linux/examples examples] directory on github for details. |
| + | |
| + | ==== Trigger mode ==== |
| + | |
| + | ===== Set data format, resolution, frame rate ===== |
| + | <code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl roi_x=0</code> |
| + | |
| + | <code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl roi_y=0</code> |
| + | |
| + | <code>media-ctl -d /dev/media0 --set-v4l2 '"m00_b_mvcam 7-003b":0[fmt:Y8_1X8/'"$WIDTH"'x'"$HEIGHT"'@1/'"$FPS"']'</code> |
| + | =====Software trigger mode===== |
| + | ======Set mode====== |
| + | <code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>trigger_mode=1</small></code> |
| + | |
| + | <code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>trigger_src=0</small></code> |
| + | |
| + | ====== Start acquisition ====== |
| + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-$WIDTHx$HEIGHT.raw</code> |
| + | |
| + | ======Perform soft trigger operation====== |
| + | In other shell terminals, you can execute the following command multiple times for multiple triggers. |
| + | |
| + | <code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>soft_trgone=1</small></code> |
| + | |
| + | ===== Hardware trigger mode ===== |
| + | |
| + | ====== Set mode ====== |
| + | <code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>trigger_mode=1</small></code> |
| + | |
| + | <code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>trigger_src=1</small></code> |
| + | |
| + | The [[Mv mipi i2c.sh user guide|mv_mipi_i2c.sh]] script can be used to set rich trigger parameters. |
| + | |
| + | ====== Start acquisition ====== |
| + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-$WIDTHx$HEIGHT.raw</code> |
| + | |
| + | ====== Perform hardware trigger operation ====== |
| + | Connect the appropriate trigger signal to the trigger pin of the camera and trigger it. |
| + | |
| + | ===i2c script for parameter configuration=== |
| + | We provide shell scripts to configure the parameters. |
| + | |
| + | [[mv_mipi_i2c.sh user guide]] |
| + | ===References=== |
| + | |
| + | *ROC-RK3588S-PC Manual |
| + | |
| + | https://wiki.t-firefly.com/en/ROC-RK3588S-PC/ |
| + | |
| + | *Firefly Linux User Guide |
| + | |
| + | https://wiki.t-firefly.com/en/Firefly-Linux-Guide/index.html |
| + | ===Document History=== |
| + | |
| + | *2023-04-12 |
| + | |
| + | Release 1st version. |
| + | <br /> |