|
|
(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 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 / 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 / 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 : Image version" 00001~99999
| |
− | "-s : 186 - Jetson TX2 NX"
| |
− | " : 194 - Jetson Xavier NX"
| |
− | " : 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 : Build the Kernel]
| |
− | | |
− | == Enter Download Mode ==
| |
− | | |
− | Press following button + 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> : For the EPC-R7200 and AIR-020 project, please add sudo in front of untar command to extracet the image.
| |
− | | |
− | {| border="1" cellpadding="1" cellspacing="1" style="width: 1100px;"
| |
− | |-
| |
− | ! scope="row" |
| |
− | ! 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 : Flash Support]<br/> '''Flash to NVME / SD directly'''<br/> The nVidia provide another flash option : [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" |
| |
− | ! 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 : TX2-NX
| |
− | 194 : XavierNX
| |
− | 210 : 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 : Developer Guide]<br/> [https://elinux.org/Jetson/L4T_BSP_development_tips elinux.org : 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 : Developer Guide]<br/> [https://elinux.org/Jetson/L4T_BSP_development_tips elinux.org : 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 : 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 : 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] |