orin NX 在OE4T(OpenEmbedded for Tegra)上的环境搭建

OE4T解决的问题

NVIDIA 官方 Jetson 开发流程一般是:

  • JetPack
  • SDK Manager
  • L4T (Linux for Tegra)
  • Ubuntu RootFS

具有上手快,GUI工具多,示例齐全,CUDA/TensorRT/DeepStream 集成成熟,但是系统可裁剪性差,可重复构建能力一般,产品化困难,OTA 管理不够优雅,长期维护成本高。

OE4T 本质上用 Yocto/OpenEmbedded 重新组织 Jetson BSP,把 NVIDIA BSP 变成 Yocto layer,变成真正的可重复构建,系统极致裁剪,OTA 升级更正规,更适合工业产品,长期维护更舒服,更适合 CI/CD 自动化的特点。

环境搭建准备

小编使用的宿主机ubuntu环境是ubuntu-2204 6.8.0-111-generic,编译工程需要使用本地代理127.0.0.1:7897,需要准备预留200G以上的存储空间。测试下位机板子使用的是Jetson Orin NX 16 GB

根据需要进行配置git代理参数执行如下:

bash 复制代码
git config --global --list #获取git的配置代理参数
#配置本地代理参数
git config --global http.proxy http://127.0.0.1:7897 
git config --global https.proxy http://127.0.0.1:7897
#取消本地代理
git config --global --unset http.proxy
git config --global --unset https.proxy

开始获取git工程

bash 复制代码
git clone https://github.com/OE4T/tegra-demo-distro.git  --depth=1 #减少下载的流量
cd tegra-demo-distro
git submodule update --init --depth=1
. ./setup-env -m p3768-0000-p3767-0000 -d tegrademo testBoardBuild

针对上面的setup-env,传参-h 查看已经支持的开发板信息,其中p3767-0000代表Jetson Orin NX / Nano 模组编号,常见如下:

模组 编号
Orin NX 16GB p3767-0000
Orin NX 8GB p3767-0001
Orin Nano 8GB p3767-0003
Orin Nano 4GB p3767-0004

p3768-0000代表NVIDIA 官方 Orin Nano Developer Kit Carrier Board的开发板底板编号

开始编译前的准备

执行完上面的指令后,根据个人主机的性能参数进行一些额外的配置如下:

bash 复制代码
source ./setup-env ./testBoardBuild #启动yocto守护程序
vim ./conf/local.conf #编辑配置文件,新增如下内容
BB_NUMBER_THREADS = "3" #BitBake 同时允许执行多少个 task
PARALLEL_MAKE = "-j3"  #单个 make 工程内部允许几个线程并行编译
DL_DIR = "~/yocto_downloads/downloads" #Yocto 下载源码包的统一缓存目录
SSTATE_DIR = "~/yocto_downloads/sstate-cache" #Yocto 编译结果缓存
BB_HASHSERVE_DB_DIR = "${SSTATE_DIR}" #Hash Equivalence 数据库目录

关于上面的参数,建议 BB_NUMBER_THREADS x PARALLEL_MAKE 不要超过电脑的cpu数量,也需要根据电脑的的内存进行调整,否则电脑容易卡死并编译失败

执行编译命令和烧录

根据需求选择任一编译的命令

bash 复制代码
bitbake core-image-minimal  #- minimally bootable image (no demo apps, no graphics)
bitbake demo-image-base     #- basic image with no graphics
bitbake demo-image-egl      #- basic image with DRM/EGL, no window manager
bitbake demo-image-sato     #- X11 image with 'sato' UI
bitbake demo-image-weston   #- Wayland with Weston compositor
bitbake demo-image-full     #- X11/sato UI plus docker, openCV, VPI, TensorRT and multimedia API samples

接下来漫长的等待所有的tasks执行完毕,编译进度下图所示:

编译完成如下:

bash 复制代码
$ bitbake demo-image-base
Loading cache: 100% |####################################################################################################################################################################################################| Time: 0:00:01
Loaded 5792 entries from dependency cache.
NOTE: Resolving any missing task queue dependencies
NOTE: Multiple providers are available for runtime libnss-mdns (avahi-libnss-mdns, mdns)
Consider defining a PREFERRED_RPROVIDER entry to match libnss-mdns

Build Configuration:
BB_VERSION           = "2.19.0"
BUILD_SYS            = "x86_64-linux"
NATIVELSBSTRING      = "universal"
TARGET_SYS           = "aarch64-oe4t-linux"
MACHINE              = "p3768-0000-p3767-0000"
SDKMACHINE           = "x86_64"
DISTRO               = "tegrademo"
DISTRO_VERSION       = "6.1+snapshot-97a940bfdeaa3f9f4442a6fbb0fabe1ce5eaff69"
TUNE_FEATURES        = "aarch64 armv8a crc"
meta                 = "HEAD:97a940bfdeaa3f9f4442a6fbb0fabe1ce5eaff69"
meta-tegra           = "HEAD:f6987622d98cb4ea56c3ec880ef2016da7888888"
meta-oe              
meta-python          
meta-networking      
meta-filesystems     = "HEAD:420222862f5a6d95023b8f5f3b7e1808b2264ef9"
meta-virtualization  = "HEAD:4ba5825ee16fcded87f4d555b4ed7a7615dc67ac"
meta-tegra-community = "HEAD:b47ec3876125eb8602ee4562b6c682cafe321540"
meta-tegra-support   
meta-demo-ci         
meta-tegrademo       = "master:295210b0c43d6d7c1968879122ca134391b266af"

Sstate summary: Wanted 0 Local 0 Mirrors 0 Missed 0 Current 4290 (0% match, 100% complete)                                                                                                                                              
Initialising tasks: 100% |###############################################################################################################################################################################################| Time: 0:00:06
NOTE: Executing Tasks
NOTE: Tasks Summary: Attempted 7723 tasks of which 7723 didn't need to be rerun and all succeeded.

烧录成果物在如下的文件夹内:./tmp/deploy/images/p3768-0000-p3767-0000/demo-image-base-p3768-0000-p3767-0000.rootfs.tegraflash-tar.zst,解压相关的文件命令:tar --zstd -xvf ./demo-image-base-p3768-0000-p3767-0000.rootfs.tegraflash-tar.zst

将orin nx的rec管脚接地进入到烧录模式,执行如下命令进行烧录操作:

bash 复制代码
sudo ./initrd-flash

默认登录名为root,没有密码,直接回车登录

未待结束。。。

相关推荐
LCG元3 小时前
STM32实战:基于STM32F103的智能手环(计步+心率+OLED)
stm32·单片机·嵌入式硬件
ACP广源盛139246256733 小时前
磐石 100 :IX6012 :ASM1812@ACP#国产 PCIe 2.0 交换芯片,轻量级算力扩展应用分享
大数据·linux·运维·网络·人工智能·嵌入式硬件·电脑
振浩微433射频芯片5 小时前
智能门锁常用的国产NFC芯片方案解析:从VRC522到433MHz的选型思考
单片机·嵌入式硬件
踏着七彩祥云的小丑7 小时前
嵌入式测试学习第3天:电容、电感、二极管、三极管、MOS管
单片机·嵌入式硬件
雅斯驰20 小时前
AES-128加密+滚动码认证:ATA5702W如何防御中继攻击与信号重放
运维·单片机·嵌入式硬件·物联网·自动化
iCxhust21 小时前
微机原理课程设计大综合---计数器
汇编·单片机·嵌入式硬件·课程设计·微机原理
搁浅小泽1 天前
PCBA焊点的检测方法
单片机·嵌入式硬件·可靠性工程师
Deitymoon1 天前
STM32——PWM控制舵机
stm32·单片机·嵌入式硬件
菜鸟的日志1 天前
【嵌入系统】嵌入式学习笔记(一)
windows·笔记·嵌入式硬件·学习·ubuntu·操作系统