转载一篇介绍得不错的文章~
原文链接:https://blog.csdn.net/weifengdq/article/details/124412858
前言
由于 Orin 的 数据手册, 参考手册, 载板原理图, Pinmux 等文档, 还有Jetpack 5.0 开发者预览版都出来了, 所以是可以着手进行开发或者测试的:
JETPACK SDK 5.0 DEVELOPER PREVIEW, https://developer.nvidia.com/jetpack-sdk-50dp
Jetson Download Center, https://developer.nvidia.com/embedded/downloads
开机设置
插上原装 90W TypeC电源, DP口接上显示器, 鼠标键盘, 按开机键配置, 用户名这里填上: orin
USB Type C联网
祖传的 192.168.55.1 口, 插上盒子里附赠的USB Type C线, 参考 README-usb-dev-mode.txt, 可以把PC的Ubuntu20的网络通过USB共享给Orin:
# PC
$ ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.65.128 netmask 255.255.255.0 broadcast 192.168.65.255
$ sudo su
$ echo 1 > /proc/sys/net/ipv4/ip_forward
$ iptables -t nat -A POSTROUTING -o ens33 -j SNAT --to 192.168.65.128
$ ssh orin@192.168.55.1
$ ping www.baidu.com
可以用手机USB共享网络给Orin, 有线联网, WiFi联网等.
10G以太网口静态IP设置
天道好轮回, netplan
绕过谁, 这个eth0的静态IP(192.168.6.250)反而坑了不少时间…
$ sudo apt install -y netplan.io
$ sudo vi /etc/netplan/01-network-manager-all.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses:
- 192.168.6.250/24
gateway4: 192.168.6.1
nameservers:
addresses: [114.114.114.114, 8.8.8.8]
$ sudo netplan generate
$ sudo netplan apply
apt 和 pypi 清华源
ubuntu | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
$ sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
# 这里 ubuntu 改为 ubuntu-ports
$ sudo vi /etc/apt/sources.list
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse
$ sudo apt update
pypi | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
# 安装pip
$ sudo apt install -y python3-pip
# 升级pip
$ python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
# pypi 设清华源为默认
$ python3 -m pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
小版本系统升级
# r34.0 => r34.1
# $ sudo vi /etc/apt/sources.list.d/nvidia-l4t-apt-source.list
# deb https://repo.download.nvidia.com/jetson/common r34.1 main
# deb https://repo.download.nvidia.com/jetson/t234 r34.1 main
$ sudo apt -y dist-upgrade
CPU CoreMark – Orin vs Xavier vs TX2 vs RP4
人们对CPU的性能渴望可能更甚于GPU, 很多自动驾驶公司拿两块Xavier跑都欲求不满, 那Orin的CPU又能好多少呢?
电源足够, nvpmodel设置不限制功耗, 上 CoreMark 1.0 跑分对比
Orin单核的主频降了一点, 但是还是和Xavier单核打平, 由于多了4个CPU核, CPU性能比Xavier算涨了50%吧.
过程:
# 原装 90W TypeC 电源适配器
# 不限制功耗
$ sudo nvpmodel -m 0
$ git clone https://github.com/eembc/coremark.git
$ cd coremark
$ mkdir orin && cp linux/* orin
$ vi orin/core_portme.mak
include posix/core_portme.mak
CC = aarch64-linux-gnu-gcc
XCFLAGS="other flags"
LFLAGS_END += -lpthread
# 单核跑分 19990
$ make PORT_DIR=orin XCFLAGS="-DMULTITHREAD=1 -DUSE_PTHREAD"
$ cat run1.log
2K performance run parameters for coremark.
CoreMark Size : 666
Total ticks : 15007
Total time (secs): 15.007000
Iterations/Sec : 19990.671020
Iterations : 300000
Compiler version : GCC9.4.0
Compiler flags : -O2 -DMULTITHREAD=1 -DUSE_PTHREAD -DPERFORMANCE_RUN=1 -lrt -lpthread
Memory location : Please put data memory location here
(e.g. code in flash, data on heap etc)
seedcrc : 0xe9f5
[0]crclist : 0xe714
[0]crcmatrix : 0x1fd7
[0]crcstate : 0x8e3a
[0]crcfinal : 0xcc42
Correct operation validated. See README.md for run and reporting rules.
CoreMark 1.0 : 19990.671020 / GCC9.4.0 -O2 -DMULTITHREAD=1 -DUSE_PTHREAD -DPERFORMANCE_RUN=1 -lrt -lpthread / Heap
# 多核跑分 224173
$ make clean
$ make PORT_DIR=orin XCFLAGS="-DMULTITHREAD=12 -DUSE_PTHREAD"
$ cat run1.log
2K performance run parameters for coremark.
CoreMark Size : 666
Total ticks : 16059
Total time (secs): 16.059000
Iterations/Sec : 224173.360732
Iterations : 3600000
Compiler version : GCC9.4.0
Compiler flags : -O2 -DMULTITHREAD=12 -DUSE_PTHREAD -DPERFORMANCE_RUN=1 -lrt -lpthread
Parallel PThreads : 12
Memory location : Please put data memory location here
(e.g. code in flash, data on heap etc)
seedcrc : 0xe9f5
[0]crclist : 0xe714
[1]crclist : 0xe714
[2]crclist : 0xe714
[3]crclist : 0xe714
[4]crclist : 0xe714
[5]crclist : 0xe714
[6]crclist : 0xe714
[7]crclist : 0xe714
[8]crclist : 0xe714
[9]crclist : 0xe714
[10]crclist : 0xe714
[11]crclist : 0xe714
[0]crcmatrix : 0x1fd7
[1]crcmatrix : 0x1fd7
[2]crcmatrix : 0x1fd7
[3]crcmatrix : 0x1fd7
[4]crcmatrix : 0x1fd7
[5]crcmatrix : 0x1fd7
[6]crcmatrix : 0x1fd7
[7]crcmatrix : 0x1fd7
[8]crcmatrix : 0x1fd7
[9]crcmatrix : 0x1fd7
[10]crcmatrix : 0x1fd7
[11]crcmatrix : 0x1fd7
[0]crcstate : 0x8e3a
[1]crcstate : 0x8e3a
[2]crcstate : 0x8e3a
[3]crcstate : 0x8e3a
[4]crcstate : 0x8e3a
[5]crcstate : 0x8e3a
[6]crcstate : 0x8e3a
[7]crcstate : 0x8e3a
[8]crcstate : 0x8e3a
[9]crcstate : 0x8e3a
[10]crcstate : 0x8e3a
[11]crcstate : 0x8e3a
[0]crcfinal : 0xcc42
[1]crcfinal : 0xcc42
[2]crcfinal : 0xcc42
[3]crcfinal : 0xcc42
[4]crcfinal : 0xcc42
[5]crcfinal : 0xcc42
[6]crcfinal : 0xcc42
[7]crcfinal : 0xcc42
[8]crcfinal : 0xcc42
[9]crcfinal : 0xcc42
[10]crcfinal : 0xcc42
[11]crcfinal : 0xcc42
Correct operation validated. See README.md for run and reporting rules.
CoreMark 1.0 : 224173.360732 / GCC9.4.0 -O2 -DMULTITHREAD=12 -DUSE_PTHREAD -DPERFORMANCE_RUN=1 -lrt -lpthread / Heap / 12:PThreads
# 有一次是 225946
EMMC 测速 – Xavier EMMC/UFS vs Orin
对比如下
说明:
小容量(2GB以下)的速度其实算是和内存缓存交互的速度, 算不得磁盘的真实性能, 很多较老的 SSD 2G缓存写爆后瞬间变身 SD 卡读写速度
数据量是随便选的
Orin 测试46GB写入后, 只有2GB空间了, 大概触犯了 Swap, 让CPU很为难才导致性能暴跌吧
经常碰到有意思的问题, 比如想看看哪里出了问题, 就录个包, 动辄几个G甚至几十G, 结果越录效果越差, 系统甚至都罢工了
其实还是建议录包的时候直接搞一条商业级的 980 NVME SSD 或者 PCIe 4.0 的 980 pro, 2~7TB/s的读写速度不香么
简单粗暴的测试过程:
#############################################################
$ time dd if=/dev/zero of=./ssd_speed_test bs=8k count=200000
200000+0 records in
200000+0 records out
1638400000 bytes (1.6 GB, 1.5 GiB) copied, 1.9134 s, 856 MB/s
real 0m1.932s
user 0m0.032s
sys 0m1.880s
$ rm -f ssd_speed_test
#############################################################
$ time dd if=/dev/zero of=./ssd_speed_test bs=8k count=1000000
1000000+0 records in
1000000+0 records out
8192000000 bytes (8.2 GB, 7.6 GiB) copied, 20.5165 s, 399 MB/s
real 0m20.520s
user 0m0.185s
sys 0m12.876s
$ rm -f ssd_speed_test
#############################################################
$ time dd if=/dev/zero of=./ssd_speed_test bs=8k count=6000000
6000000+0 records in
6000000+0 records out
49152000000 bytes (49 GB, 46 GiB) copied, 2310.54 s, 21.3 MB/s
real 38m30.540s
user 0m2.705s
sys 2m39.373s
$ time dd if=./ssd_speed_test of=/dev/null bs=8k count=6000000
6000000+0 records in
6000000+0 records out
49152000000 bytes (49 GB, 46 GiB) copied, 454.229 s, 108 MB/s
real 7m34.881s
user 0m2.445s
sys 0m58.888s
$ df -HT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mmcblk0p1 ext4 61G 56G 2.7G 96% /
none devtmpfs 16G 0 16G 0% /dev
tmpfs tmpfs 17G 54k 17G 1% /dev/shm
tmpfs tmpfs 3.3G 28M 3.2G 1% /run
tmpfs tmpfs 5.3M 4.1k 5.3M 1% /run/lock
tmpfs tmpfs 17G 0 17G 0% /sys/fs/cgroup
tmpfs tmpfs 3.3G 8.2k 3.3G 1% /run/user/1000
tmpfs tmpfs 3.3G 17k 3.3G 1% /run/user/124
$ rm -f ssd_speed_test
grabserial 开机时间测试
连上Orin的MicroUSB
Windows上显示四个串口虚拟出来四个调试串口, COM19可以登录, 并且是调试串口(40Pin排针左边的TypeC虚拟出的COM4也可以登录, 但是开机不打印调试信息)
Linux上显示
$ ls /dev/ttyACM*
/dev/ttyACM0 /dev/ttyACM1 /dev/ttyACM2 /dev/ttyACM3
其中, /dev/ttyACM0
为调试串口, 可以用minicom查看
$ sudo apt install minicom
$ sudo minicom -D /dev/ttyACM0
# Ctrl+ A, Z, 按Q退出
可以命令行对Orin进行 Recovery, PowerOff, PowerOn, Reset 等, 限于评估板(有FTDI芯片)
Board Automation — Jetson LinuxDeveloper Guide 34.1 documentation (nvidia.com)
众所周知, dmesg那个并不是开机时间. 接下来用 grabserial 测试真实的开机时间
# 从松开reset到jetson login 共34.4s
$ sudo grabserial -d /dev/ttyACM0 -b 115200 -t
[0.000000 0.000000]
[0.000124 0.000124] [0000.068] I> MB1 (version: 0.11.0.0-t234-54845784-7fb1fa27)
[0.005015 0.004891] [0000.073] I> t234-A01-0-Silicon (0x12347) Prod
[0.006414 0.001399] [0000.077] I> Boot-mode : Coldboot
[0.011361 0.004947] [0000.080] I> Emulation:
[0.011916 0.000555] [0000.083] I> Entry timestamp: 0x00000000
...
[25.248113 0.057498] [ 11.467200] using random self ethernet address
[25.248853 0.000740] [ 11.467344] using random host ethernet address
[34.435111 9.186258]
[34.435163 0.000052] Ubuntu 20.04.4 LTS jetson ttyTCU0
[34.435660 0.000498]
[34.435700 0.000039] jetson login:
UEFI
Jetpack 5.0 从之前的CBoot改成了UEFI, 机翻自官网的描述:
支持的启动设备和默认启动顺序:
操作系统启动支持从 eMMC/SD/UFS/NvME/USB(仅限 T194)。在默认启动顺序中,可移动设备 (SD/USB) 优先于不可移动设备 (eMMC/NvME/UFS) 设备。
如何在UEFI中选择启动设备?
当提示“按 ESC 获取启动选项”时,用户可以转到 UEFI 菜单。从UEFI菜单的登录页面中,导航到“启动管理器”,其中列出了所有支持的启动选项。用户可以从此列表中选择一个选项。
如何自定义默认启动顺序?
当提示“按 ESC 获取启动选项”时,用户可以转到 UEFI 菜单。从UEFI菜单的登录页面中,导航到“启动维护管理器”->“启动选项”->“更改启动顺序”。可以在此位置更改启动顺序。
在串口终端里直接测试的, 串口反应较慢, 不知道有没有接显示器的:
出现上图这个, 按ESC进入boot配置(每步操作顿一顿, 不要慌, 115200bps毕竟特别慢)
先进入上图的Device Manager
Boot Manager
Boot Maintenance Manager
可以改 Time-out, Boot Options 里面可以改启动顺序
系统探索
Ubuntu20, 5.10, 这很Nice
# 64GB Flash + 32GB RAM
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.4 LTS
Release: 20.04
Codename: focal
$ uname -a
Linux jetson 5.10.65-tegra #1 SMP PREEMPT Tue Mar 15 00:53:43 PDT 2022 aarch64 aarch64 aarch64 GNU/Linux
$ lscpu
Architecture: aarch64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 12
On-line CPU(s) list: 0-11
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 3
Vendor ID: ARM
Model: 1
Model name: ARMv8 Processor rev 1 (v8l)
Stepping: r0p1
CPU max MHz: 2201.6001
CPU min MHz: 115.2000
BogoMIPS: 62.50
L1d cache: 768 KiB
L1i cache: 768 KiB
L2 cache: 3 MiB
L3 cache: 6 MiB
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1: Mitigation; __user pointer sanitization
Vulnerability Spectre v2: Not affected
Vulnerability Srbds: Not affected
Vulnerability Tsx async abort: Not affected
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp uscat
ilrcpc flagm
# 内存
$ free -m
total used free shared buff/cache available
Mem: 30654 885 29048 12 720 29408
Swap: 15327 0 15327
$ df -HT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mmcblk0p1 ext4 61G 5.8G 53G 10% /
none devtmpfs 16G 0 16G 0% /dev
tmpfs tmpfs 17G 0 17G 0% /dev/shm
tmpfs tmpfs 3.3G 12M 3.3G 1% /run
tmpfs tmpfs 5.3M 4.1k 5.3M 1% /run/lock
tmpfs tmpfs 17G 0 17G 0% /sys/fs/cgroup
tmpfs tmpfs 3.3G 17k 3.3G 1% /run/user/124
tmpfs tmpfs 3.3G 8.2k 3.3G 1% /run/user/1000
# 分区
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 16M 1 loop
mmcblk0 179:0 0 59.3G 0 disk
├─mmcblk0p1 179:1 0 58G 0 part /
├─mmcblk0p2 179:2 0 64M 0 part
├─mmcblk0p3 179:3 0 384K 0 part
├─mmcblk0p4 179:4 0 32M 0 part
├─mmcblk0p5 179:5 0 64M 0 part
├─mmcblk0p6 179:6 0 384K 0 part
├─mmcblk0p7 179:7 0 32M 0 part
├─mmcblk0p8 179:8 0 80M 0 part
├─mmcblk0p9 179:9 0 512K 0 part
├─mmcblk0p10 179:10 0 64M 0 part
└─mmcblk0p11 179:11 0 1G 0 part
zram0 251:0 0 1.3G 0 disk [SWAP]
zram1 251:1 0 1.3G 0 disk [SWAP]
zram2 251:2 0 1.3G 0 disk [SWAP]
zram3 251:3 0 1.3G 0 disk [SWAP]
zram4 251:4 0 1.3G 0 disk [SWAP]
zram5 251:5 0 1.3G 0 disk [SWAP]
zram6 251:6 0 1.3G 0 disk [SWAP]
zram7 251:7 0 1.3G 0 disk [SWAP]
zram8 251:8 0 1.3G 0 disk [SWAP]
zram9 251:9 0 1.3G 0 disk [SWAP]
zram10 251:10 0 1.3G 0 disk [SWAP]
zram11 251:11 0 1.3G 0 disk [SWAP]
$ lspci
0001:00:00.0 PCI bridge: NVIDIA Corporation Device 229e (rev a1)
0001:01:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8822CE 802.11ac PCIe Wireless Network Adapter
$ cat /etc/network/devnames
wlan0:Realtek Semiconductor Co.\, Ltd. RTL8822CE 802.11ac PCIe Wireless Network Adapter
# 默认是 9.3.0, dist-upgrade后变为 9.4.0
$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
$ python
Python 3.8.10 (default, Mar 15 2022, 12:22:08)
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
$ tegrastats
04-25-2022 17:34:32 RAM 996/30655MB (lfb 7234x4MB) SWAP 0/15327MB (cached 0MB) CPU [11%@2201,2%@2201,0%@2201,2%@2201,3%@2201,8%@2201,2%@2201,4%@2201,0%@2201,2%@2201,1%@2201,0%@2201] EMC_FREQ 0% GR3D_FREQ 0% CV0@-256C CPU@51.031C Tdiode@40C SOC2@49.812C SOC0@51.312C CV1@-256C GPU@49.781C SOC1@49.812C CV2@-256C
# 我这里连的是千兆
$ ethtool eth0
Settings for eth0:
Supported ports: [ ]
Supported link modes: 100baseT/Half 100baseT/Full
1000baseT/Full
1000baseKX/Full
10000baseT/Full
10000baseKX4/Full
10000baseKR/Full
2500baseT/Full
5000baseT/Full
Supported pause frame use: Symmetric Receive-only
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 100baseT/Half 100baseT/Full
1000baseT/Full
1000baseKX/Full
10000baseT/Full
10000baseKX4/Full
10000baseKR/Full
2500baseT/Full
5000baseT/Full
Advertised pause frame use: Symmetric Receive-only
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Link partner advertised pause frame use: Symmetric Receive-only
Link partner advertised auto-negotiation: Yes
Link partner advertised FEC modes: Not reported
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
MDI-X: Unknown
Cannot get wake-on-lan settings: Operation not permitted
Link detected: yes
小问题
首先是 jtop 我这里没跑成, 作者还在适配吧:
$ sudo -H python3 -m pip install -U jetson-stats
# logout 或 reboot
$ sudo reboot
# 但是运行jtop会提示, 应该是现在还没适配?
$ jtop
Error connection
接着是 jetson-io, 也没跑成, 一闪而过啥都没有
sudo /opt/nvidia/jetson-io/jetson-io.py
设备树文件
TX2的T186, Xavier的T194, Orin的T234:
• tegra234-p3701-0000-p3737-0000.dts
• kernel_tegra234-p3701-0000-p3737-0000.dtb
交叉编译工具链
下了下面这个, 能用
Cross-compilation toolchains for Linux - aarch64 toolchains (bootlin.com)
Orin vs Xavier
外设的区别(红色独有, 紫色差异)
特性比较(红色独有, 紫色差异)
模块大小/固定孔位置一样, 但是散热需要提升
64GB LPDDR5 版Orin 带来 ~8倍 AI性能提升
Orin 64GB版和32GB版 AI性能和CPU核数都不一样, 下面的对比图中, Memory指RAM,Storage才是指Flash, 左边两个价格应该不是标反:
$1999, 指的是 开发者套件 Developer Kit , 是 32GB LPDDR5 + 64GB EMMC 5.1 的满血版Orin模组 + 载板, 这个模组是为了既能跑出高分又能减低成本的特供版, 开发者套件工作温度 0~50℃, 不同于下面模组的 -25~80℃
$1599, 指的是单买 64GB LPDDR5 + 64GB EMMC 5.1 的满血版Orin模组(60W), 缩写 JAO 64GB
$899, 指的是单买 32GB LPDDR5 + 64GB EMMC 5.1 的残血版Orin模组(40W), 缩写 JAO 32GB
在这里插入图片描述
参考
最新Jetson & Embedded Systems/Jetson AGX Orin话题 - NVIDIA Developer Forums
JetPack SDK 5.0 Developer Preview | NVIDIA Developer
Jetson Linux 34.1 | NVIDIA Developer
Welcome — Jetson LinuxDeveloper Guide 34.1 documentation (nvidia.com)