Difference between revisions of "VEYE MIPI 290/327 for Jetson Nano"
Line 12: | Line 12: | ||
Development Docs:https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-321/index.html | Development Docs:https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-321/index.html | ||
− | ==== Setting Up the Environment ==== | + | ====Setting Up the Environment==== |
*Host PC which runs Ubuntu 18.04/16.04(64-bit). | *Host PC which runs Ubuntu 18.04/16.04(64-bit). | ||
Line 28: | Line 28: | ||
===Firmeware Upgrade=== | ===Firmeware Upgrade=== | ||
− | < | + | |
+ | ==== Prepare ==== | ||
+ | |||
+ | *Cross-compiling Toolchain | ||
+ | |||
+ | Please refer to [https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%2520Linux%2520Driver%2520Package%2520Development%2520Guide%2Fxavier_toolchain.html%23wwpID0ESHA this link] to install toolchain on your Host PC. | ||
+ | |||
+ | *L4T source code and Rootfs | ||
+ | |||
+ | You could use SDK Manager or [https://developer.nvidia.com/embedded/downloads directly download] to get source code. | ||
+ | |||
+ | *Setting Up the Environment | ||
+ | |||
+ | Assume SDK install directory is <TOPDIR>,source code is in $L4T_DIR/sources directory. | ||
+ | |||
+ | <code>export TOP_DIR=<absolute path to top dir;in my case is /home/xumm/nvidia/nvidia_sdk/JetPack_4.2.2_Linux_GA_P3448/></code> | ||
+ | |||
+ | <code>export L4T_DIR=$TOP_DIR/Linux_for_Tegra</code> | ||
+ | |||
+ | <code>export LDK_ROOTFS_DIR=$TOP_DIR/Linux_for_Tegra/rootfs</code> | ||
+ | |||
+ | <code>export ARCH=arm64</code> | ||
+ | |||
+ | <code>export CROSS_COMPILE=aarch64-linux-gnu-</code> | ||
+ | |||
+ | <code>export CROSS32CC=arm-linux-gnueabihf-gcc</code> | ||
+ | |||
+ | <code>mkdir -p $L4T_DIR/sources/kernel/out_kernel</code> | ||
+ | |||
+ | <code>export TEGRA_KERNEL_OUT=$L4T_DIR/sources/kernel/out_kernel</code> | ||
+ | |||
+ | <code>export NVIDIA_PATH=$L4T_DIR/sources/kernel/nvidia</code> | ||
+ | |||
+ | <code>export NANO_DTS_PATH=$L4T_DIR/sources/hardware/nvidia/platform/t210/porg/kernel-dts</code> | ||
+ | |||
+ | *Build default image, prepare L4T environment | ||
+ | |||
+ | <code>cd $L4T_DIR</code> | ||
+ | |||
+ | <code>sudo ./apply_binaries.sh</code> | ||
+ | |||
+ | *Download VEYE code for Jetson Nano | ||
+ | |||
+ | <code>cd $L4T_DIR</code> | ||
+ | |||
+ | <code>git clone https://github.com/veyeimaging/jetson_nano<nowiki/>.git</code> | ||
+ | |||
+ | <code>export RELEASE_PACK_DIR=$L4T_DIR/jetson_nano</code> | ||
====Using the Prebuilt Binaries==== | ====Using the Prebuilt Binaries==== | ||
+ | =====Installing the Kernel and DTS===== | ||
+ | <code>cd $RELEASE_PACK_DIR/binaries</code> | ||
+ | |||
+ | <code>tar -xzvf Image.tar.gz</code> | ||
+ | |||
+ | <code>sudo cp Image $L4T_DIR/kernel/ -f</code> | ||
+ | |||
+ | <code>sudo cp $RELEASE_PACK_DIR/binaries/tegra210-p3448-0000-p3449-0000-a02.dtb $L4T_DIR/kernel/dtb/tegra210-p3448-0000-p3449-0000-a02.dtb -f</code> | ||
+ | |||
+ | <code>cd $L4T_DIR</code> | ||
====Flashing the Jetson Nano Development Kit==== | ====Flashing the Jetson Nano Development Kit==== | ||
+ | The steps to flash the Jetson Nano™ development kit are as follows: | ||
+ | |||
+ | #Ensure a jumper is connected across J48 button header to enable DC power. | ||
+ | #Connect the micro USB cable to the Jetson Nano™ and host PC. | ||
+ | #Set the board to recovery mode, as mentioned in below steps: | ||
+ | |||
+ | a. Power OFF the board. | ||
+ | |||
+ | b. Connect the jumper pin to the pin 3 and pin 4 of the J40 button header. | ||
+ | |||
+ | c. Power ON the Jetson Nano™ development kit. | ||
+ | |||
+ | If the board is successfully changed to recovery mode, the Jetson Nano™development kit will be enumerated as an USB device to the host PC. | ||
+ | |||
+ | Run the following command to verify whether the board is in recovery mode. | ||
+ | |||
+ | <code>lsusb</code> | ||
+ | |||
+ | The output message appears as shown below. | ||
+ | |||
+ | <code>Bus 001 Device 102: ID 0955:7f21 NVidia Corp.</code> | ||
+ | |||
+ | 4. Run the following commands to flash the Jetson Nano™ development kit from | ||
+ | |||
+ | your host PC. | ||
+ | |||
+ | <code>cd $L4T_DIR</code> | ||
+ | |||
+ | <code>sudo ./flash.sh jetson-nano-qspi-sd mmcblk0p1</code> | ||
+ | |||
+ | Note: Now, the entire micro SD on the Jetson Nano™ development kit will be erased. It will take about 10-30 minutes to complete depending on the host PC configuration. | ||
+ | |||
+ | 5. Reboot and connect the Jetson Nano™ board to a monitor and keyboard to complete the OS configuration, once flashing is completed. | ||
====Building from Source==== | ====Building from Source==== | ||
+ | =====Build kernel===== | ||
+ | |||
+ | *patch code | ||
+ | |||
+ | <code>cp $RELEASE_PACK_DIR/sources/kernel/veye327/* $NVIDIA_PATH/drivers/media/i2c/</code> | ||
+ | |||
+ | <code>cp $RELEASE_PACK_DIR/sources/kernel/kernel_veye327_config $L4T_DIR/sources/kernel/kernel-4.9/arch/arm64/configs/tegra_veye327_defconfig</code> | ||
+ | |||
+ | *build | ||
+ | |||
+ | <code>cd $L4T_DIR/sources/kernel/kernel-4.9/</code> | ||
+ | |||
+ | <code>make ARCH=arm64 O=$TEGRA_KERNEL_OUT tegra_veye327_defconfig</code> | ||
+ | |||
+ | <code>make ARCH=arm64 O=$TEGRA_KERNEL_OUT Image -j4</code> | ||
+ | |||
+ | Completed Image file is $TEGRA_KERNEL_OUT/arch/arm64/boot/Image,could be used for Flashing or Upgrading. | ||
+ | |||
+ | Install Image for Flashing: | ||
+ | |||
+ | <code>sudo cp $TEGRA_KERNEL_OUT/arch/arm64/boot/Image $L4T_DIR/kernel/ -f</code> | ||
+ | =====Build DTS===== | ||
+ | |||
+ | *patch code | ||
+ | |||
+ | <code>cp $RELEASE_PACK_DIR/sources/dts/kernel-dts/* $NANO_DTS_PATH/</code> | ||
+ | |||
+ | <code>cp $RELEASE_PACK_DIR/sources/dts/kernel-dts/porg-platforms/* $NANO_DTS_PATH/porg-platforms/</code> | ||
+ | |||
+ | <code>cp $RELEASE_PACK_DIR/sources/dts/kernel-dts/porg-plugin-manager/* $NANO_DTS_PATH/porg-plugin-manager/</code> | ||
+ | |||
+ | *build | ||
+ | |||
+ | <code>make ARCH=arm64 O=$TEGRA_KERNEL_OUT dtbs</code> | ||
+ | |||
+ | <code>cp $TEGRA_KERNEL_OUT/arch/arm64/boot/dts/tegra210-p3448-0000-p3449-0000-a02.dtb $L4T_DIR/kernel/dtb/</code> | ||
+ | |||
+ | Could be used for Flashing or Upgrading. | ||
====Upgrading Kernel Image and Supplements==== | ====Upgrading Kernel Image and Supplements==== | ||
+ | First,you should copy '''Image''' file to Jetson nano somehow. Use a U disk for example. | ||
+ | <code>sudo cp <path to your Image dir>/Image /boot/Image -f</code> | ||
====Upgrading DTB File by Flashing from Host PC==== | ====Upgrading DTB File by Flashing from Host PC==== | ||
+ | Burning process reference 4.3, burning commands is as below: | ||
+ | |||
+ | <code>cd $L4T_DIR</code> | ||
+ | |||
+ | <code>sudo ./flash.sh -r -k DTB jetson-nano-qspi-sd mmcblk0p1</code> | ||
+ | Power off after flashing finished. | ||
===Applications and Test=== | ===Applications and Test=== | ||
====Video Stream Toolkits Manual==== | ====Video Stream Toolkits Manual==== | ||
====Video Control Toolkits Manual==== | ====Video Control Toolkits Manual==== |
Revision as of 10:43, 23 October 2019
1 Overview
This guide shows how to connect VEYE-MIPI-290/327 to Jetson Nano. Jetson Nano SDK Version is r32.2.1. We provide two ways to do so: Prebuilt Binaries or Source Code. Yes, It's Open Source!
VEYE-MIPI-290/327 is STARVIS camera module with ISP functions build in. It outputUYVY data using MIPI-CSI2. We provide V4L2 interface for video streaming apps , and Video Control Toolkits (which is Shell Script) to control the camera module directly.
2 Hardware Setup
Jetson Nano's CSI2 interface is compatible with Raspberry Pi,so both Mini Adapter Board and Adapter Board is supported. In addition,It need a 5V power.
3 System Setup and Configuration
Jetson Nano system setup, please refer to official document:get-started-jetson-nano-devkit.
Development Docs:https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-321/index.html
3.1 Setting Up the Environment
- Host PC which runs Ubuntu 18.04/16.04(64-bit).
- NVIDIA® provided L4T release and corresponding sample rootfs for Jetson Nano™ development kit.
- A kernel image , device tree blob (DTB) file and module drivers for the VEYE-MIPI-290/327 camera. The release package contains a kernel binary (Image),DTB files and module drivers, which you can download and rebuild from source.
- A jumper pin connected across J48 button header to enable DC power.
- A USB cable (micro USB port) to plug into the recovery port of the Jetson Nano™
- development kit.
- Power cable (5V-4A) to power the Jetson Nano™ board.
- Micro SD card must be connected to the J501 slot.
- A jumper pin must be connected to the pin 3 and pin 4 of J40 button header.
4 Firmeware Upgrade
4.1 Prepare
- Cross-compiling Toolchain
Please refer to this link to install toolchain on your Host PC.
- L4T source code and Rootfs
You could use SDK Manager or directly download to get source code.
- Setting Up the Environment
Assume SDK install directory is <TOPDIR>,source code is in $L4T_DIR/sources directory.
export TOP_DIR=<absolute path to top dir;in my case is /home/xumm/nvidia/nvidia_sdk/JetPack_4.2.2_Linux_GA_P3448/>
export L4T_DIR=$TOP_DIR/Linux_for_Tegra
export LDK_ROOTFS_DIR=$TOP_DIR/Linux_for_Tegra/rootfs
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
export CROSS32CC=arm-linux-gnueabihf-gcc
mkdir -p $L4T_DIR/sources/kernel/out_kernel
export TEGRA_KERNEL_OUT=$L4T_DIR/sources/kernel/out_kernel
export NVIDIA_PATH=$L4T_DIR/sources/kernel/nvidia
export NANO_DTS_PATH=$L4T_DIR/sources/hardware/nvidia/platform/t210/porg/kernel-dts
- Build default image, prepare L4T environment
cd $L4T_DIR
sudo ./apply_binaries.sh
- Download VEYE code for Jetson Nano
cd $L4T_DIR
git clone https://github.com/veyeimaging/jetson_nano.git
export RELEASE_PACK_DIR=$L4T_DIR/jetson_nano
4.2 Using the Prebuilt Binaries
4.2.1 Installing the Kernel and DTS
cd $RELEASE_PACK_DIR/binaries
tar -xzvf Image.tar.gz
sudo cp Image $L4T_DIR/kernel/ -f
sudo cp $RELEASE_PACK_DIR/binaries/tegra210-p3448-0000-p3449-0000-a02.dtb $L4T_DIR/kernel/dtb/tegra210-p3448-0000-p3449-0000-a02.dtb -f
cd $L4T_DIR
4.3 Flashing the Jetson Nano Development Kit
The steps to flash the Jetson Nano™ development kit are as follows:
- Ensure a jumper is connected across J48 button header to enable DC power.
- Connect the micro USB cable to the Jetson Nano™ and host PC.
- Set the board to recovery mode, as mentioned in below steps:
a. Power OFF the board.
b. Connect the jumper pin to the pin 3 and pin 4 of the J40 button header.
c. Power ON the Jetson Nano™ development kit.
If the board is successfully changed to recovery mode, the Jetson Nano™development kit will be enumerated as an USB device to the host PC.
Run the following command to verify whether the board is in recovery mode.
lsusb
The output message appears as shown below.
Bus 001 Device 102: ID 0955:7f21 NVidia Corp.
4. Run the following commands to flash the Jetson Nano™ development kit from
your host PC.
cd $L4T_DIR
sudo ./flash.sh jetson-nano-qspi-sd mmcblk0p1
Note: Now, the entire micro SD on the Jetson Nano™ development kit will be erased. It will take about 10-30 minutes to complete depending on the host PC configuration.
5. Reboot and connect the Jetson Nano™ board to a monitor and keyboard to complete the OS configuration, once flashing is completed.
4.4 Building from Source
4.4.1 Build kernel
- patch code
cp $RELEASE_PACK_DIR/sources/kernel/veye327/* $NVIDIA_PATH/drivers/media/i2c/
cp $RELEASE_PACK_DIR/sources/kernel/kernel_veye327_config $L4T_DIR/sources/kernel/kernel-4.9/arch/arm64/configs/tegra_veye327_defconfig
- build
cd $L4T_DIR/sources/kernel/kernel-4.9/
make ARCH=arm64 O=$TEGRA_KERNEL_OUT tegra_veye327_defconfig
make ARCH=arm64 O=$TEGRA_KERNEL_OUT Image -j4
Completed Image file is $TEGRA_KERNEL_OUT/arch/arm64/boot/Image,could be used for Flashing or Upgrading.
Install Image for Flashing:
sudo cp $TEGRA_KERNEL_OUT/arch/arm64/boot/Image $L4T_DIR/kernel/ -f
4.4.2 Build DTS
- patch code
cp $RELEASE_PACK_DIR/sources/dts/kernel-dts/* $NANO_DTS_PATH/
cp $RELEASE_PACK_DIR/sources/dts/kernel-dts/porg-platforms/* $NANO_DTS_PATH/porg-platforms/
cp $RELEASE_PACK_DIR/sources/dts/kernel-dts/porg-plugin-manager/* $NANO_DTS_PATH/porg-plugin-manager/
- build
make ARCH=arm64 O=$TEGRA_KERNEL_OUT dtbs
cp $TEGRA_KERNEL_OUT/arch/arm64/boot/dts/tegra210-p3448-0000-p3449-0000-a02.dtb $L4T_DIR/kernel/dtb/
Could be used for Flashing or Upgrading.
4.5 Upgrading Kernel Image and Supplements
First,you should copy Image file to Jetson nano somehow. Use a U disk for example.
sudo cp <path to your Image dir>/Image /boot/Image -f
4.6 Upgrading DTB File by Flashing from Host PC
Burning process reference 4.3, burning commands is as below:
cd $L4T_DIR
sudo ./flash.sh -r -k DTB jetson-nano-qspi-sd mmcblk0p1
Power off after flashing finished.