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,没有密码,直接回车登录

未待结束。。。

相关推荐
【云轩】14 小时前
如何设计一台能模拟电机的电子负载:一个硬件工程师的实战笔记
笔记·嵌入式硬件
SmartRadio14 小时前
STM32WLE5 LoRa Smart TDMA 完整协议栈实现(工程级可直接编译)-【1】
javascript·stm32·单片机·嵌入式硬件·lora·自组网·smart tdma
yugi98783819 小时前
STM32 串口计算器实现
stm32·单片机·嵌入式硬件
狂奔v蜗牛19 小时前
压敏电阻的使用
嵌入式硬件
科芯创展19 小时前
XZ4115B工作电压6-40V 输出电流1.2A 降压恒流LED驱动芯片
stm32·单片机·嵌入式硬件
MC_J1 天前
STM32H7 串口 UART/USART从原理到实战
stm32·单片机·嵌入式硬件
学不懂飞行器1 天前
电赛保姆级教程】从炸管到国一:电赛电源类(DC-DC/单相逆变)硬核避坑与拓扑全指南
stm32·单片机·嵌入式硬件·电赛·fft
大阳1231 天前
ARM5.(beep,key,中断)
单片机·嵌入式硬件
崇山峻岭之间1 天前
单片机RNG实验
单片机·嵌入式硬件
JNX_SEMI1 天前
EG1160:600V半桥驱动,2.5A强驱带保护
stm32·单片机·嵌入式硬件