Difference between revisions of "Linux BSP User Guide for jetson series"

From ESS-WIKI
Jump to: navigation, search
Line 101: Line 101:
 
== Flash Image ==
 
== Flash Image ==
  
 +
Make sure your Host PC has installed package : device-tree-compiler.<br/>
 
Before flashing the image, power off the DUT, press recovery button and power on.
 
Before flashing the image, power off the DUT, press recovery button and power on.
  

Revision as of 09:32, 7 October 2022

Linux BSP Version

Ubuntu 18.04
Kernel 4.9.201

Released Image

Build Environment on Host

Currently, we adopt Docker as build environment.
You can get the latest version of advrisc/u18.04-imx8lbv1 Docker image for developing nVidia jetson projects.
Docker command:

$ docker pull advrisc/u18.04-imx8lbv1

Run Docker example

Step1 Run docker container (example)

sudo docker run -it --name jetson_linux_risc -v /home/bsp/myLinux:/home/adv/BSP:rw --privileged advrisc/u18.04-imx8lbv1:latest /bin/bash

Step2 In container, change the user. (example)

 adv@7cc0fa834366:~$ sudo chown adv:adv -R BSP

Dependncy Library

Please install library in the HOST outside of docker if you get Exec format error.

$sudo apt-get install qemu-user-static

Getting Linux Source Code

$ export GIT_SSL_NO_VERIFY=1

EPC-R7000

$ repo init -u https://AIM-Linux@dev.azure.com/AIM-Linux/EPC-R7200/_git/manifests -m epcr7000.xml

EPC-R7200
Jetpack 4.5.1 / L4T 32.5.1

$ cd ~/BSP
$ mkdir jetson_linux_risc
$ cd jetson_linux_risc
$ git config --global user.name "Your Name"
$ git config --global user.email you@example.com
$ repo init -u https://AIM-Linux@dev.azure.com/AIM-Linux/EPC-R7200/_git/manifests
$ repo sync

Jetpack 4.6.1 / L4T 32.7.1

$ repo init -u https://AIM-Linux@dev.azure.com/AIM-Linux/EPC-R7200/_git/manifests -m 3271.xml

AIR-020
Jetpack 4.5.1 / L4T 32.5.1

$ cd ~/BSP
$ mkdir jetson_linux_risc
$ cd jetson_linux_risc
$ git config --global user.name "Your Name"
$ git config --global user.email you@example.com
$ repo init -u https://AIM-Linux@dev.azure.com/AIM-Linux/AIR-020/_git/manifests
$ repo sync

Jetpack 4.6.1 / L4T 32.7.1

$ repo init -u https://AIM-Linux@dev.azure.com/AIM-Linux/AIR-020/_git/manifests -m 3271.xml

AIR-030
Jetpack 5.0.1 / L4T 34.1.1

$ repo init -u https://AIM-Linux@dev.azure.com/AIM-Linux/risc_nvidia_jetson/_git/manifest -m air030_3411.xml

Build Image - AIR-020 / EPC-R7200

Build Release Image

sudo ./scripts/build_release.sh -s <SOC> -v <VERSION>
Where
"-v : Image version" 00001~99999
"-s : 186 - Jetson TX2 NX"
"   : 194 - Jetson Xavier NX"
"   : 210 - Jetson Nano"

Build Kernel - AIR-020 / EPC-R7200

sudo ./scripts/build_kernel.sh -s <SOC> -v <VERSION>

nVidia : Build the Kernel

Enter Download Mode

Press following button + power ON, or

EPC-R7200 AIR020
Epcr7200 recovery button.jpg] Air020 recovery button.png

Enter following command in the device,

$ sudo reboot --force forced-recovery

Flash Image

Make sure your Host PC has installed package : device-tree-compiler.
Before flashing the image, power off the DUT, press recovery button and power on.

  EPC-R7200 AIR-020
Xavier NX

$ cd $TOP/Linux_for_Tegra/186/
$ sudo ./flash.sh jetson-xavier-nx-devkit-emmc mmcblk0p1

$ cd $TOP/Linux_for_Tegra/194/
$ sudo ./flash.sh jetson-xavier-nx-devkit-emmc mmcblk0p1
TX2 NX $ cd $TOP/Linux_for_Tegra/186/
$ sudo ./flash.sh jetson-xavier-nx-devkit-tx2-nx mmcblk0p1
$ cd $TOP/Linux_for_Tegra/186/
$ sudo ./flash.sh jetson-xavier-nx-devkit-tx2-nx mmcblk0p1
Nano

$ cd $TOP/Linux_for_Tegra/210/
$ sudo ./flash.sh jetson-nano-devkit-emmc mmcblk0p1

$ cd $TOP/Linux_for_Tegra/210/
$ sudo ./flash.sh jetson-nano-devkit-emmc mmcblk0p1

AIR-030

sudo ./flash.sh -d rootfs/boot/tegra234-air030.dtb jetson-agx-orin-devkit mmcblk0p1

nVidia : Flash Support
Flash to NVME / SD directly
The nVidia provide another flash option : Flashing with initrd
Applies to: Jetson Xavier NX and Jetson AGX Xavier series only

Flash DTB

  EPC-R7200 AIR-020
Xavier NX $ cd $TOP/Linux_for_Tegra/186/
$ sudo ./flash.sh -r -k kernel-dtb xavier-nx-epcr7200 mmcblk0p1
$ cd $TOP/Linux_for_Tegra/186/
$ sudo ./flash.sh -r -k kernel-dtb jetson-xavier-nx-devkit-emmc mmcblk0p1
TX2 NX $ cd $TOP/Linux_for_Tegra/186/
$ sudo ./flash.sh -r -k kernel-dtb tx2-nx-epcr7200 mmcblk0p1
$ cd $TOP/Linux_for_Tegra/186/
$ sudo ./flash.sh -r -k kernel-dtb jetson-xavier-nx-devkit-tx2-nx mmcblk0p1
Nano $ cd $TOP/Linux_for_Tegra/210/
$ sudo ./flash.sh -r -k DTB nano-epcr7200 mmcblk0p1
$ cd $TOP/Linux_for_Tegra/210/
$ sudo ./flash.sh -r -k kernel-dtb jetson-nano-devkit-emmc mmcblk0p1

Flash Mac Address

GBE in eeprom

$ sudo ./eeprom $SOC $mac_address

Where SOC

  186 : TX2-NX
  194 : XavierNX
  210 : Nano 

Intel I210

$ sudo -s
$ BDF=`lspci | grep 210 | awk '{print $1}'`
$ setpci -s $BDF COMMAND=0007

Get NIC

$./EepromAccessTool

Flash I210 address with mac_address = D4E5F6123456 ( If mac address = D4:E5:F6:12:34:56 )

$ ./EepromAccessTool -nic=<NIC> -f=Dev_Start_I210_Copper_NOMNG_8Mb_A2_3.25_0.03.hex -mac=$mac_address

Cold reboot the device.

Reference

Miscellaneous
EPC-R7200-UIO
AIR-020-RS-485
Calculate GPIO value from pin number
Boot Device
Simultaneous flashing to multiple target devices.
Device PID VID
SOC module / Jetpack version / Chip ID / target_board
nVidia : Developer Guide
elinux.org : Jetson L4T BSP_development tips

OTA
nVidia : Over-the-Air Update
How to Use A/B Filesystem Redundancy and OTA with NVIDIA Jetpack
Update Jetson Linux Over-the-Air Using Allxon

Backup / Restore
eLinux:Jetson/Clone