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

From ESS-WIKI
Jump to: navigation, search
 
(4 intermediate revisions by 2 users not shown)
Line 2: Line 2:
 
== Project ==
 
== Project ==
  
[[AIR-020|AIR-020]]<br/> [[AIR-030|AIR-030]]<br/> [[EPC-R7200|EPC-R7200]]<br/> [[EPC-R7000|EPC-R7000]]
+
[[AIR-020|AIR-020]]<br/> [[AIR-030|AIR-030]]<br/> [[EPC-R7000|EPC-R7000]]<br/> [[EPC-R7200|EPC-R7200]]<br/> [[EPC-R7300|EPC-R7300]]<br/> [[AFE-R750|AFE-R750]]
 
 
== Linux BSP Version ==
 
 
 
Ubuntu 18.04<br/> Kernel 4.9.201
 
 
 
== Released Image ==
 
 
 
*[[IoTGateway/BSP/Linux/OS_Support_List_Jetpack_4.5.1_L4T_R32.5.1|OS Support List ( Jetpack 4.5.1 / L4T R32.5.1 )]]
 
 
 
== Build Environment on Host ==
 
 
 
Currently, we adopt [https://www.docker.com/ Docker] as build environment.<br/> You can get the latest version of advrisc/u18.04-imx8lbv1 Docker image for developing nVidia jetson&nbsp;projects.<br/> Docker command:
 
<pre>$ docker pull advrisc/u18.04-imx8lbv1</pre>
 
 
 
== Run Docker example ==
 
 
 
Step1 Run docker container (example)
 
<pre>sudo docker run -it --name jetson_linux_risc -v /home/bsp/myLinux:/home/adv/BSP:rw --privileged advrisc/u18.04-imx8lbv1:latest /bin/bash
 
</pre>
 
 
 
Step2 In container, change the user. (example)
 
<pre> adv@7cc0fa834366:~$ sudo chown adv:adv -R BSP
 
</pre>
 
 
 
== Dependncy Library ==
 
 
 
Please install library in the HOST outside of docker if you get <span style="color:#CD0000;">Exec format error</span>.
 
<pre>$sudo apt-get install qemu-user-static
 
</pre>
 
 
 
== Getting Linux Source Code ==
 
<pre>$ export GIT_SSL_NO_VERIFY=1</pre>
 
 
 
'''EPC-R7000'''
 
<pre>$ repo init -u https://AIM-Linux@dev.azure.com/AIM-Linux/EPC-R7200/_git/manifests -m epcr7000.xml
 
</pre>
 
 
 
'''EPC-R7200'''<br/> Jetpack 4.5.1 / L4T 32.5.1
 
<pre>$ 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
 
</pre>
 
 
 
Jetpack 4.6.1 / L4T 32.7.1
 
<pre>$ repo init -u https://AIM-Linux@dev.azure.com/AIM-Linux/EPC-R7200/_git/manifests -m 3271.xml
 
</pre>
 
 
 
'''AIR-020'''<br/> Jetpack 4.5.1 / L4T 32.5.1
 
<pre>$ 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
 
</pre>
 
 
 
Jetpack 4.6.1 / L4T 32.7.1
 
<pre>$ repo init -u https://AIM-Linux@dev.azure.com/AIM-Linux/AIR-020/_git/manifests -m 3271.xml
 
</pre>
 
 
 
'''AIR-030'''<br/> Jetpack 5.0.2&nbsp;/ L4T 35.1.0
 
<pre>$ repo init -u https://AIM-Linux@dev.azure.com/AIM-Linux/risc_nvidia_jetson/_git/manifest -m air030_3510.xml
 
</pre>
 
 
 
Jetpack 5.1.1&nbsp;/ L4T 35.3.1
 
<pre>$ repo init -u https://AIM-Linux@dev.azure.com/AIM-Linux/risc_nvidia_jetson_35.3.1/_git/manifest -m air030.xml
 
</pre>
 
 
 
'''Public Board '''<br/> Jetpack 5.0.1 / L4T 34.1.1
 
<pre>$ repo init -u https://AIM-Linux@dev.azure.com/AIM-Linux/risc_nvidia_jetson/_git/manifest -m 3411.xml
 
</pre>
 
 
 
== Build Image - AIR-020 / EPC-R7200 ==
 
 
 
Build Release Image
 
<pre>sudo ./scripts/build_release.sh -s <SOC> -v <VERSION>
 
Where
 
"-v&nbsp;: Image version" 00001~99999
 
"-s&nbsp;: 186 - Jetson TX2 NX"
 
"  &nbsp;: 194 - Jetson Xavier NX"
 
"  &nbsp;: 210 - Jetson Nano"</pre>
 
 
 
Build 34.1.1 public board
 
<pre>sudo ./scripts/build_release.sh -v <VERSION>
 
</pre>
 
 
 
Build EPC-R7200 factory test image
 
<pre>sudo ./scripts/build_release_factory_test.sh -s 194 -v 00001
 
</pre>
 
 
 
[[:File:Factory_Board_Level_Test_for_EPC-R7200.pdf|SOP:Factory_Board_Level_Test_for_EPC-R7200.pdf]]<br/> [https://www.dropbox.com/s/a6guf2p13dez7mz/epcr7200_194_factory_20221130.tar.gz?dl=0 Image:epcr7200_194_factory_20221130.tar.gz]
 
 
 
== Build Kernel - AIR-020 / EPC-R7200 ==
 
<pre>sudo ./scripts/build_kernel.sh -s <SOC> -v <VERSION></pre>
 
 
 
[https://docs.nvidia.com/jetson/archives/r34.1/DeveloperGuide/text/SD/Kernel/KernelCustomization.html#building-the-kernel nVidia&nbsp;: Build the Kernel]
 
 
 
== Enter Download Mode ==
 
 
 
Press following button +&nbsp;power ON, or
 
 
 
{| border="1" cellpadding="1" cellspacing="1" style="width:500px;"
 
|-
 
| style="width: 389px; background-color: rgb(80, 80, 80); color: rgb(255, 255, 255); text-align: center;" | EPC-R7200
 
| style="width: 389px; background-color: rgb(80, 80, 80); color: rgb(255, 255, 255); text-align: center;" | AIR020
 
|-
 
| style="text-align: center;" | [[File:Epcr7200 recovery button.jpg|200px|Epcr7200 recovery button.jpg]]]
 
| style="text-align: center;" | [[File:Air020 recovery button.png|200px|Air020 recovery button.png]]
 
|}
 
 
 
Enter following command in the device,
 
<pre>$ sudo reboot --force forced-recovery</pre>
 
 
 
== Flash Image ==
 
 
 
Make sure your Host PC has installed following package:
 
<pre>$ sudo apt-get update
 
$ sudo apt-get install binutils device-tree-compiler libxml2-utils -y
 
</pre>
 
 
 
Before flashing the image, power off the DUT, press recovery button and power on.
 
  <span style="color:#FF0000;">'''MARK'''</span> &nbsp;: For the EPC-R7200 and AIR-020 project, please add sudo in front of untar command to extracet&nbsp;the image.
 
 
 
{| border="1" cellpadding="1" cellspacing="1" style="width: 1100px;"
 
|-
 
! scope="row" | &nbsp;
 
! scope="col" style="width: 389px;background-color:rgb(80, 80, 80);color:#FFFFFF" | EPC-R7200
 
! scope="col" style="width: 438px;background-color:rgb(80, 80, 80);color:#FFFFFF" | AIR-020
 
|-
 
! scope="row" | Xavier NX
 
| style="width: 700px;" |
 
$ cd $TOP/Linux_for_Tegra/186/<br/> $ sudo ./flash.sh <span style="color:#0000FF;">jetson-xavier-nx-devkit-emmc</span> mmcblk0p1
 
 
 
| style="width: 438px;" | $ cd $TOP/Linux_for_Tegra/194/<br/> $ sudo ./flash.sh <span style="color:#0000FF;">jetson-xavier-nx-devkit-emmc</span> mmcblk0p1
 
|-
 
! scope="row" | TX2 NX
 
| style="width: 700px;" | $ cd $TOP/Linux_for_Tegra/186/<br/> $ sudo ./flash.sh <span style="color:#0000FF;">jetson-xavier-nx-devkit-tx2-nx</span> mmcblk0p1
 
| style="width: 438px;" | $ cd $TOP/Linux_for_Tegra/186/<br/> $ sudo ./flash.sh <span style="color:#0000FF;">jetson-xavier-nx-devkit-tx2-nx</span> mmcblk0p1
 
|-
 
! scope="row" | Nano
 
| style="width: 700px;" |
 
$ cd $TOP/Linux_for_Tegra/210/<br/> $ sudo ./flash.sh <span style="color:#0000FF;">jetson-nano-devkit-emmc</span> mmcblk0p1
 
 
 
| style="width: 438px;" | $ cd $TOP/Linux_for_Tegra/210/<br/> $ sudo ./flash.sh <span style="color:#0000FF;">jetson-nano-devkit-emmc</span> mmcblk0p1
 
|}
 
 
 
'''AIR-030'''
 
<pre>sudo ./flash.sh -d rootfs/boot/tegra234-air030.dtb jetson-agx-orin-devkit mmcblk0p1
 
</pre>
 
 
 
[https://docs.nvidia.com/jetson/archives/r34.1/DeveloperGuide/text/SD/FlashingSupport.html nVidia&nbsp;: Flash Support]<br/> '''Flash to NVME / SD directly'''<br/> The nVidia provide another flash option&nbsp;: [https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-3261/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/flashing.html#wwpID0E0PI0HA Flashing with initrd]<br/> Applies to: <u>Jetson Xavier NX and Jetson AGX Xavier series only</u>
 
 
 
== Flash DTB ==
 
 
 
{| border="1" cellpadding="1" cellspacing="1" style="width: 891px;"
 
|-
 
! scope="row" | &nbsp;
 
! scope="col" style="width: 389px;background-color:rgb(80, 80, 80);color:#FFFFFF" | EPC-R7200
 
! scope="col" style="width: 438px;background-color:rgb(80, 80, 80);color:#FFFFFF" | AIR-020
 
|-
 
! scope="row" | Xavier NX
 
| style="width: 389px;" | $ cd $TOP/Linux_for_Tegra/186/<br/> $ sudo ./flash.sh -r -k kernel-dtb <span style="color:#0000FF;">xavier-nx-epcr7200</span> mmcblk0p1
 
| style="width: 438px;" | $ cd $TOP/Linux_for_Tegra/186/<br/> $ sudo ./flash.sh -r -k kernel-dtb <span style="color:#0000FF;">jetson-xavier-nx-devkit-emmc</span> mmcblk0p1
 
|-
 
! scope="row" | TX2 NX
 
| style="width: 389px;" | $ cd $TOP/Linux_for_Tegra/186/<br/> $ sudo ./flash.sh -r -k kernel-dtb <span style="color:#0000FF;">tx2-nx-epcr7200</span> mmcblk0p1
 
| style="width: 438px;" | $ cd $TOP/Linux_for_Tegra/186/<br/> $ sudo ./flash.sh -r -k kernel-dtb <span style="color:#0000FF;">jetson-xavier-nx-devkit-tx2-nx</span> mmcblk0p1
 
|-
 
! scope="row" | Nano
 
| style="width: 389px;" | $ cd $TOP/Linux_for_Tegra/210/<br/> $ sudo ./flash.sh -r -k DTB <span style="color:#0000FF;">nano-epcr7200</span> mmcblk0p1
 
| style="width: 438px;" | $ cd $TOP/Linux_for_Tegra/210/<br/> $ sudo ./flash.sh -r -k kernel-dtb <span style="color:#0000FF;">jetson-nano-devkit-emmc</span> mmcblk0p1
 
|}
 
 
 
== Flash Mac Address ==
 
 
 
=== <span style="color:#0000CD;">GBE in eeprom</span> ===
 
<pre>$ sudo ./eeprom $SOC $mac_address</pre>
 
 
 
Where SOC
 
<pre>  186&nbsp;: TX2-NX
 
  194&nbsp;: XavierNX
 
  210&nbsp;: Nano
 
</pre>
 
 
 
=== <span style="color:#0000CD;">Intel I210</span> ===
 
<pre>$ sudo -s
 
$ BDF=`lspci | grep 210 | awk '{print $1}'`
 
$ setpci -s $BDF COMMAND=0007
 
</pre>
 
 
 
Get NIC
 
<pre>$./EepromAccessTool</pre>
 
 
 
Flash I210 address with mac_address = D4E5F6123456 ( If mac address = D4:E5:F6:12:34:56 )
 
<pre>$ ./EepromAccessTool -nic=<NIC> -f=Dev_Start_I210_Copper_NOMNG_8Mb_A2_3.25_0.03.hex -mac=$mac_address</pre>
 
 
 
Cold reboot the device.
 
 
 
== Test ==
 
 
 
Factory Test
 
<pre>$ git clone https://AIM-Linux@dev.azure.com/AIM-Linux/ELAA/_git/advtest-factory
 
</pre>
 
  
 
== Reference ==
 
== Reference ==
  
[[AIR_030_Development|AIR-030 Development]]<br/> <span style="font-size:medium;"><span style="color:#006400;">'''Miscellaneous'''</span> </span><br/> [[EPC-R7200-UIO|EPC-R7200-UIO]]<br/> [[Jetson_Boot_Device|Boot Device]]<br/> [[Jetson_Simultaneous_flashing_to_multiple_target_devices.|Simultaneous flashing to multiple target devices.]]<br/> [[Jetson_Device_PID_VID|Device PID VID]]<br/> [[NVidia_check_soc_jetpack|SOC module / Jetpack version / Chip ID / target_board]]<br/> [https://docs.nvidia.com/jetson/archives/r34.1/DeveloperGuide/index.html nVidia&nbsp;: Developer Guide]<br/> [https://elinux.org/Jetson/L4T_BSP_development_tips elinux.org&nbsp;: Jetson L4T BSP_development tips]<br/> [https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-3261/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/jetson_eeprom_layout.html Jetson Module EEPROM Layout]
+
<span style="font-size:medium;"><span style="color:#006400;">'''Miscellaneous'''</span> </span><br/> [[Jetson_Boot_Device|Boot Device]]<br/> [[Jetson_Simultaneous_flashing_to_multiple_target_devices.|Simultaneous flashing to multiple target devices.]]<br/> [[Jetson_Device_PID_VID|Device PID VID]]<br/> [[NVidia_check_soc_jetpack|SOC module / Jetpack version / Chip ID / target_board]]<br/> [https://docs.nvidia.com/jetson/archives/r34.1/DeveloperGuide/index.html nVidia&nbsp;: Developer Guide]<br/> [https://elinux.org/Jetson/L4T_BSP_development_tips elinux.org&nbsp;: Jetson L4T BSP_development tips]<br/> [https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-3261/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/jetson_eeprom_layout.html Jetson Module EEPROM Layout]
  
 
<span style="font-size:medium;"><span style="color:#006400;">'''OTA'''</span></span><br/> [https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-3261/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/updating_jetson_and_host.html nVidia&nbsp;: Over-the-Air Update]<br/> [https://developer.ridgerun.com/wiki/index.php/How_to_Use_A/B_Filesystem_Redundancy_and_OTA_with_NVIDIA_Jetpack How to Use A/B Filesystem Redundancy and OTA with NVIDIA Jetpack]<br/> [https://wiki.seeedstudio.com/Update-Jetson-Linux-OTA-Using-Allxon/ Update Jetson Linux Over-the-Air Using Allxon]
 
<span style="font-size:medium;"><span style="color:#006400;">'''OTA'''</span></span><br/> [https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-3261/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/updating_jetson_and_host.html nVidia&nbsp;: Over-the-Air Update]<br/> [https://developer.ridgerun.com/wiki/index.php/How_to_Use_A/B_Filesystem_Redundancy_and_OTA_with_NVIDIA_Jetpack How to Use A/B Filesystem Redundancy and OTA with NVIDIA Jetpack]<br/> [https://wiki.seeedstudio.com/Update-Jetson-Linux-OTA-Using-Allxon/ Update Jetson Linux Over-the-Air Using Allxon]
  
 
<span style="font-size:medium;"><span style="color:#006400;">'''Backup / Restore'''</span></span><br/> [https://elinux.org/Jetson/Clone eLinux:Jetson/Clone]
 
<span style="font-size:medium;"><span style="color:#006400;">'''Backup / Restore'''</span></span><br/> [https://elinux.org/Jetson/Clone eLinux:Jetson/Clone]

Latest revision as of 07:33, 11 December 2024

Project

AIR-020
AIR-030
EPC-R7000
EPC-R7200
EPC-R7300
AFE-R750

Reference

Miscellaneous
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