在使用本产品前,请先仔细阅读本手册,避免未经允许的操作所导致的错误或意外。制造商对因错误操作而导致的设备和个人生命财产安全的任何问题均不负责。
本文主要介绍如何使用AWU408系列产品。
本文中提供的参考代码仅供用户参考,禁止作为商业用途。
建议用户仔细阅读本文档内容,确保了解各项要求和注意事项之后再使用本产品。
本文档可能包含第三方信息、产品、服务、软件、组件、数据或内容(统称“第三方内容”)。
布谷鸟科技不控制且不对第三方内容承担任何责任,包括但不限于准确性、兼容性、可靠性、可用性、合法性、适当性、性能、不侵权、更新状态等, 除非本文档另有明确说明。在本文档中提及或引用任何第三方内容不代表布谷鸟对第三方内容的认可或保证。
用户若需要第三方许可,须通过合法途径获取第三方许可,除非本文档另有明确说明。
布谷鸟AWU408自动驾驶计算单元采用双NVIDIA Drive Orin-X模组,GPU+DLA算力高达508 INT8 TOPS,英飞凌AURIX TC397 ASIL-D级MCU。具有丰富的外设接口,支持多路GMSL2、车载以太网、CAN FD等,可以接入高清数字相机、激光雷达、毫米波雷达、超声波雷达、高精度定位模块等外设单元。具备自动驾驶所需的完善的传感器数据采集、处理、计算、车辆控制等属性,同时系统中还考虑了安全冗余设计。
| 序号 | 型号 | 描述 |
|---|---|---|
| 1 | AWU408-A01 | 双 Orin-X,风冷 |
| 2 | AWU408-A02 | 双 Orin-X,风冷,比 A01减少EMMC |
| 3 | AWU408-B01 | 双 Orin-X,水冷 |
| 4 | AWU408-B02 |
双 Orin-X,水冷,功能同AWU408-A02; 比 AWU408-B01减少EMMC、AurixB、GroupD视频输出功能 |
| 5 | AWU408-C01 | 双 Orin-X,亚克力外壳,研发样机 |
注:AWU408-A01/A02无AurixB、GroupD视频输出功能。AWU408-B01有AurixB、GroupD视频输出功能。
| 序号 | 项目 | 说明 |
|---|---|---|
| 1 | SOC |
双Nvidia Orin-X (228K DMIPS CPU ARMv8.2, 254 INT8 TOPS GPU+DLA, FSI and HSM) |
| 2 | MCU |
双Infineon Aurix TC397, ASIL-D (2.9 MB SRAM/ ECC protection, 16 MB flash/ ECC protection in each AURIX); AWU408-A01/A02/B02为单Aurix |
| 3 | Memory | 2x LPDDR5 32GB |
| 4 | Storage |
2x 256G UFS 3.1 2x 64 MB NOR Boot Flash 2x 8 MB NOR Secure Key Flash |
| 序号 | 项目 | 说明 |
|---|---|---|
| 1 | 工作温度 | -40℃ ~ +85℃ |
| 2 | 工作湿度 | 10% ~ 95%(65℃) |
| 3 | 振动 | 随机振动加速度2Grms |
| 4 | EMC | 定制,参考GMW3097-2017 |
| 序号 | 项目 | 说明 |
|---|---|---|
| 1 | DC 输入 | DC 9~16V |
| 2 | 电源连接器 | 车规级 |
| 3 | TDP | 250W(-40℃ ~ +85℃) |
| 4 | 散热方式 | 水冷 / 风冷 |
| 序号 | 项目 | 说明 |
|---|---|---|
| 1 | 尺寸 |
水冷:335 * 205 * 45mm 风冷:309 * 205 * 85mm |
| 2 | 安装孔 | 用于后备箱、座舱、墙壁等的安装孔 |
注:AWU408-A01/A02风冷,无AurixB及相关接口、无mgbe0_0及外部10G车载以太网口、无视频输出接口功能。
AWU408-B01/B02水冷,新批次无mgbe0_0及外部10G车载以太网口。AWU408-B02无AurixB及相关接口、无groupD接口视频输出功能。
| 序号 | 接口名称 | 说明 |
|---|---|---|
| 1 | 64 pin 电源和车辆接口 | 电源输入、CAN、PPS 等 |
| 2 | 4 合 1 GMSL2 相机输入 / 视频输出 |
Group D 相机输入2路; 视频输出,AWU408-A01/A02/B02不适用 |
| 3 | 4 合 1 GMSL2 相机输入 | Group C,相机输入4路 |
| 4 | 4 合 1 GMSL2 相机输入 | Group B,相机输入4路 |
| 5 | 4 合 1 GMSL2 相机输入 | Group A,相机输入4路 |
| 6 | 6 合 1 千兆车载以太网 | |
| 7 | 10G 车载以太网 | AWU408-A01/A02 风冷不适用,AWU408-B01/B02 水冷新批次不适用 |
| 8 | OrinB USB Type C | OrinB 烧写,AWU408-B01/02 水冷不适用 |
| 9 | OrinA USB Type C | OrinA 烧写,AWU408-B01/02 水冷不适用 |
| 10 | Coolink 连接器接口 | 可外接指定型号的 PCIE NVME SSD(U.2) |
| 11 | Debug 接口 |
外接定制 debug board,可串口访问 OrinA/OrinB/AURIXA/AURIXB AWU408-B01/B02 水冷,新批次不适用 |
| 12 | 水冷接口 | AWU408-B01/02 水冷适用 |
注:Orin USB TypeC和Debug接口,最终量产版会取消。
接口编号如下图:
接口定义如下:
| 引脚 | 名称 | 功能与注释 |
|---|---|---|
| A1 | AURIXA_CAN1_L |
AURIXA MCU CAN FD 接口 内部没有终端电阻 |
| B1 | AURIXA_CAN1_H | |
| C1 | GND | 信号地 |
| D1 | AURIXA_CAN3_L |
AURIXA MCU CAN FD 接口 内部没有终端电阻 |
| E1 | AURIXA_CAN3_H | |
| F1 | AURIXA_CAN4_L |
AURIXA MCU CAN FD 接口 AWU408-A01/A02/B02 内部有终端电阻 120ohm; AWU408-B01/C01 内部没有终端电阻 |
| G1 | AURIXA_CAN4_H | |
| H1 | AURIXA_CAN5_L |
AURIXA MCU CAN FD 接口 内部有终端电阻 120ohm |
| J1 | AURIXA_CAN5_H | |
| K1 | AURIXA_CAN6_L |
AURIXA MCU CAN FD 接口 内部有终端电阻 120ohm |
| L1 | AURIXA_CAN6_H | |
| M1 | GND | 信号地 |
| N1 | AURIXA_CAN2_L |
AURIXA MCU CAN FD 接口 内部没有终端电阻 |
| O1 | AURIXA_CAN2_H | |
| P1 | GND | 电源地 |
| Q1 | KL30_IN1 | 电源输入 1 |
| A2 | AURIXB_CAN1_L |
AURIXB MCU CAN FD 接口 内部没有终端电阻 AWU408-A01/A02/B02 不适用 |
| B2 | AURIXB_CAN1_H | |
| C2 | GND | 信号地 |
| D2 | OrinA_SOC_CAN0_L |
OrinA SOC CAN FD0 AWU408-A01/A02/B02 内部有终端电阻 120ohm; AWU408-B01/C01 内部没有终端电阻 |
| E2 | OrinA_SOC_CAN0_H | |
| F2 | OrinA_SOC_CAN1_L |
OrinA SOC CAN FD1 AWU408-A01/A02/B02 内部有终端电阻 120ohm; AWU408-B01/C01 内部没有终端电阻 |
| G2 | OrinA_SOC_CAN1_H | |
| H2 | OrinB_SOC_CAN0_L |
OrinB SOC CAN FD0 内部有终端电阻 120ohm |
| J2 | OrinB_SOC_CAN0_H | |
| K2 | OrinB_SOC_CAN1_L |
OrinB SOC CAN FD1 内部有终端电阻 120ohm |
| L2 | OrinB_SOC_CAN1_H | |
| M2 | GND | 信号地 |
| N2 | AURIXB_CAN2_L |
AURIXB MCU CAN FD 接口 内部没有终端电阻 AWU408-A01/A02/B02 不适用 |
| O2 | AURIXB_CAN2_H | |
| P2 | GND | 电源地 |
| Q2 | KL30_IN1 | 电源输入 1 |
| A3 | VEHICLE_WAKE_IN1 | KL15 唤醒信号 |
| B3 | VEHICLE_WAKE_IN2 | 备用唤醒信号 |
| C3 | GND | 信号地 |
| D3 | VEHICLE_PPS_IN | PPS 信号输入 |
| E3 | GND | 信号地 |
| F3 | VEHICLE_GPI1 | 车辆信号输入 1 |
| G3 | VEHICLE_GPI2 | 车辆信号输入 2 |
| H3 | VEHICLE_GPI3 | 车辆信号输入 3 |
| J3 | USS_GND_A | USS 2,3,4,5 地线,功能未开放 |
| K3 | USS_GND_C | USS 8,9,10,11 地线,功能未开放 |
| L3 | AURIXA_CAN7_L |
AURIXA MCU CAN FD 接口 AWU408-A01/A02/B02 内部有终端电阻 120ohm; AWU408-B01/C01 内部没有终端电阻 |
| M3 | AURIXA_CAN7_H | |
| N3 | AURIXA_CAN8_L/ AURIXB_CAN6_L |
AWU408-A01/A02/B02: AURIXA_CAN8_L/H AURIXA MCU CAN FD 接口 内部有终端电阻 120ohm;
AWU408-B01/C01: AURIXB_CAN6_L/H AURIXB MCU CAN FD 接口 内部没有终端电阻 |
| O3 | AURIXA_CAN8_H/ AURIXB_CAN6_H | |
| P3 | GND | 电源地 |
| Q3 | KL30_IN1 | 电源输入 1 |
| A4 | NC | -- |
| B4 | USS_GND_B | USS1,6,7,12 地线,功能未开放 |
| C4 | AK_USS1_TRX | 直接驱动型 USS 信号接口 1,功能未开放 |
| D4 | AK_USS2_TRX | 直接驱动型 USS 信号接口 2,功能未开放 |
| E4 | NC | -- |
| F4 | AK1_USS_GND | 直接驱动型 USS 地线,功能未开放 |
| G4 | DSI3_CH_A | 超声波探头 1,2,8,功能未开放 |
| H4 | DSI3_CH_B | 超声波探头 6,3,9,功能未开放 |
| J4 | DSI3_CH_C | 超声波探头 7,4,10,功能未开放 |
| K4 | DSI3_CH_D | 超声波探头 12,5,11,功能未开放 |
| L4 | AK1_USS_12V | 直接驱动型 USS 供电电源,功能未开放 |
| M4 | USS_12V_B | USS 1,6,7,12 供电电源,功能未开放 |
| N4 | USS_12V_A | USS 2,3,4,5 供电电源,功能未开放 |
| O4 | USS_12V_C | USS 8,9,10,11 供电电源,功能未开放 |
| P4 | KL30_IN2 | 电源输入 2 |
| Q4 | KL30_IN2 | 电源输入 2 |
注:1. GPI、DSI、USS相关接口软件功能暂未开放。
2. AWU408-A01/A02/B02风冷,AURIXB、KL30_IN2、USS、DSI相关引脚为空。
接口编号如下图:
接口定义如下:
| Group A | Group B | Group C | Group D | ||||
|---|---|---|---|---|---|---|---|
| 引脚 | 名称 | 引脚 | 名称 | 引脚 | 名称 | 引脚 | 名称 |
| 1 | GMSL_A_IN0 | 1 | GMSL_B_IN0 | 1 | GMSL_C_IN0 | 1 | GMSL_D_IN0 |
| 2 | GMSL_A_IN1 | 2 | GMSL_B_IN1 | 2 | GMSL_C_IN1 | 2 | GMSL_D_IN1 |
| 3 | GMSL_A_IN2 | 3 | GMSL_B_IN2 | 3 | GMSL_C_IN2 | 3 | OrinA_GMSL_Display |
| 4 | GMSL_A_IN3 | 4 | GMSL_B_IN3 | 4 | GMSL_C_IN3 | 4 | OrinB_GMSL_Display |
注:AWU408-A01/A02/B02 无Group D pin3/4 视频输出功能。
接口编号如下图:
接口定义如下:
| 引脚 | 名称 | 功能 | 引脚 | 名称 | 功能 |
|---|---|---|---|---|---|
| 1 | SW1_P1_MDI_P | Port1 1000BASE-T1 | 7 | SW4_P1_MDI_N | Port4 1000BASE-T1 |
| 2 | SW1_P1_MDI_N | 8 | SW4_P1_MDI_P | ||
| 3 | SW2_P1_MDI_P | Port2 1000BASE-T1 | 9 | SW5_P1_MDI_N | Port5 1000BASE-T1 |
| 4 | SW2_P1_MDI_N | 10 | SW5_P1_MDI_P | ||
| 5 | SW3_P1_MDI_P | Port3 1000BASE-T1 | 11 | SW6_P1_MDI_N | Port6 1000BASE-T1 |
| 6 | SW3_P1_MDI_N | 12 | SW6_P1_MDI_P |
接口编号如下图:
接口定义如下:
| 引脚 | 名称 | 功能 |
|---|---|---|
| 1 | 10G_T1_MDI_P | Port1 10GBASE-T1 |
| 2 | 10G_T1_MDI_N |
注:AWU408-A01/A02/B02不适用。AWU408-B01新批次不适用。
AWU408目前使用版本为NVIDIA DRIVE® OS 6.0.9.0 Linux软件开发包。后文所有软件相关介绍均基于DRIVE® OS 6.0.9.0。
相关介绍请参考配套提供的NVIDIA®官方Developer Guide。
注:NVIDIA DRIVE® OS可能随官方版本迭代而升级至最终量产版。
AWU408安装在车辆上时,应做好防静电防护,所处的安装环境,应满足相应的通风散热、防潮、防尘、电磁环境、防腐蚀气体等要求,以保障产品的正常工作。同时,请务必遵循下面的要求,否则会影响安全或对控制器造成损坏:
1. 禁止带电插拔接口线束。
2. 请将所有裸露端子做绝缘处理。
3. 设备配件连接示意图如下。
4. 设备安装空间建议如下图:
5. 安装环境要求:
环境温度:-40~85℃,防护等级:IP52
水冷版,冷却液温度:-40~65℃,冷却液流量:≥4L/min,
冷却液推荐是50%乙二醇和水的防冻液(最好是博世、百事通等大品牌的,但不可混用)。进出水嘴标准为DIN 3021-3中的A型。
最大管路压力不超过1.5bar,环温85°C,水温65°C时,流速4L/min,可以满足最大的域控负载。
流阻-流量曲线如下图(右侧15/20/-20单位为摄氏度):
水冷款的配件组装,请参考相关文件说明。
AWU408 自动驾驶域控制器,采用“MCU+SOC” 系统架构。具有丰富的外设接口,支持多路GMSL、以太网、CAN等接口,可以接入高清数字摄像头、激光雷达、毫米波雷达等外设单元,支持数字落盘处理。可用于主机厂前装智能驾驶系统,无人车、机器人、无人船等自动驾驶系统。
请在上电前连接好需要使用的外部设备,如电源、相机、网线等,相机等设备请勿带电插拔。
连接电源,请将KL30_IN1的三根线(配套线束已做在一起为PWR_IN1)接在电源正极,电源地(线束已做在一起为GND_01)接在电源负极。线束名称可能会因版本不同而变化。
外部电源规格需保证至少10A,以免影响正常启动。
设备默认开机模式为上电自启动。
可以通过以太网转接盒将车载以太网转为普通以太网,电脑通过ssh方式远程登录到两个Orin-X。车载以太网默认配置请查看下一小节。
登录OrinA:
$ ssh nvidia@192.168.1.100 #ssh到OrinA
nvidia@fangzai-a:~$ #已登录到OrinA
登录OrinB:
$ ssh nvidia@192.168.1.101 #ssh到OrinB
nvidia@fangzai-b:~$ #已登录到OrinB
OrinA与OrinB的默认用户名和密码均为“nvidia”。
root权限,请使用sudo+命令,或sudo -i切换,密码 “nvidia”,不支持su命令。
根据英伟达的官方建议,请在 Orin 平台上进行功能开发时,注意对 CPU9 (是CPU0-CPU11计数的CPU9)占用率的影响,将 CPU9 整体的占用率控制在 50% 以下,否则会出现系统异常问题。
AURIXA和AURIXB的默认IP分别为192.168.1.65和192.168.1.66,不支持ssh方式登录。推荐通过debug board串口连接。也可通过telnet登录:
telnet 192.168.1.65 32889 #登录AurixA
telnet 192.168.1.66 32899 #登录AurixB
如需登录AurixB,需将PWR_IN2和GND 02接上电源。
车载以太网默认配置因批次不同,有如下两种配置方案:
方案一:
P1:100M、Master;P2:1000M、Master;P3:1000M、Slave;
P4:100M、Slave;P5:1000M、Master;P6:1000M、Slave;
VLAN未配置。
方案二:
P1:1000M、Master;P2:1000M、Slave;P3:1000M、Slave;
P4:1000M、Slave;P5:1000M、Slave;P6:1000M、Slave;
VLAN未配置。
如有其它配置需求,请在发货前及时沟通。以太网接口的100M/1000M、master/slave、VLAN配置客户也可自行配置修改,如需修改,请与布谷鸟联系提供相关工具。
查看车载以太网配置,可通过debug board或telnet方式访问AurixA,然后输入命令:
$ phy-status
输出的信息会显示P1~P6的车载以太网100M/1000M、Master/Slave配置,其中:
link:1代表phy已连接,0代表未连接;
speed:100代表100M,1000代表1000M;
role:1代表Master,0代表Slave。
ssh登录到OrinA后,输入:
$ cat /etc/nvidia/version-ubuntu-rootfs.txt #SDK系统版本,输出内容仅为示例
6.0.9.0-35040399
$ cat /version-info.txt #软件版本,输出内容仅为示例
esw_version: release_v2_orin-versa-6090_v1-6_RC5
esw_release_date: [UTC] 20241023-074809
$ uname -a #内核版本,输出内容仅为示例
Linux fangzai-a 5.15.116-rt-tegra #1 SMP PREEMPT_RT Tue Jan 14 09:02:04 UTC 2025 aarch64 aarch64 aarch64 GNU/Linux
$ dpkg -l | grep nvinfer #TensorRT版本,输出内容仅为示例
ii libnvinfer-bin 8.6.12.4-1+cuda11.4 arm64 TensorRT binaries
ii libnvinfer-dispatch8 8.6.12.4-1+cuda11.4 arm64 TensorRT dispatch runtime library
ii libnvinfer-lean8 8.6.12.4-1+cuda11.4 arm64 TensorRT lean runtime library
ii libnvinfer-plugin8 8.6.12.4-1+cuda11.4 arm64 TensorRT plugin libraries
ii libnvinfer-vc-plugin8 8.6.12.4-1+cuda11.4 arm64 TensorRT vc-plugin library
ii libnvinfer8 8.6.12.4-1+cuda11.4 arm64 TensorRT runtime libraries
ii python3-libnvinfer 8.6.12.4-1+cuda11.4 arm64 Python 3 bindings for TensorRT standard runtime
$ dpkg -l | grep -i cuda-toolkit #CUDA版本,输出内容仅为示例
ii cuda-toolkit-11-4-config-common 11.4.460-1 all Common config package for CUDA Toolkit 11.4.
ii cuda-toolkit-11-config-common 11.4.460-1 all Common config package for CUDA Toolkit 11.
ii cuda-toolkit-config-common 11.4.460-1 all Common config package for CUDA Toolkit.
每个Orin-X包含一个256G的UFS存储空间,对于用户其中主要包含两个26G的操作系统文件分区(A/B分区)和一个167G的用户数据分区。
系统启动后,可通过lsblk命令查看整个系统的分区挂载和使用情况:
$ lsblk #输出内容仅为示例
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vblkdev0 252:0 0 26G 0 disk /
vblkdev2 252:64 0 170G 0 disk /mnt/ufs_data
......
| 分区名称及大小 | 挂载节点 |
A/B 分区 (slot A/B) |
用途 |
|---|---|---|---|
|
vblkdev0 26G |
操作系统根分区 / |
各一份 |
操作系统文件系统根分区,系统配置、home 分区相关; 可 OTA 分别升级,切换 bootchain 后数据独立 |
|
vblkdev2 170G |
用户数据分区 /mnt/ufs_data |
共享 |
用户数据分区; 不可 OTA 升级,切换 bootchain 后数据不变 |
开机脚本/etc/rc.local中的初始内容,除Orin CAN外,请勿修改以免影响设备正常运行。
用户可根据需求自行在后面添加内容。
查看rc-local服务状态:
$ systemctl status rc-local.service #查看rc-local服务状态
默认支持IEEE1588 PTP和802.1AS 2020 gPTP标准协议。
同时,如需gPTP BC(Boundary Clock)功能,即指定各端口的时间同步master/slave属性,在获取外部时钟源后进行对外授时,则需配置Orin A/B、各网口的时间同步master/slave属性(非车载以太网M/S属性)。
使用BC功能时,为避免时间源过多引起混乱,目前提供两种方案:
方案一(出厂默认):OrinA做Grand Master,给OrinB、Port1~6的设备(如Lidar)授时。OrinA系统时钟可通过CAN、互联网等方式获取,获取方式需定制开发或客户自行开发;
方案二:Port1做Grand Master,给OrinA、OrinB、Port2~6的设备(如Lidar)授时。Port1时钟可通过连接的支持gPTP协议的外部设备(如IMU)获取。
如需方案二,请提前与布谷鸟确认,以便刷写对应版本BC固件。
系统默认软件源/etc/apt/sources.list可能因系统版本不同而有差异。可根据情况自行替换,如使用清华软件源,请注意需使用Ubuntu 20.04的arm版本。
Orin的CPU温度建议是设置为115℃警报并降低负载防止高温;超过125℃关闭Orin,防止对使用寿命造成影响。
可以使用如下命令来实时监测相关温度信息。因tegrastats工具存在显示 bug,即使NVENC、NVJPG编码器已正常运行,工具也会显示为 off 状态。
$ sudo tegrastats
各传感器温度,也可通过读取/sys/devices/virtual/thermal/thermal_zone<x>/temp的值获取,x=0/1/.../12。各传感器名称可通过读取/sys/devices/virtual/thermal/thermal_zone<x>/type获取。一般建议使用thermal_zone8(tj-therm)。
双Orin-X之间除以太网通讯外,还提供了C2C(chip to chip)的通讯方式,即可以通过PCIE和NVIDIA软件通讯接口(直接融入NvStream的通讯框架中)实现SOC之间应用程序数据交换的能力。
使用C2C通讯库可以完成两颗Orin之间的CPU/GPU/Nvmedia多种数据的高效传输。
注:C2C通讯仅适用于AWU408-A01/A02/B02版本。
配置前,需保证配置文件/etc/nvsciipc.cfg的准确性,且目录位置不能被移动。
按如下操作配置C2C通讯通道:
1. 登录OrinB,创建startC2cEp.sh脚本(新版系统脚本已在/usr/local/bin/目录下创建),放入下列内容,赋予可执行权限,执行脚本:
#!/bin/bash
modprobe nvscic2c-pcie-epf
cd /sys/kernel/config/pci_ep
mkdir functions/nvscic2c_epf_22CC/func
echo 0x10DE > functions/nvscic2c_epf_22CC/func/vendorid
echo 0x22CC > functions/nvscic2c_epf_22CC/func/deviceid
ln -s functions/nvscic2c_epf_22CC/func controllers/141c0000.pcie_ep
echo 0 > controllers/141c0000.pcie_ep/start
echo 1 > controllers/141c0000.pcie_ep/start
$ sudo chmod +x ./startC2cEp.sh
$ sudo ./startC2cEp.sh
2. 登录OrinA,查看/etc/rc.local中包含如下命令:
$ sudo modprobe nvscic2c-pcie-epc
3. 在OrinA和OrinB上确认C2C通讯设备节点正确生成:
#OrinA:
$ ls /dev/nvsci*
/dev/nvscic2c_pcie_s1_c6_1 /dev/nvscic2c_pcie_s1_c6_3 /dev/nvscic2c_pcie_s1_c6_7
/dev/nvscic2c_pcie_s1_c6_10 /dev/nvscic2c_pcie_s1_c6_4 /dev/nvscic2c_pcie_s1_c6_8
/dev/nvscic2c_pcie_s1_c6_11 /dev/nvscic2c_pcie_s1_c6_5 /dev/nvscic2c_pcie_s1_c6_9
/dev/nvscic2c_pcie_s1_c6_2 /dev/nvscic2c_pcie_s1_c6_6 /dev/nvsciipc
#OrinB:
$ ls /dev/nvsci*
/dev/nvscic2c_pcie_s2_c6_1 /dev/nvscic2c_pcie_s2_c6_3 /dev/nvscic2c_pcie_s2_c6_7
/dev/nvscic2c_pcie_s2_c6_10 /dev/nvscic2c_pcie_s2_c6_4 /dev/nvscic2c_pcie_s2_c6_8
/dev/nvscic2c_pcie_s2_c6_11 /dev/nvscic2c_pcie_s2_c6_5 /dev/nvscic2c_pcie_s2_c6_9
/dev/nvscic2c_pcie_s2_c6_2 /dev/nvscic2c_pcie_s2_c6_6 /dev/nvsciipc
nvscistream_event_sample是NVIDIA SDK提供的一个示例应用程序来演示如何使用 NvSciStream,内容包括:
测试参考命令:
# Orin A:
$ ./nvscistream_event_sample -P 0 nvscic2c_pcie_s1_c6_1 -Q 0 f
# Orin B:
$ ./nvscistream_event_sample -C 0 nvscic2c_pcie_s2_c6_1 -F 0 3
test_nvscistream_perf是NVIDIA SDK提供的一个示例应用程序来测试CPU和CPU之间的性能工具,包括传输延时和带宽,在C2C情况下,数据无法共享缓冲区,存在一次数据拷贝。
测试方法:
1. 延迟测试,每个数据包的大小为12.5MB,传输10000帧,在两个OrinA和OrinB上分别执行如下命令:
# Orin A:
$ ./test_nvscistream_perf -P 0 nvscic2c_pcie_s1_c6_1 -l -b 12.5 -f 10000
#输出内容示例:
Producer presented 10000 packet(s)
Producer total init time: 1830699.50000 us
Producer setup phase (after stream connect): 5398.04785 us
Producer streaming phase: 19204462.00000 us
============ Perf. Report: Producer packet wait
[NOTE] All time-values are in USEC
------------------------------------
min : 1.344
max : 129.408
average : 42.774
99.99-pct : 117.888
Std. Deviation : 6.807
Num. of Samples : 10000
# Orin B:
$ ./test_nvscistream_perf -C 0 nvscic2c_pcie_s2_c6_1 -l -b 12.5 -f 10000
#输出内容示例:
Consumer received 10000 packet(s)
Consumer total init time: 7348.54395 us
Consumer setup phase (after stream connect): 5416.22412 us
Consumer streaming phase: 19204188.00000 us
Buffer size per packet: 12.50000 MB
PCIe bandwidth (buffer size received by consumer): 6.35644 GBps
============ Perf. Report: Producer packet present
[NOTE] All time-values are in USEC
------------------------------------
min : 18446744073695256.000
max : 18446744073695464.000
average : 1844674393130.575
99.99-pct : 18446744073695452.000
Std. Deviation : 18444899399304224.000
Num. of Samples : 10000
============ Perf. Report: Producer packet present + C2C copy done
[NOTE] All time-values are in USEC
------------------------------------
min : 18446744073697076.000
max : 18446744073697248.000
average : 1844674394949.487
99.99-pct : 18446744073697236.000
Std. Deviation : 18444899399304224.000
Num. of Samples : 10000
============ Perf. Report: Consumer packet wait
[NOTE] All time-values are in USEC
------------------------------------
min : 76.512
max : 179.424
average : 91.178
99.99-pct : 161.568
Std. Deviation : 10.041
Num. of Samples : 10000
2. 带宽测试,每个pool有三个数据包,每个数据包缓冲区大小为12.5MB,传输10000帧,在两个OrinA和OrinB上分别执行如下命令:
# Orin A:
$ ./test_nvscistream_perf -P 0 nvscic2c_pcie_s1_c6_1 -l -b 12.5 -k 3 -f 10000
#输出内容示例:
Producer presented 10000 packet(s)
Producer total init time: 7681.12012 us
Producer setup phase (after stream connect): 5917.34424 us
Producer streaming phase: 18569972.00000 us
============ Perf. Report: Producer packet wait
[NOTE] All time-values are in USEC
------------------------------------
min : 0.352
max : 20.768
average : 0.636
99.99-pct : 5.792
Std. Deviation : 0.336
Num. of Samples : 10000
# Orin B:
$ ./test_nvscistream_perf -C 0 nvscic2c_pcie_s2_c6_1 -l -b 12.5 -k 3 -f 10000
#输出内容示例:
Consumer received 10000 packet(s)
Consumer total init time: 1863024.37500 us
Consumer setup phase (after stream connect): 5941.98389 us
Consumer streaming phase: 18569674.00000 us
Buffer size per packet: 12.50000 MB
PCIe bandwidth (buffer size received by consumer): 6.57364 GBps
============ Perf. Report: Producer packet present
[NOTE] All time-values are in USEC
------------------------------------
min : 18446744073694672.000
max : 18446744073698200.000
average : 1844674395942.498
99.99-pct : 18446744073698196.000
Std. Deviation : 18444899399304224.000
Num. of Samples : 10000
============ Perf. Report: Producer packet present + C2C copy done
[NOTE] All time-values are in USEC
------------------------------------
min : 18446744073696424.000
max : 18446744073700032.000
average : 1844674397788.808
99.99-pct : 18446744073700028.000
Std. Deviation : 18444899399304224.000
Num. of Samples : 10000
============ Perf. Report: Consumer packet wait
[NOTE] All time-values are in USEC
------------------------------------
min : 0.352
max : 133.760
average : 0.538
99.99-pct : 30.688
Std. Deviation : 1.385
Num. of Samples : 10000
需要重启Orin时,在保存数据、退出程序后,执行如下命令:
$ sudo orin_reboot
非预期内的关机下电可能会存在Orin文件系统损坏、文件丢失、磁盘无法识别等风险。需要关机时,建议执行如下标准下电流程:
开始决定下电
==>>Orin的应用层程序退出
==>>Orin文件系统关闭
==>>MCU对Orin的中断供电
==>>确认Orin供电已中断
==>>断开域控KL30供电
具体步骤:
1. 开始决定下电
域控确认要下电。
2. OrinA/B的应用层程序退出
确保OrinA/B的应用程序正常退出。
3. OrinB文件系统关闭
在OrinB上执行:
$ sudo poweroff
使OrinB文件系统正常关闭。
4. 在OrinA文件系统关闭
在OrinA上执行:
$ sudo poweroff
使OrinA文件系统正常关闭。
5. 在OrinA执行poweroff 60秒后,MCU中断对Orin的供电。
在OrinA上使用mcu_command_main_arm,或在Ubuntu PC上使用 mcu_command_main_x86:
#设置MCU对OrinA和OrinB 同时下电
./mcu_command_main_arm --ip 192.168.1.65 --port 32888 --cmd set_peripheral_power_state --peripheral_power_type 1 --peripheral_power_channel 3 --peripheral_power_state 2 --power_action_delay_ms 60000 --logtostderr
# --power_action_delay_ms 60000 表示 MCU 在接收下电指令后,延迟60000ms 执行
注:
a. 上述提到的 60 秒为系统正常 power off 时间的估算。具体时间以实际情况为准,用户可自行评估修改。
b. 流程的4和5步骤,可以结合写成一个脚本在OrinA上执行,先执行5(带延迟参数),再执行4。
c. mcu_command_main的set_peripheral_power_state和下一步的get_peripheral_power_state命令适用于MCU固件v2-*版本。较早v1-*版本不适用。
6. 确认 Orin 供电已中断
使用 mcu_command_main_x86 读取 Orin 供电状态。
state is [2] 表示供电已中断。
#获取OrinA供电状态:
./mcu_command_main_x86 --ip 192.168.1.65 --port 32888 --cmd get_peripheral_power_state --peripheral_power_type 1 --peripheral_power_channel 1 --logtostderr
#输出:
Version: 0.2
I0725 16:15:31.174166 619844 mcu_device_parser.cc:619] Going to get peripheral power state...
I0725 16:15:31.184764 619844 mcu_device_parser.cc:1177] Successfully get peripheral type [1] channel [1] power state, state is [2].
#获取OrinB供电状态:
./mcu_command_main_x86 --ip 192.168.1.65 --port 32888 --cmd get_peripheral_power_state --peripheral_power_type 1 --peripheral_power_channel 2 --logtostderr
#输出:
Software Version: 0.2
I0725 16:15:34.766069 619859 mcu_device_parser.cc:619] Going to get peripheral power state...
I0725 16:15:34.776690 619859 mcu_device_parser.cc:1177] Successfully get peripheral type [1] channel [2] power state, state is [2].
7. 断开域控 KL30 供电
可通过ifconfig或ip addr show命令查看各网络端口配置是否符合预期。
可通过定制的6路转接盒(AEA),将车载以太网转接为普通以太网。
注:AEA如果拨码更改配置,需重新上电才能生效。
网络配置可通过修改/etc/netplan/01-network-manager-all.yaml配置文件并配合netplan命令实现。
单网卡多IP配置可以通过修改文件/etc/netplan/01-network-manager-all.yaml实现。
以下为Orin_A的01-network-manager-all.yaml文件内容示例,mgbe3_0网卡,IP配置成192.168.1.100/24和192.168.5.100/24:
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
mgbe3_0:
addresses: [192.168.1.100/24, 192.168.5.100/24]
nameservers:
addresses: [114.114.114.114]
routes:
- to: 0.0.0.0/0
via: 192.168.1.1
metric: 100
- to: 0.0.0.0/0
via: 192.168.5.1
metric: 200
配置完成后,执行sudo netplan apply或者重启设备/网络生效。通过ip addr show查看。
注:
1. 参数/示例请参考netplan官网。
2. 格式要正确,缩进用空格,不能使用tab,冒号后内容前面有空格。
需先完成内部switch接口的相关VLAN配置,再进行Orin的mgbe3_0网卡VLAN配置。
可通过netplan配置。以下为Orin_A的mgbe3_0网卡netplan示例,配置vlan 11:
network:
version:2
renderer: networkd
ethernets:
mgbe3_0:
addresses: [192.168.1.102/24]
nameservers:
addresses: [114.114.114.114]
routes:
- to: 0.0.0.0/0
via: 192.168.1.1
metric: 100
vlans:
enp_mgbe3.11:
id: 11
link: mgbe3_0
addresses: [192.168.11.100/24]
nameservers:
addresses: [114.114.114.114]
routes:
- to: 0.0.0.0/0
via: 192.168.11.1
metric: 300
外部10G网卡mgbe0_0由Orin_B控制,默认未启动,可通过配置Orin_B的文件/etc/netplan/01-network-manager-all.yaml实现。
注:AWU408-A01/A02/B02不适用。AWU408-B01新批次不适用。
以下为Orin_B的01-network-manager-all.yaml文件内容示例,mgbe0_0网卡,静态IP:
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
mgbe3_0:
addresses: [192.168.1.100/24]
......
mgbe0_0:
addresses: [192.168.2.100/24]
配置完成后,执行sudo netplan apply或者重启设备/网络生效。
注:
1. 参数/示例请参考netplan官网。
2. 格式要正确,缩进用空格,不能使用tab,冒号后内容前面有空格。
外部10G网卡mgbe0_0车载以太网master/slave模式设置方法如下:
进入Orin_B文件系统如下目录:
cd /lib/firmware/marvell_ethernet/88Q4364
设置:
./set_mode_4364 mgbe0_0 0 #设置为slave
./set_mode_4364 mgbe0_0 1 #设置为master
内部10G网卡mgbe1_0仅用于双Orin之间的内部通讯,默认未启动,可通过配置/etc/netplan/01-network-manager-all.yaml文件进行静态ip设置,示例:
Orin_A:
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
mgbe3_0:
addresses: [192.168.1.100/24]
......
mgbe1_0:
addresses: [192.168.2.100/24]
Orin_B:
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
mgbe3_0:
addresses: [192.168.1.101/24]
......
mgbe1_0:
addresses: [192.168.2.101/24]
配置完成后,执行sudo netplan apply或者重启设备/网络生效。
PTP/gPTP推荐使用Linux PTP,具体可参考:
https://tsn.readthedocs.io/timesync.html#introduction
使用默认配置方案一时,参考命令,实际使用时请按需修改:
#OrinA, master,开两个终端分别执行:
sudo ptp4l -i mgbe3_0 -f configs/automotive-master.cfg --step_threshold=1 -m
sudo phc2sys -s ClOCK_REALTIME -c mgbe3_0 --step_threshold=1 --transportSpecific=1 -w -m
#OrinB, slave,开两个终端分别执行:
sudo ptp4l -i mgbe3_0 -f configs/automotive-slave.cfg --step_threshold=1 -m
sudo phc2sys -s mgbe3_0 -c CLOCK_REALTIME --step_threshold=1 --transportSpecific=1 -w -m
使用方案二时,OrinA、OrinB均可参考slave的命令执行。
如果时间可以同步,但有37秒的偏差。可在ptp4l命令中增加参数--utc_offset=0,是因为系统时钟使用UTC格式,PHC时钟使用TAI格式,之间因闰秒有37秒的偏差造成的。
AWU408最高支持14路GMSL2相机,采用标准Fakra接口。
支持的GMSL2相机品牌和型号请在购买前与布谷鸟确认,以便提前预装对应驱动。
相机可通过OrinA内部GPIO控制触发,支持针对group/单个相机分别触发。
将GMSL2相机连接到设备GMSL2接口后再上电开机,禁止带电插拔。同时尽量避免频繁插拔,影响EMC性能。
Camera driver驱动以.so文件形式,存放于/lib/nvsipl_drv/目录下。
如需更新驱动,请参照下面方法:
#安装对应的新驱动(.deb安装包),安装中的warning提示为覆盖动态库的提示,无影响
$ sudo dpkg -i --force-overwrite sensing****.deb
#验证,以IMX390相机驱动为例,查看是否显示对应型号,且无重复
$ nvsipl_camera -l | grep 390
基于英伟达原生nvsiple camera,增加按group触发功能,实现相机的采图、存图等功能。
相机通过OrinA进行控制,无法单独通过OrinB控制。
1. 基于nvsipl_camera查看当前driver支持的模组类型。
$ nvsipl_camera -l #输出为示例
...
F008A030RM0A_24BIT_RGGB_CPHY_x2 :F008A030RM0A 24BIT RGGB module in 2 lane CPHY mode
...
SENSING_SG8_AR0820 :Sensing AR0820 camera module
SENSING_SG2_AR0233 :Sensing module with AR0233
SENSING_SG2_IMX390_GW5 :Sensing IMX390 with GW5200 ISP camera module
SENSING_SG3S_ISX031 :Sensing ISX031 camera
...
上例中,当前的driver支持森云SG8_AR0820、SG2_AR0233、SG2_IMX390_GW5、SG3S_ISX031等模组。
2. 基于选定的模组类型的配置出图。
$ nvsipl_camera -c SENSING_SG2_AR0233 -m "0x1111" --showfps --disableISP0Output --disableISP1Output --disableISP2Output --enableRawOutput --triggerLine 0 --triggerFreq 10
指令会触发相机的初始化流程,进行相关配置,然后开始源源不断的接收数据。
退出时,请按q和回车,或ctrl+c。
$ nvsipl_camera -c SENSING_SG2_AR0233 -m "0x1111" --showfps --disableISP0Output --disableISP1Output --disableISP2Output --enableRawOutput --triggerLine 0 --triggerFreq 10 --writeFrames 10 -f test --skipFrames 150
上例中,表示针对GroupA的4路相机,每个相机存一张图,名字以“test”开头,并且在抓这帧图之前,先skip 150帧,最终的图像将以test_cam_0_out_0.yuv test_cam_1_out_0.yuv, test_cam_2_out_0.yuv, test_cam_3_out_0.yuv名字存储在命令执行的所在路径下,文件名尾缀为yuv或者raw,则取决于模组传输的图像类型。
3. OrinA、OrinB同时取图。
双Orin同时取图机制是OrinA控制相机,相机同时将图传给OrinA和OrinB,无法单独通过OrinB控制。以ISX031相机为例参考命令:
#OrinA(不能写--writeFrames,需要写-f,设置camRecCfg)
$ nvsipl_camera -c nvsipl_camera -c SENSING_SG3S_ISX031 -m "0x0001" --showfps --disableISP0Output --disableISP1Output --disableISP2Output --enableRawOutput --triggerLine 0 --triggerFreq 10 --camRecCfg 1 --skipFrames 150 -f test
#OrinB(设置enablePassive)
nvsipl_camera -c SENSING_SG3S_ISX031 -m "0x0001" --showfps --disableISP0Output --disableISP1Output --disableISP2Output --enableRawOutput --enablePassive --writeFrames 10 --skipFrames 150 -f test
相机命令参数,可通过自带的nvsipl_camera -h命令查看,常用参数简介如下:
| 项目 | 说明 |
|---|---|
| -c 'name' | 相机模组名,需与 nvsipl_camera -l 命令列出的名称一致 |
| -m "0xXXXX" |
激活各 port 口,0x 后的四位,1 代表触发,0 代表关闭; 0xXXXX,后四位 XXXX 从左到右依次代表 port4、3、2、1; "0xXXXX 0xXXXX 0xXXXX 0xXXXX",从左到右依次代表 Group A、B、C、D; 如只写三组 0xXXXX 则代表 Group A、B、C; 如只写两组 0xXXXX 则代表 Group A、B; 如只写一组 0xXXXX 则代表 Group A; Group 及 port 口顺序请查看接口定义 |
| --triggerLine <value> |
激活各 group 内的全部相机; <value>: 0 代表全部 group; 1 代表 groupA、2 代表 groupB、3 代表 groupC、4 代表 groupD; 注:对于某些型号相机需要 --triggerLine 0 的同时,使用 - m 按照 port 激活,否则 Frame rate 会显示为 0。 |
| --showfps 或 -s | 显示帧率 |
|
--disableISP0Output --disableISP1Output --disableISP2Output 或 -0 -1 -2 |
关闭 Orin 自带的 ISP,使用的相机的 ISP |
|
--enableRawOutput 或 -R |
使能 Raw 输出 |
| -f 'test' | enableRawOutput 后,以 test 开头(可替换),dump RAW 文件 |
| --skipFrames <value> | 设置跳过帧的数量,之后再 dump 图 |
| --writeFrames <value> | 设置 dump 图的帧数,注意帧数过大会造成文件过大 |
TPG模式是针对MAX96712的Test Pattern测试描述,无需在Orin外接任何模组即可测试,通过指定TPG的测试类型,MAX96712输出指定格式的Color Bar的图像,用于测试硬件链路是否正常以及后续的相机功能验证。在OrinA上使用。
基于Nivida SDK的nvsipl_camera的工具进行测试流程如下。
1. 查看当前驱动支持的模组的配置,是否支持MAX96712的TPG模式:
$ nvsipl_camera -l
F008A030RM0A_24BIT_RGGB_CPHY_x2 :F008A030RM0A 24BIT RGGB module in 2 lane CPHY mode
SENSING_AR0233 :Sensing module with AR0233
SENSING_AR0820 :Sensing AR0820 camera module
.......
MAX96712_RAW12_TPG_DPHY_x2 :MAX96712 RAW12 TPG in 2 lane DPHY mode
MAX96712_RAW12_TPG_DPHY_x4 :MAX96712 RAW12 TPG in 4 lane DPHY mode
MAX96712_RAW12_TPG_CPHY_x2 :MAX96712 RAW12 TPG in 2 lane CPHY mode
MAX96712_RAW12_TPG_CPHY_x2_b :MAX96712 RAW12 TPG in 2 lane CPHY mode
MAX96712_RAW12_TPG_CPHY_x4 :MAX96712 RAW12 TPG in 4 lane CPHY mode
......
MAX96712_2880x1860_YUV_8_TPG_CPHY_x4:MAX96712 YUV 8-bit TPG in 4 lane CPHY mode
2. 选定其中一个TPG的配置进行测试:
$ nvsipl_camera -c MAX96712_RAW12_TPG_CPHY_x4 -m "0x1111" --showfps --disableISP0Output --disableISP1Output --disableISP2Output --enableRawOutput
Enter 'les' followed by sensor ID to enable LED
Enter 'lds' followed by sensor ID to disable LED
Enter 'dl' followed by sensor ID to disable the link
Enter 'el' followed by sensor ID to enable the link without module reset
Enter 'elr' followed by sensor ID to enable the link with module reset
Enter 'cm' to check the module availabilty
Enter 'q' to quit the application
-
Output
Sensor12_Out0 Frame rate (fps): 28.9988
Sensor13_Out0 Frame rate (fps): 28.9988
Sensor14_Out0 Frame rate (fps): 28.9988
Sensor15_Out0 Frame rate (fps): 28.9988
Output
Sensor12_Out0 Frame rate (fps): 30.4988
Sensor13_Out0 Frame rate (fps): 30.4988
Sensor14_Out0 Frame rate (fps): 30.4988
Sensor15_Out0 Frame rate (fps): 30.4988
3. 如果想验证双Orin的出图测试,请在OrinA & OrinB分别执行如下指令。针对CPHY类的配置,请在OrinB上先启动Dump流程后再启动OrinA的dump流程。
#Orin A:
$ nvsipl_camera -c MAX96712_RAW12_TPG_CPHY_x4 -m "0x1111" --showfps --disableISP0Output --disableISP1Output --disableISP2Output --enableRawOutput --camRecCfg 1
#Orin B:
$ nvsipl_camera -c MAX96712_RAW12_TPG_CPHY_x4 -m "0x1111" --showfps --disableISP0Output --disableISP1Output --disableISP2Output --enableRawOutput --enablePassive
基于nvsiple camera,可实现多模组同时出图、多种数据输出接口、时间戳分析等功能。
相机通过OrinA进行控制。无法单独通过OrinB控制。
具体使用方法请提前与布谷鸟确认,参见对应的说明文档。
AWU408最多共包含14路CAN,其中OrinA 2路、 OrinB 2路。MCU CAN如下:
AWU408-A01/A02/B02:MCU(AURIXA) 8路。
AWU408-B01/C01:MCU(AURIXA) 7路、MCU(AURIXB)3路。
MCU(AURIXA) CAN新版固件已支持透传数据至Orin-X。
支持CAN 2.0/CAN FD定制,其中CAN FD仲裁域波特率500K,数据段波特率2M。
因部分接口内部没有终端电阻,使用时需外接120欧姆终端电阻,具体请参见接口定义。
CAN线束的线端H/L区分,如下图所示。如线束工艺有变更,以实际线束上的标签为准。
OrinA/B的CAN配置,可参考下列命令,配置成功后可通过ifconfig命令查看。初始配置已在/etc/rc.local开机脚本中完成,可根据需求自行修改。
DBW_CAN=$(ls /sys/devices/platform/c310000.mttcan/net) || true
sudo ip link set ${DBW_CAN} down || true
sudo ip link set ${DBW_CAN} type can bitrate 500000 dbitrate 2000000 fd on || true
# enlarge can txqueuelen from 10(default) to 200
# please double check with cat /sys/class/net/can0/tx_queue_len
sudo ifconfig ${DBW_CAN} txqueuelen 200 || true
sudo ip link set ${DBW_CAN} up || true
# Configure ${RADAR_CAN_0} as Can FD mode for Cornet Radar Connection
RADAR_CAN_0=$(ls /sys/devices/platform/c320000.mttcan/net) || true
sudo ip link set ${RADAR_CAN_0} down || true
sudo ip link set ${RADAR_CAN_0} type can bitrate 500000 dbitrate 2000000 fd on || true
# For new radar type
#sudo ip link set ${RADAR_CAN_0} type can bitrate 500000 dbitrate 2000000 dsample-point 0.70 sample-point 0.75 fd on || true
# enlarge can txqueuelen from 10(default) to 200
# please double check with cat /sys/class/net/can1/tx_queue_len
sudo ifconfig ${RADAR_CAN_0} txqueuelen 200 || true
sudo ip link set ${RADAR_CAN_0} up || true
OrinA/OrinB的CAN可通过标准CAN socket(cansend和candump)进行验证。
新版MCU固件支持AurixA的CAN数据透传到Orin-X,可在Orin-X端通过SDK进行收发控制,SDK和使用方法请提前与布谷鸟确认。
通过1路1PPS_IN,可配合外部时间源,获取同步时间等信息。
PPS电压范围3.3~16v。PPS内部同时接到Orin和MCU。
PPS线束线端插头,分别是PPS_IN和GND,如下图所示。如线束工艺有变更,以实际线束上的标签为准。
外接PPS后,Orin端可通过如下命令验证:
sudo ppstest /dev/pps0
AWU408共2路视频输出接口,分别对应OrinA和OrinB,需使用支持GMSL2的显示器或外接转接设备。具体型号请与布谷鸟确认。
视频输出可选择输出相机视频(最多支持1组4个相机同时输出)或Ubuntu系统UI。
如需输出相机视频,需在nvsipl_camera相机命令中加入-d 1参数,并通过systemctl status lightdm命令查看lightdm服务未开启(默认未开启)。相机视频大小位置等不可调整。仅可以运行一次,退出后再运行需重启Orin,否则会报错。
如需输出Ubuntu系统UI,需自行配置lightdm。在lightdm服务正常开启后,使用debug board上的USB接口连接鼠标键盘操作。但英伟达制作的Ubuntu系统UI比较简单,不建议在UI下开发。布谷鸟也不提供这一功能的支持和维护。
注:视频输出,AWU408-A01/A02/B02不适用。
开发调试阶段,可通过定制debug board(RS232转USB),使用串口访问OrinA/OrinB/AURIXA/AURIXB,串口波特率为115200。
用户可通过NVME SSD(U.2接口)扩展存储空间,支持的白名单为布谷鸟定制款、 Samsung PM9A3和Western SN640,实际验证最大4T容量可支持。
使用前,请将NVME SSD通过转接线连接到coolink连接器,最多支持2路NVME SSD分别连接到OrinA和OrinB。
系统上电后可以使用sudo lsblk或者sudo fdisk -1命令确认是否正确识别到NVME SSD。
新的SSD第一次挂载前,需使用下列命令格式化一次。
sudo mkfs.ext4 /dev/nvme0n1
然后修改 /etc/fstab文件,实现开机自动挂载,添加示例如下:
/dev/nvme0n1 /var/ssd ext4 defaults 0 0
其中,/dev/nvme0n1为所挂载的SSD设备,/var/ssd为挂载目录(可按实际需求修改),重启系统生效。
若已配置挂载,但实际SSD未连接,开机启动会多出1分半的等待时间。
请准备一台Ubuntu 20.04英文版(中文版安装会有问题)的PC作为host,用于交叉编译的开发环境。安装方法请参见NV SDK安装包附带的安装文档说明。
作为host的PC需先安装Local Repo Debian Packages,成功安装后会自动生成drive-foundation、drive-linux、drive-linux_src和toolchains四个目录。如需作为开发环境,还需安装CUDA、cuDNN、TensorRT等对应版本的Debian Packages。
安装示例请见下节。
以下为SDK 6.0.9.0的安装过程示例:
1. 卸载之前的SDK版本,安装新版本:
$ export NV_WORKSPACE= <被安装路径>
#如之前安装过,或重装时,卸载之前版本
$ sudo -E apt-get -y --purge remove "nv-driveos-*6.0*"
$ sudo apt-get -y autoremove
#安装6.0.9.0版本
$ sudo dpkg -i ./ nv-driveos-repo-sdk-linux-6.0.9.0-35041135_6.0.9.0_amd64.deb
$ sudo apt update
$ sudo apt upgrade
$ sudo -E apt -f -y install nv-driveos-build-sdk-linux-6.0.9.0-35041135 #(复制到6090,后面tab补全,保证前面命令安装成功)
2. 在上面最后一步安装nv-driveos-build-sdk-linux的过程, 到达下图所示的安装步骤,出现"--More--" 的关键字后,需要使用空格建进行翻页操作
翻到最后一页并输入yes来继续后续软件的安装。
最后安装完成会出现“Installation complete.” 字样log,通过安装时的log可以看到这个SDK包里面默认安装了哪些功能模块。
Orin-X系统烧写,是通过USB Type C烧录口,将burn image同时烧写到Orin-X操作系统文件A和B分区(slotA和slotB)。适用于AWU408-A01/A02/C01。AWU408-B01/B02不适用(未预留外置烧录口)。
Orin-X系统OTA,是通过网络,将ota image升级到非当前使用的Orin-X操作系统文件分区(slotA或slotB),适用于所有型号。
Orin-X如需自行重新安装系统,请准备一台Ubuntu 20.04 PC,并从布谷鸟获取正确的burn image压缩包,并拆下外壳上Orin-X的USB Type C烧写口封堵件。
Orin-X操作系统文件A和B分区(slotA和slotB)会同时被重新烧写,请提前做好数据备份。用户数据区内容不变。
具体操作方法,请参见随burn包附带的说明文档。
可以通过OTA方式升级非当前使用的Orin-X操作系统文件分区(slot),当前分区(slot)、用户数据区内容不变。升级成功并重新上电后,Orin-X会自动切换到新升级的分区(slot)。
OTA具体使用方法,请参见随ota包附带的说明文档。
用户可以在host PC上,基于burn image自行制作定制化burn image和ota包,提前完成预装程序、修改配置等操作,方便后续通过OTA方法大批量统一部署。
具体使用方法,请与布谷鸟确认,参见说明文档。
可根据需要手动切换bootchain到另一个分区(slot)。
先使用query_bootchain_type_main_arm工具查询bootchain,再使用bootchain_manager_main工具设置bootchain。请提前与布谷鸟确认,以便提供所需工具。
AWU408-B01/B02因无法烧录,如系统当前使用的分区(slot)损坏,无法正常进入系统,则可以切换到另一个分区(slot)。切换后,应第一时间通过OTA升级方式修复损坏的slot,以免另一个分区(slot)再次损坏,导致完全无法启动。
通过versa MCU工具包,可以实现在PC(Ubuntu 20.04)或Orin-X上,对MCU固件进行升级、对6个车载以太网口进行Ethernet配置(100/1000M、master/slave、VLAN)、以及对时间同步BC固件进行升级。
请提前与布谷鸟确认,以便提供对应版本工具及固件。
作为host的PC按host PC配置要求安装CUDA、cuDNN、TensorRT等对应版本的Debian Packages后,可以构建和运行sample applications(如Graphics applications、CUDA、TensorRT)。具体方法,请参见官方的“DRIVE OS Debian Package Installation Guide”的相关章节。
请确认电源线是否正确连接(使用KL30_IN1),电压是否正确,电源功率预留是否足够。
如使用唤醒功能,请确认wakeup线(标签是wakeup_int1/int2或者KL15)是否有电。
保证存储空间有足够的余量。
可尝试通过debug板串口连接。
系统文件是否损坏(/etc/, /lib/)。
请勿修改系统自带的.so库,如需使用自己的库,请放到usr路径下,运行程序时指定路径使用对应的.so,不使用系统的.so。但是不能替换系统的.so,因其存在递增依赖关系。
请确认T1网线是否连接牢固。
如使用AEA转接盒请确认拨码是否正确,拨码变更后需重新上电才能生效。
检查网络配置:
通过MCU A串口输入phy-status命令检查车载以太网phy配置(千兆/百兆,master/slave,link状态);
通过MCU A串口输入switch-status命令检查vlan id的port;
网卡配置是否正确,包括vlan(/etc/netplan/01-network-manager-all.yaml);
如果Orin端配置了vlan,并且switch外接电脑的port口是tagged,那么本机也需要配置相应vlan。
10G phy直连orin B,网卡名为mgbe0_0, 可以通过查阅88Q4364状态(ifconfig查询Tx/Rx数据)来确认10G口可否工作。
请确认相机型号是否支持,是否插在支持的GMSL2接口。
检查线束和相机以及fraka接口是否链接正常,相机端GMSL线束电压和板端电压在12v左右。
检查驱动是否正确。
请确认触发命令/参数/操作步骤是否正确,nvsipl工具测试相机是否正常初始化和帧率是否正常。
如使用camera SDK,检查相机配置文件(camera.config, nvmedia_camera.config)。
尝试插在其他支持的GMSL2接口,尝试更换线束,相机,交叉验证。相机单品线下检查是否正常。
针对某些特定相机,需要跳过前50帧数据,再取图。
检查ffmpeg或者ffplay工具的参数设置是否正确,如分辨率,yuv格式。
请勿带电插拔相机!
检查终端电阻(OrinA的CAN都没有终端电阻,Orin B的CAN都有终端电阻, Aurix A除了CAN 5和CAN 6有终端电阻外,其他都没有)。
确认CAN卡配置为canfd还是普通can,采样率500k和2M一般都是80%
示波器检查pps信号源。
使用sudo fdisk -l指令检查是否识别到外挂磁盘;
格式化外挂磁盘是否为ext4;
检查磁盘是否mount上;
检查一下磁盘和ADCU数据交换是否正常。
检查debug线连接是否正常;
检查debug board供电。
如果在设备维护或故障处理过程中,遇到难以确定或难以解决的问题,通过文档的指导仍不能解决,可通过线上技术支持体系、电话技术指导、远程支持及现场技术支持等方式获取及时有效的技术支持。