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

From ESS-WIKI
Jump to: navigation, search
 
(97 intermediate revisions by one other user not shown)
Line 1: Line 1:
== Linux BSP Version ==
 
  
Ubuntu 18.04
+
== Project ==
  
Kernel 4.9.201
+
[[AIR-020|AIR-020]]<br/> [[AIR-030|AIR-030]]<br/> [[EPC-R7000|EPC-R7000]]<br/> [[EPC-R7200|EPC-R7200]]<br/> [[EPC-R7300|EPC-R7300]]
 
 
== 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.
 
 
 
You can get the latest version of advrisc/u18.04-imx8lbv1 Docker image for developing nVidia jetson&nbsp;projects.
 
 
 
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>
 
 
 
== Install Some tools ==
 
<pre>$sudo apt-get install expect
 
</pre>
 
 
 
== Getting Linux Source Code ==
 
<pre>$ export GIT_SSL_NO_VERIFY=1</pre>
 
 
 
EPC-R7200
 
<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/repo init -u https://AIM-Linux@dev.azure.com/AIM-Linux/EPC-R7200/_git/manifests
 
$ ../repo/repo sync
 
</pre>
 
 
 
AIR-020
 
<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/repo init -u https://AIM-Linux@dev.azure.com/AIM-Linux/AIR-020/_git/manifests
 
$ ../repo/repo sync
 
</pre>
 
<div id="gtx-trans" style="position: absolute; left: 590px; top: 447.2px;"><div class="gtx-trans-icon"></div></div>
 
 
 
== Build Image - EPC-R7200 ==
 
 
 
Build Release Image
 
<pre>sudo ./scripts/build_release.sh -s <SOC> -v <VERSION></pre>
 
 
 
Build OTA
 
<pre>sudo ./scripts/build_ota.sh -s <SOC> -v <VERSION></pre>
 
 
 
Build Factory Image
 
<pre>sudo ./scripts/build_release_factory_test.sh -s <SOC> -v <VERSION></pre>
 
Where<pre>"-v : Image version" 00001~99999
 
"-s : 186 - Jetson TX2 NX"
 
"  : 194 - Jetson Xavier NX"
 
"  : 210 - Jetson Nano"</pre>
 
 
 
== Build Image -&nbsp;AIR-020 ==
 
 
 
Xavier NX / TX2 NX
 
<pre>$ cd $TOP
 
$ sudo ./scripts/build.sh -s 186
 
</pre>
 
 
 
Nano
 
<pre>$ cd $TOP
 
$ sudo ./scripts/build.sh -s 210
 
</pre>
 
 
 
== Build Kernel ==
 
 
 
Xavier NX / TX2 NX
 
<pre>$ cd $TOP
 
$ sudo ./scripts/build_kernel.sh -s 186
 
</pre>
 
 
 
Nano
 
<pre>$ cd $TOP
 
$ sudo ./scripts/build_kernel.sh -s 210</pre>
 
 
 
== Enter Download Mode ==
 
 
 
Press follow button + power ON, or
 
 
 
{| border="1" cellspacing="1" cellpadding="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]]]<br/>
 
| style="text-align: center;" | [[File:Air020 recovery button.png|200px|Air020 recovery button.png]]<br/>
 
|}
 
 
 
Enter following command in the device,
 
<pre>$ sudo reboot --force forced-recovery</pre>
 
 
 
== Flash Image ==
 
 
 
Before flashing the image, power off the DUT, press recovery button and power on.
 
 
 
{| border="1" cellspacing="1" cellpadding="1" style="width: 500px;"
 
|-
 
! scope="row" | <br/>
 
! scope="col" style="width: 389px;background-color:rgb(80, 80, 80);color:#FFFFFF" | AIR020 / EPC-R7200
 
|-
 
! scope="row" | Xavier NX<br/>
 
| style="width: 438px;" | $ cd $TOP/Linux_for_Tegra/186/<br/>$ sudo ./flash.sh <span style="color:#0000FF;">jetson-xavier-nx-devkit-emmc</span> mmcblk0p1
 
|-
 
! scope="row" | TX2 NX<br/>
 
| 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<br/>
 
|-
 
! scope="row" | Nano
 
| style="width: 438px;" | $ cd $TOP/Linux_for_Tegra/210/<br/>$ sudo ./flash.sh <span style="color:#0000FF;">jetson-nano-devkit-emmc</span> mmcblk0p1<br/>
 
|}
 
 
 
[AIR-020] [[:File:AIR-020_Flash_to_NVME.docx|Flash to NVME]]
 
<div id="gtx-trans" style="position: absolute; left: 264px; top: 297.515px;"><div class="gtx-trans-icon"></div></div>
 
 
 
== Flash DTB ==
 
 
 
{| border="1" cellspacing="1" cellpadding="1" style="width: 891px;"
 
|-
 
! scope="row" | <br/>
 
! scope="col" style="width: 389px;background-color:rgb(80, 80, 80);color:#FFFFFF" | EPC-R7200<br/>
 
! scope="col" style="width: 438px;background-color:rgb(80, 80, 80);color:#FFFFFF" | AIR-020<br/>
 
|-
 
! scope="row" | Xavier NX<br/>
 
| 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<br/>
 
| 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<br/>
 
| 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<br/>
 
| 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<br/>
 
|-
 
! 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<br/>
 
| 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<br/>
 
|}
 
 
 
== 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.
 
  
 
== Reference ==
 
== Reference ==
  
<span style="color:#006400;">'''Device PID VID'''</span>
+
<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]
 
 
Open a terminal window on your host and enter the command '''''lsusb'''''.<br/>The Jetson module is in Force Recovery mode if you see this message:
 
<pre>Bus <bbb> Device <ddd>: ID 0955: <nnnn> Nvidia Corp.</pre>
 
 
 
Where:
 
  
•&lt;bbb&gt; is any three-digit number<br/>&lt;ddd&gt; is any three-digit number<br/>•&lt;nnnn&gt; is a four-digit number that represents the type of Jetson module:
+
<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]
  
[[File:Nvidia pidvid.png|RTENOTITLE]]
+
<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 04:26, 24 May 2023

Project

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

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