Linux BSP User Guide for jetson series
Contents
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.2 / L4T 35.1.0
$ repo init -u https://AIM-Linux@dev.azure.com/AIM-Linux/risc_nvidia_jetson/_git/manifest -m air030_3510.xml
Jetpack 5.1.1 / L4T 35.3.1
$ repo init -u https://AIM-Linux@dev.azure.com/AIM-Linux/risc_nvidia_jetson_35.3.1/_git/manifest -m air030.xml
Public Board
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 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 34.1.1 public board
sudo ./scripts/build_release.sh -v <VERSION>
Build EPC-R7200 factory test image
sudo ./scripts/build_release_factory_test.sh -s 194 -v 00001
SOP:Factory_Board_Level_Test_for_EPC-R7200.pdf
Image:epcr7200_194_factory_20221130.tar.gz
Build Kernel - AIR-020 / EPC-R7200
sudo ./scripts/build_kernel.sh -s <SOC> -v <VERSION>
Enter Download Mode
Press following button + power ON, or
EPC-R7200 | AIR020 |
] |
Enter following command in the device,
$ sudo reboot --force forced-recovery
Flash Image
Make sure your Host PC has installed following package:
$ sudo apt-get install binutils device-tree-compiler libxml2-utils -y
Before flashing the image, power off the DUT, press recovery button and power on.
MARK : For the EPC-R7200 and AIR-020 project, please add sudo in front of untar command to extracet the image.
EPC-R7200 | AIR-020 | |
---|---|---|
Xavier NX |
$ cd $TOP/Linux_for_Tegra/186/ |
$ 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/ |
$ 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.
Test
Factory Test
$ git clone https://AIM-Linux@dev.azure.com/AIM-Linux/ELAA/_git/advtest-factory
Reference
AIR-030 Development
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
Jetson Module EEPROM Layout
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