====== Jetson AGX Orin Development ======
==== Download SDKmanager in Host(X86 PC) ====
https://developer.nvidia.com/sdk-manager\\
==== Orin AGX Platform Adaptation and Bring-Up Guide ====
[[https://docs.nvidia.com/jetson/archives/r35.4.1/DeveloperGuide/text/HR/JetsonModuleAdaptationAndBringUp/JetsonAgxOrinSeries.html#hr-jetsonmoduleadaptationandbringup-jetsonagxorinseries|Orin AGX Platform Adaptation and Bring-Up Guide]]
==== Console mode flash command ====
Before JetPack 5.1.1\\
Jetson Orin module to be emulated Flashing command\\
Jetson AGX Orin 64GB\\ ''sudo ./flash.sh jetson-agx-orin-devkit mmcblk0p1''\\
Jetson AGX Orin 32GB\\ ''sudo ./flash.sh jetson-agx-orin-devkit-as-jao-32gb mmcblk0p''\\
Jetson Orin NX 16GB\\ ''sudo ./flash.sh jetson-agx-orin-devkit-as-nx16gb mmcblk0p1''\\
Jetson Orin NX 8GB\\ ''sudo ./flash.sh jetson-agx-orin-devkit-as-nx8gb mmcblk0p1''\\
Jetson Orin Nano 8GB*\\ ''sudo ./flash.sh jetson-agx-orin-devkit-as-nano8gb mmcblk0p1''\\
Jetson Orin Nano 4GB\\ ''sudo ./flash.sh jetson-agx-orin-devkit-as-nano4gb mmcblk0p1''\\
After JetPack 5.1.2\\
==== Flash AGX ORIN Development Kit ====
sudo ./flash.sh jetson-agx-orin-devkit internal
==== Build Kernel ====
export CROSS_COMPILE_AARCH64_PATH=$HOME/l4t-gcc/
export CROSS_COMPILE_AARCH64=$HOME/l4t-gcc/bin/aarch64-buildroot-linux-gnu-
cd ~/workspace/NX/Linux_for_Tegra/source/public
mkdir kernel_out
./nvbuild.sh -o $PWD/kernel_out
cd ../../
./fl.sh
==== Install Vscode on Target Device ====
git clone https://github.com/JetsonHacksNano/installVSCode.git
cd installVSCode
./installVSCode.sh
./installVSCodeWithPython.sh
code --> run vscode from console mode
Jetpack 5.x會有無法啟動的問題
安裝後執行以下程式碼即可啟用(參考來源)
code %%--%%no-sandbox
==== Install Chromium ====
search ubuntu SW "chromium"
==== Install JetPACK ====
cat /etc/nv_tegra_release
sudo apt update
sudo apt dist-upgrade
sudo reboot
sudo apt install nvidia-jetpack
==== Install JTOP ====
sudo apt install python3-pip
sudo pip3 install jetson-stats
sudo systemctl restart jtop.service
sudo jtop
jetson_release -->命令显示NVIDIA Jetson的状态和所有信息
minicom -D /dev/ttyACM0\\
==== Setting CPU clock to maximum ====
Setting AGX ORIN development kit Power mode at the upper right corner
MAXN 50W 30W 15W
If you want to run CPU maximum frequency\\
$sudo jetson_clocks\\
Using Jetson Power GUI\\
https://developer.nvidia.com/deepstream-getting-started\\
https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_Quickstart.html#jetson-setup\\
==== Deepstream ====
/opt/nvidia/deepstream/deepstream-6.3/samples\\
$ sudo apt install \
libssl1.1 \
libgstreamer1.0-0 \
gstreamer1.0-tools \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly \
gstreamer1.0-libav \
libgstreamer-plugins-base1.0-dev \
libgstrtspserver-1.0-0 \
libjansson4 \
libyaml-cpp-dev
=== 1. Clone the librdkafka repository from GitHub: ===
git clone https://github.com/edenhill/librdkafka.git
=== 2. Configure and build the library: ===
cd librdkafka
git reset --hard 7101c2310341ab3f4675fc565f64f0967e135a6a
./configure
make
sudo make install
=== 3. Get deepstream-6.3_6.3.0-1_arm64.deb ===
[[https://catalog.ngc.nvidia.com/orgs/nvidia/resources/deepstream/files?version=6.3|Download deepstream-6.3_6.3.0-1_arm64.deb ]]
Get deepstream-6.3_6.3.0-1_arm64.deb for Jetson not to download for x86\\
sudo apt install ./deepstream-6.3_6.3.0-1_arm64.deb
=== 4. Copy the generated libraries to the deepstream directory: ===
sudo mkdir -p /opt/nvidia/deepstream/deepstream-6.3/lib
sudo cp /usr/local/lib/librdkafka* /opt/nvidia/deepstream/deepstream-6.3/lib
==== Running deepstreaming demo ====
sudo deepstream-app -c /opt/nvidia/deepstream/deepstream-6.3/samples/configs/deepstream-app/source30_1080p_dec_infer-resnet_tiled_display_int8.txt
sudo deepstream-app -c /opt/nvidia/deepstream/deepstream-6.3/samples/configs/deepstream-app/source30_1080p_dec_preprocess_infer-resnet_tiled_display_int8.txt
sudo deepstream-app -c /opt/nvidia/deepstream/deepstream-6.3/samples/configs/deepstream-app/source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.txt
XXXX sudo deepstream-app -c /opt/nvidia/deepstream/deepstream-6.3/samples/configs/deepstream-app/source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8_gpu1.txt
sudo deepstream-app -c /opt/nvidia/deepstream/deepstream-6.3/samples/configs/deepstream-app/source1_usb_dec_infer_resnet_int8.txt
sudo deepstream-app -c /opt/nvidia/deepstream/deepstream-6.3/samples/configs/deepstream-app/source2_1080p_dec_infer-resnet_demux_int8.txt
sudo deepstream-app -c /opt/nvidia/deepstream/deepstream-6.3/samples/configs/deepstream-app/source4_1080p_dec_infer-resnet_tracker_sgie_tiled_display_int8.yml
sudo deepstream-app -c /opt/nvidia/deepstream/deepstream-6.3/samples/configs/deepstream-app/source30_1080p_dec_infer-resnet_tiled_display_int8.yml
sudo deepstream-app -c /opt/nvidia/deepstream/deepstream-6.3/samples/configs/deepstream-app/source4_1080p_dec_preprocess_infer-resnet_preprocess_sgie_tiled_display_int8.txt
sudo deepstream-app -c /opt/nvidia/deepstream/deepstream-6.3/samples/configs/deepstream-app/source2_dewarper_test.txt
==== CPU Stress Test ====
sudo apt update
sudo apt install cuda-toolkit-11-4
sudo apt install stress
sudo apt -y install pip
sudo apt -y install python3-pip
sudo -H pip install -U jetson-stats
compiled jetson-gpu-burn source code\\
git clone https://github.com/anseeto/jetson-gpu-burn.git
cd jetson-gpu-burn
make
Using stress to run CPU loading\\
Using gpu_burn to run GPU loading\\
running CPU:8 cores\\
stress -c 8 &
running CPU:12 cores\\
stress -c 12 &
running GPU maximum loading:\\
./gpu_burn 1000
==== Fan Control ====
/etc/nvfancontrol.conf
FAN_DEFAULT_PROFILE cool \\
Restart the service \\
sudo systemctl restart nvfancontrol
\\
==== Power Mode Setting ====
Nvidia Power Model Tool to config ID=0 “MAXN” \\
sudo nvpmodel -m 0(MAXN)/1(15W)/2(30W)/3(50W)
Set static max frequency to CPU, GPU and EMC clocks \\
sudo jetson_clocks
\\
==== AGX Stable Diffusion ====
[[https://huggingface.co/CompVis/stable-diffusion-v-1-4-original|Download sd-v1-4.ckpt]]
git clone https://github.com/chitoku/stable-diffusion
cd stable-diffusion
git checkout jetson
cp ~/Downloads/sd-v1-4.ckpt /home/aopen/stable-diffusion/models/ldm/stable-diffusion-v1/
./docker/run.sh
python3 scripts/txt2img.py --prompt "Robots marching down a street in Japanese city" --plms
==== JETSON AGX Orin performance test ====
https://github.com/NVIDIA-AI-IOT/jetson_benchmarks
git clone https://github.com/NVIDIA-AI-IOT/jetson_benchmarks.git\\
cd jetson_benchmarks\\
mkdir models\\
sudo sh install_requirements.sh\\
python3 utils/download_models.py --all --csv_file_path ./benchmark_csv/orin-benchmarks.csv --save_dir /home/aopen/jetson_benchmarks/models\\
sudo python3 benchmark.py --all --csv_file_path benchmark_csv/orin-benchmarks.csv --model_dir /home/aopen/jetson_benchmarks/models\\
==== Where is DTSI file ====
/home/ubuntu/workspace/dev2725/Linux_for_Tegra/source/public/hardware/nvidia/platform/t23x
==== AGX ORIN Development Kit Flash flow ====
sudo ./flash.sh jetson-agx-orin-devkit internal
flash.sh # Num 1688 code start & entry
jetson-agx-orin-devkit.conf --> Define the DTB & SOM
p3701.conf.common --> SOM Define
==== Disable Board ID EEPROM ====
File Location :
Linux_for_Tegra/bootloader/tegra234-mb2-bct-common.dtsi (the MB2 BCT file)
Modification:
- cvb_eeprom_read_size = <0x100>
+ cvb_eeprom_read_size = <0x0>
{{:carrier_board_config.png|}}
==== Modified ====
/home/ubuntu/workspace/dev2725o/Linux_for_Tegra/bootloader/t186ref/BCT/tegra234-mb2-bct-scr-p3701-0000.dts
/home/ubuntu/workspace/dev2725o/Linux_for_Tegra/bootloader/tegra234-mb2-bct-common.dtsi
/home/ubuntu/workspace/dev2725o/Linux_for_Tegra/source/public/hardware/nvidia/platform/t23x/common/kernel-dts/t234-common-cvm/tegra234-cvm-p3701.dtsi --> Serial port
/home/ubuntu/workspace/dev2725o/Linux_for_Tegra/source/public/hardware/nvidia/platform/t23x/concord/kernel-dts/tegra234-p3701-0000-p3737-0000.dts --> hdmi / hpd pin
/home/ubuntu/workspace/dev2725o/Linux_for_Tegra/bootloader/tegra234-mb2-bct-common.dtsi --> eeprom size 0
/home/ubuntu/workspace/dev2725o/Linux_for_Tegra/bootloader/tegra234-mb1-bct-gpio-p3701-0000-a04.dtsi --> GPIO setting
/home/ubuntu/workspace/dev2725o/Linux_for_Tegra/bootloader/t186ref/BCT/tegra234-mb1-bct-pinmux-p3701-0000-a04.dtsi --> pinmux
/home/ubuntu/workspace/dev2725o/Linux_for_Tegra/bootloader/t186ref/BCT/tegra234-mb1-bct-padvoltage-p3701-0000-a04.dtsi --> padvoltage
/home/ubuntu/workspace/dev2725o/Linux_for_Tegra/p3701.conf.common --> process_chip_sku_version() / ODMDATA
LAN
/home/ubuntu/workspace/dev2725o/Linux_for_Tegra/p3701.conf.common
ODMDATA="gbe-uphy-config-22,hsstp-lane-map-3,nvhs-uphy-config-0,hsio-uphy-config-16,gbe0-enable-10g";
/home/ubuntu/workspace/dev2725o/Linux_for_Tegra/source/public/hardware/nvidia/platform/t23x/concord/kernel-dts/cvb/tegra234-p3737-pcie.dtsi
/DonRtest
pcie@14180000 {
status = "okay";
phys = <&p2u_hsio_0>;
phy-names = "p2u-0";
};
/home/ubuntu/workspace/dev2725o/Linux_for_Tegra/source/public/kernel/kernel-5.10/arch/arm64/configs/defconfig
# TPM
CONFIG_HW_RANDOM_TPM=y
CONFIG_ARCH_BCM2835=y
CONFIG_HW_RANDOM_BCM2835=m
CONFIG_SPI_BCM2835=y
CONFIG_SECURITYFS=y
CONFIG_TCG_TPM=y
CONFIG_TCG_TIS_CORE=y
CONFIG_TCG_TIS_SPI=y
CONFIG_DEVPORT=y
CONFIG_HW_RANDOM=m
==== Check HDMI Status ====
xrandr --output HDMI-0 --mode --rate
ex:
xrandr --output HDMI-0 --mode 1280x720 --rate 60
===== Pinmux Changes =====
If your carrier board schematic differs from that of the reference carrier board in Jetson Xavier NX Developer Kit, you must change the pinmux configuration applied by the software.
To define your board’s pinmux configuration, download the Jetson Xavier NX pinmux table from the Jetson Download Center. Be sure to get the right version of the table for your SOM.
The pinmux table is a spreadsheet that:
* Shows the locations and default pinmux settings
* Acts as a data source for software that defines the pinmux settings in the source code or device tree
You must customize the spreadsheet for the configuration of your board, then convert the .dtsi file generated by Excel to a .cfg file. For instructions, see the README file at:
Linux_for_Tegra/kernel/pinmux/t19x/
You must perform the same conversion for gpio.dtsi and padvoltage.dtsi.
[[https://developer.nvidia.com/embedded/downloads#?search=Pin%20and%20Function%20Names%20Guide|pinmux table ]]
===== GPIO Changes =====
If you designed your own carrier board, to translate from SOM connector pins to actual GPIO numbers you must understand the GPIO mapping formula below. The translated GPIO numbers can be controlled by the driver.
To check a GPIO number
This example procedure checks the GPIO number of signal name SPI0_CS1.
- Open the Jetson AGX Orin pinmux table. (See Pinmux Changes, above.)
- Search the table for SPI0_CS1.
- Confirm that the Customer Usage field contains the GPIO name GPIO3_PZ.07.
- Search PZ.07 using the following command:
cat /sys/kernel/debug/gpio | grep PZ.07