在使用本产品前,请先仔细阅读本手册,避免未经允许的操作所导致的错误或意外。制造商对因错误操作而导致的设备和个人生命财产安全的任何问题均不负责。
本文主要介绍如何使用AWU407系列产品。
本文中提供的参考代码仅供用户参考,禁止作为商业用途。
建议用户仔细阅读本文档内容,确保了解各项要求和注意事项之后再使用本产品。
本文档可能包含第三方信息、产品、服务、软件、组件、数据或内容(统称“第三方内容”)。
布谷鸟科技不控制且不对第三方内容承担任何责任,包括但不限于准确性、兼容性、可靠性、可用性、合法性、适当性、性能、不侵权、更新状态等, 除非本文档另有明确说明。在本文档中提及或引用任何第三方内容不代表布谷鸟对第三方内容的认可或保证。
用户若需要第三方许可,须通过合法途径获取第三方许可,除非本文档另有明确说明。
布谷鸟AWU407自动驾驶计算单元采用NVIDIA Drive Orin-X芯片,GPU+DLA算力高达254 INT8 TOPS,英飞凌AURIX TC397 ASIL-D级MCU。具有丰富的外设接口,支持多路GMSL2、车载以太网、CAN FD等,可以接入高清数字相机、激光雷达、毫米波雷达、超声波雷达、高精度定位模块等外设单元。具备自动驾驶所需的完善的传感器数据采集、处理、计算、车辆控制等属性,同时系统中还考虑了安全冗余设计。
| 序号 | 项目 | 说明 |
|---|---|---|
| 1 | AWU407-A01 | 单 Orin-X,风冷,带落盘 |
| 2 | AWU407-A02 |
单 Orin-X,水冷,带落盘; 比 A01 减少 EMMC、GroupD 和 AURIXA_CAN6~8 接口的相关功能 |
| 3 | AWU407-C01 | 单 Orin-X,亚克力外壳,研发样机 |
| 序号 | 项目 | 说明 |
|---|---|---|
| 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) |
| 3 | Memory | LPDDR5 32GB |
| 4 | Storage |
256G UFS 3.1 64 MB NOR Boot Flash 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 | 150W(-40℃ ~ +85℃) |
| 4 | 散热方式 | 风冷 |
| 序号 | 项目 | 说明 |
|---|---|---|
| 1 | 尺寸 | 309 * 205 * 85mm |
| 2 | 安装孔 | 用于后备箱、座舱、墙壁等的安装孔 |
注:AWU407-A02无GroupD接口(Camera减少2路、Display视频输出取消),Aurix CAN从8路减少到5路。
| 序号 | 接口名称 | 说明 |
|---|---|---|
| 1 | 64 pin 电源和车辆接口 | 电源输入、CAN、PPS 等 |
| 2 | 4 合 1 GMSL2 相机输入 / 视频输出 |
Group D AWU407-A02 不适用 |
| 3 | 4 合 1 GMSL2 相机输入 | Group C |
| 4 | 4 合 1 GMSL2 相机输入 | Group B |
| 5 | 4 合 1 GMSL2 相机输入 | Group A |
| 6 | 6 合 1 千兆车载以太网 | |
| 7 | Orin USB Type C | Orin-X 烧写,AWU407-B01 水冷不适用 |
| 8 | Coolink 连接器接口 | 外接指定型号的 PCIE NVME SSD(U.2) |
| 9 | Debug 接口 | 外接 debug board,串口访问 Orin/ AURIX |
注:Orin USB TypeC和Debug接口,最终量产版可能会取消。
接口编号如下图:
接口定义如下:
| 引脚 | 名称 | 功能与注释 | 引脚 | 名称 | 功能与注释 |
|---|---|---|---|---|---|
| A1 | AURIXA_CAN1_L |
AURIXA MCU CAN FD 接口 内部没有终端电阻 |
A2 | NC | -- |
| B1 | AURIXA_CAN1_H | B2 | NC | -- | |
| C1 | GND | 信号地 | C2 | GND | 信号地 |
| D1 | AURIXA_CAN3_L |
AURIXA MCU CAN FD 接口 内部没有终端电阻 |
D2 | OrinA_SOC_CAN0_L |
Orin SOC CAN FD0 内部没有终端电阻 |
| E1 | AURIXA_CAN3_H | E2 | OrinA_SOC_CAN0_H | ||
| F1 | AURIXA_CAN4_L |
AURIXA MCU CAN FD 接口 内部没有终端电阻 |
F2 | OrinA_SOC_CAN1_L |
Orin SOC CAN FD1 内部没有终端电阻 |
| G1 | AURIXA_CAN4_H | G2 | OrinA_SOC_CAN1_H | ||
| H1 | AURIXA_CAN5_L |
AURIXA MCU CAN FD 接口 内部有终端电阻 120ohm |
H2 | NC | -- |
| J1 | AURIXA_CAN5_H | J2 | NC | -- | |
| K1 | AURIXA_CAN6_L |
AURIXA MCU CAN FD 接口 内部没有终端电阻 |
K2 | NC | -- |
| L1 | AURIXA_CAN6_H | L2 | NC | -- | |
| M1 | GND | 信号地 | M2 | GND | 信号地 |
| N1 | AURIXA_CAN2_L |
AURIXA MCU CAN FD 接口 内部没有终端电阻 |
N2 | NC | -- |
| O1 | AURIXA_CAN2_H | O2 | NC | -- | |
| P1 | GND | 电源地 | P2 | GND | 电源地 |
| Q1 | KL30_IN1 | 电源输入 1 | Q2 | KL30_IN1 | 电源输入 1 |
| A3 | VEHICLE_WAKE_IN1 | KL15 唤醒信号 | A4 | NC | -- |
| B3 | VEHICLE_WAKE_IN2 | 备用唤醒信号 | B4 | GND | 信号地 |
| C3 | GND | 信号地 | C4 | Orin_RS232_RX | 如使用双 Orin 线束,标签为 AK_USS1_TRX |
| D3 | VEHICLE_PPS_IN | PPS 信号输入 | D4 | Orin_RS232_TX | 如使用双 Orin 线束,标签为 AK_USS2_TRX |
| E3 | GND | 信号地 | E4 | NC | -- |
| F3 | VEHICLE_GPI1 | 车辆信号输入 1 | F4 | GND | 信号地 |
| G3 | VEHICLE_GPI2 | 车辆信号输入 2 | G4 | DSI3_CH_A | -- |
| H3 | VEHICLE_GPI3 | 车辆信号输入 3 | H4 | DSI3_CH_B | -- |
| J3 | GND | 信号地 | J4 | DSI3_CH_C | -- |
| K3 | GND | 信号地 | K4 | DSI3_CH_D | -- |
| L3 | AURIXA_CAN7_L |
AURIXA MCU CAN FD 接口 内部没有终端电阻 |
L4 | AK1_USS_12V | -- |
| M3 | AURIXA_CAN7_H | M4 | USS_12V_A | -- | |
| N3 | AURIXA_CAN8_L |
AURIXA MCU CAN FD 接口 内部没有终端电阻 |
N4 | USS_12V_B | -- |
| O3 | AURIXA_CAN8_H | O4 | USS_12V_C | -- | |
| P3 | GND | 电源地 | P4 | KL30_IN2 | 电源输入 2 |
| Q3 | KL30_IN1 | 电源输入 1 | Q4 | KL30_IN2 | 电源输入 2 |
注:GPI、DSI、USS相关接口软件功能暂未开放。AWU407-A02无AURIXA_CAN6~8。
接口编号如下图:
接口定义如下:
| Group A | Group B | Group C |
Group D AWU407-A02不适用 |
||||
|---|---|---|---|---|---|---|---|
| 引脚 | 名称 | 引脚 | 名称 | 引脚 | 名称 | 引脚 | 名称 |
| 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 | Orin_GMSL_Display |
| 4 | GMSL_A_IN3 | 4 | GMSL_B_IN3 | 4 | GMSL_C_IN3 | 4 | NC |
接口编号如下图:
接口定义如下:
| 引脚 | 名称 | 功能 | 引脚 | 名称 | 功能 |
|---|---|---|---|---|---|
| 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 |
AWU407目前使用版本为NVIDIA DRIVE® OS 6.0.9.0 Linux软件开发包。后文所有软件相关介绍均基于DRIVE® OS 6.0.9.0。
相关介绍请参考配套提供的NVIDIA®官方Developer Guide。
注:NVIDIA DRIVE® OS可能随官方版本迭代而升级至最终量产版。
AWU407安装在车辆上时,应做好防静电防护,所处的安装环境,应满足相应的通风散热、防潮、防尘、电磁环境、防腐蚀气体等要求,以保障产品的正常工作。同时,请务必遵循下面的要求,否则会影响安全或对控制器造成损坏:
1. 禁止带电插拔接口线束。
2. 请将所有裸露端子做绝缘处理。
3. 设备配件连接示意图如下:
4. 设备安装空间建议如下图:
5. 安装区域环境要求:
温度要求:-40~85℃
AWU407自动驾驶域控制器,采用“MCU+SOC” 系统架构。具有丰富的外设接口,支持多路GMSL、以太网、CAN等接口,可以接入高清数字摄像头、激光雷达、毫米波雷达等外设单元,支持数字落盘处理。可用于主机厂前装智能驾驶系统,无人车、机器人、无人船等自动驾驶系统。
请在上电前连接好需要使用的外部设备,如电源、相机、网线等,相机等设备请勿带电插拔。
连接电源,请将KL30_IN1的三根线(配套线束已做在一起为PWR_IN1)接在电源正极,电源地(线束已做在一起为GND_01)接在电源负极。线束名称可能会因版本不同而变化。
外部电源规格需保证至少10A,以免影响正常启动。
设备默认开机模式为上电自启动。
通过以太网转接盒将车载以太网转为普通以太网,电脑通过ssh方式远程登录到Orin-X。车载以太网默认配置请查看下一小节。
登录Orin:
$ ssh nvidia@192.168.1.100 #ssh到Orin
nvidia@fangzai-a:~$ #已登录到Orin
Orin的默认用户名和密码均为“nvidia”。
root权限,请使用sudo+命令,或sudo -i切换,密码 “nvidia”,不支持su命令。
根据英伟达的官方建议,请在 Orin 平台上进行功能开发时,注意对 CPU9 (是CPU0-CPU11计数的CPU9)占用率的影响,将 CPU9 整体的占用率控制在50%以下,否则会出现系统异常问题。
AURIX的默认IP为192.168.1.65,不支持ssh方式登录。推荐通过debug board串口连接。也可通过telnet登录:
telnet 192.168.1.65 32889 #登录Aurix
车载以太网默认配置因批次不同,有如下两种配置方案:
方案一:
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登录到Orin后,输入:
$ 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-9_RC2
esw_release_date: [UTC] 20250114-094546
$ 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 /
vblkdev1 252:32 0 256M 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和各网口的时间同步master/slave属性(非车载以太网M/S属性)。
使用BC功能时,为避免时间源过多引起混乱,目前提供两种方案:
方案一(出厂默认):Orin做Grand Master,给Port1~6的设备(如Lidar)授时。Orin系统时钟可通过RS232+PPS等方式获取;
方案二:Port1做Grand Master,给Orin、Port2~6的设备(如Lidar)授时。Port1时钟可通过连接的支持gPTP协议的外部设备(如IMU)获取。
如需方案二,请提前与布谷鸟确认,以便刷写对应版本BC固件。
如使用方案一,并使用外部时钟源通过RS232和PPS传输GPRMC信息对Orin授时,可自行配置chrony和gpsd服务。参考配置方法:
$ sudo apt update
$ sudo apt install gpsd gpsd-clients chrony
gpsd:
$ sudo vi /etc/default/gpsd
#参考修改内容
DEVICES="/dev/ttyTHS0 /dev/pps0"
GPSD_OPTIONS="-n"
chrony:
$ sudo vi /etc/chrony/chrony.conf
#参考添加内容
refclock SHM 0 refid GPS precision 1e-1 delay 0.2
refclock PPS /dev/pps0 refid PPS lock GPS
#修改内容
makestep 1 -1
#网络时间同步按需选择是否注释
pool ntp.ubuntu.com iburst maxsources 4
pool 0.ubuntu.pool.ntp.org iburst maxsources 1
pool 1.ubuntu.pool.ntp.org iburst maxsources 1
pool 2.ubuntu.pool.ntp.org iburst maxsources 2
$ sudo systemctl start gpsd
$ sudo systemctl start chrony
$ sudo systemctl enable gpsd
$ sudo systemctl enable chrony
将RS232、PPS、GND线束连接,保证外部时钟源设备正常工作、信号良好。
使用cgps或gpsmon命令,验证GPS数据,特别是GPRMC消息。
使用sudo ppstest /dev/pps0命令,验证PPS数据。
使用chronyc sources -v或chronyc tracking命令,查看时间源状态。
使用systemctl status chrony命令查看chrony同步服务状态。
使用date命令查看系统时间。
系统默认软件源/etc/apt/sources.list可能因系统版本不同而有差异。可根据情况自行替换,如使用清华软件源,请注意需使用Ubuntu 20.04的arm版本。
Orin的CPU温度建议是设置为115℃警报并降低负载防止高温;超过125℃关闭Orin,防止对使用寿命造成影响。
可以使用如下命令来实时监测CPU、GPU、内存以及相关温度信息。
$ 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)。
风扇默认开机后使用最大转速。用户可根据情况利用如下脚本进行控制。
注意,减少风扇转速,会造成域控温度升高,如温度超出工作范围,可能会引起域控损坏等问题,请谨慎使用!!!
#!/bin/bash
# Check if two arguments are provided
if [ $# -ne 2 ]; then
echo "Usage: $0 <frequency in Hz> <duty cycle in %> &"
exit 1
fi
if [ ! -d "/sys/class/gpio/PX.03" ]; then
sudo sh -c 'echo 465 > /sys/class/gpio/export'
fi
# Get the frequency and duty cycle from the command line arguments
frequency_hz=$1
duty_cycle_percent=$2
# Calculate the period and high time in microseconds
period_us=$((1000000/$frequency_hz))
high_time_us=$(echo "$period_us*$duty_cycle_percent/100" | bc)
# Calculate the sleep time in seconds
high_time_s=$(echo "scale=6; $high_time_us/1000000" | bc)
low_time_s=$(echo "scale=6; ($period_us-$high_time_us)/1000000" | bc)
while true; do
echo 1 > /sys/class/gpio/PX.03/value
sleep $high_time_s
echo 0 > /sys/class/gpio/PX.03/value
sleep $low_time_s
done
可以在Orin中创建如上内容fan_control.sh脚本,并赋予可执行权限。然后按如下参数执行脚本。脚本的第1个参数为GPIO的工作频率(Hz),第2个参数为占空比(%)。不执行脚本,默认为最大风速。
#1档:
$ sudo ./fan_control.sh 1000 50
#2档:
$ sudo ./fan_control.sh 1000 100
#3档(最大风速):
$ sudo ./fan_control.sh 1 100
需要重启Orin时,在保存数据、退出程序后,执行如下命令:
$ sudo orin_reboot
非预期内的关机下电可能会存在Orin文件系统损坏、文件丢失、磁盘无法识别等风险。需要关机时,建议执行如下标准下电流程:
开始决定下电
==>>Orin的应用层程序退出
==>>Orin文件系统关闭
==>>MCU对Orin的中断供电
==>>确认Orin供电已中断
==>>断开域控KL30供电
具体步骤:
1. 开始决定下电
域控确认要下电。
2. Orin的应用层程序退出
确保Orin的应用程序正常退出。
3. Orin文件系统关闭
在Orin上执行:
$ sudo poweroff
使Orin文件系统正常关闭。
4. 在Orin执行poweroff 60秒后,MCU中断对Orin的供电。
在Orin上使用mcu_command_main_arm,或在PC上使用mcu_command_main_x86:
#设置MCU对Orin下电
./mcu_command_main_arm --ip 192.168.1.65 --port 32888 --cmd set_peripheral_power_state --peripheral_power_type 1 --peripheral_power_channel 1 --peripheral_power_state 2 --power_action_delay_ms 60000 --logtostderr
# --power_action_delay_ms 60000 表示 MCU 在接收下电指令后,延迟60000ms 执行
注:
a. 上述提到的 60 秒为系统正常 power off 时间的估算。具体时间以实际情况为准,用户可自行评估修改。
b. 流程的3和4步骤,可以结合写成一个脚本在Orin上执行,先执行4(带延迟参数),再执行3。
c. mcu_command_main的set_peripheral_power_state和下一步的get_peripheral_power_state命令适用于MCU固件v2-*版本。较早v1-*版本不适用。
5. 确认 Orin 供电已中断
使用 mcu_command_main_x86 读取 Orin 供电状态。
state is [2] 表示供电已中断。
#获取Orin供电状态:
./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].
6. 断开域控 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的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
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
#slave,开两个终端分别执行:
sudo ptp4l -i <网卡名> -f configs/automotive-slave.cfg --step_threshold=1 -m
sudo phc2sys -s <网卡名> -c CLOCK_REALTIME --step_threshold=1 --transportSpecific=1 -w -m
使用方案二时,Orin可参考slave的命令执行。
如果时间可以同步,但有37秒的偏差。可在ptp4l命令中增加参数--utc_offset=0,是因为系统时钟使用UTC格式,PHC时钟使用TAI格式,之间因闰秒有37秒的偏差造成的。
AWU407最高支持14路GMSL2相机(AWU407-A02最高支持12路),采用标准Fakra接口。
支持的GMSL2相机品牌和型号请在购买前与布谷鸟确认,以便提前预装对应驱动。
相机可通过Orin-X内部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触发功能,实现相机的采图、存图等功能。
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。
相机命令参数,可通过自带的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的图像,用于测试硬件链路是否正常以及后续的相机功能验证。
基于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
基于nvsiple camera,可实现多模组同时出图、多种数据输出接口、时间戳分析等功能。
具体使用方法请提前与布谷鸟确认,参见对应的说明文档。
AWU407最多共包含10路CAN,其中Orin-X 2路、 MCU 8路。
(AWU407-A02最多共包含7路CAN,其中Orin-X 2路、MCU 5路。)
MCU CAN新版固件已支持透传数据至Orin-X。
支持CAN 2.0/CAN FD定制,其中CAN FD仲裁域波特率500K,数据段波特率2M。
因部分接口内部没有终端电阻,使用时需外接120欧姆终端电阻,具体请参见接口定义。
CAN线束的线端H/L区分,如下图所示。如线束工艺有变更,以实际线束上的标签为准。
Orin-X的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
Orin-X的CAN可通过标准CAN socket(cansend和candump)进行验证。
新版MCU固件支持AurixA的8路CAN数据透传到Orin-X,可在Orin-X端通过SDK进行收发控制,SDK和使用方法请提前与布谷鸟确认。
RS232_RX在Orin端对应的设备符为/dev/ttyTHS0。
连接外部设备时,接64pin中的Orin_RS232_RX。使用双Orin线束时,请连接AK_USS1_TRX。
通过1路1PPS_IN,可配合外部时间源,获取同步时间等信息。
PPS电压范围3.3~16v。PPS内部同时接到Orin和MCU。
PPS线束线端插头,分别是PPS_IN和GND,如下图所示。如线束工艺有变更,以实际线束上的标签为准。
外接PPS后,Orin端可通过如下命令验证:
sudo ppstest /dev/pps0
AWU407含1路视频输出接口,需使用支持GMSL2的显示器或外接转接设备。具体型号请与布谷鸟确认。AWU407-A02不支持此功能。
视频输出可选择输出相机视频(最多支持1组4个相机同时输出)或Ubuntu系统UI。
如需输出相机视频,需在nvsipl_camera相机命令中加入-d 1参数,并通过systemctl status lightdm命令查看lightdm服务未开启(默认未开启)。相机视频大小位置等不可调整。仅可以运行一次,退出后再运行需重启Orin,否则会报错。
如需输出Ubuntu系统UI,需使用sudo systemctl start lightdm命令开启lightdm服务,并使用debug board上的USB接口连接鼠标键盘操作。但英伟达制作的Ubuntu系统UI比较简单,不建议在UI下开发。布谷鸟也不提供这一功能的支持和维护。
开发调试阶段,可通过定制debug board(RS232转USB),使用串口访问Orin-X/AURIX,串口波特率为115200。
用户可通过NVME SSD(U.2接口)扩展存储空间,支持的白名单为布谷鸟定制款、Samsung PM9A3和Western SN640,实际验证最大4T容量可支持。
使用前,请正确安装转接线,域控侧的正确连接时应能听到卡扣扣紧声,NVME SSD侧也需牢固连接避免松动。
系统上电后可以使用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)。
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。请提前与布谷鸟确认,以便提供所需工具。
通过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串口输入phy-status命令检查车载以太网phy配置(千兆/百兆,master/slave);
通过MCU串口输入switch-status命令检查vlan id的port;
网卡配置是否正确,包括vlan(/etc/netplan/01-network-manager-all.yaml);
如果Orin端配置了vlan,并且switch外接电脑的port口是tagged,那么本机也需要配置相应vlan。
请确认相机型号是否支持,是否插在支持的GMSL2接口。
检查线束和相机以及fraka接口是否链接正常,相机端GMSL线束电压和板端电压在12v左右。
检查驱动是否正确。
请确认触发命令/参数/操作步骤是否正确,nvsipl工具测试相机是否正常初始化和帧率是否正常。
如使用camera SDK,检查相机配置文件(camera.config, nvmedia_camera.config)。
尝试插在其他支持的GMSL2接口,尝试更换线束,相机,交叉验证。相机单品线下检查是否正常。
针对某些特定相机,需要跳过前50帧数据,再取图。
检查ffmpeg或者ffplay工具的参数设置是否正确,如分辨率,yuv格式。
请勿带电插拔相机!
检查终端电阻(Orin-X的CAN都没有终端电阻,Aurix除了CAN 5有终端电阻外,其他都没有)。
确认CAN卡配置为canfd还是普通can,采样率500k和2M一般都是80%
示波器检查pps信号源。
检查/dev/ttyTHS*是否存在;
检查串口波特率设置是否符合要求;
本机串口驱动是否安装或者加载;
验证串口针脚收发功能是否正常。
检查debug线连接是否正常;
检查debug board供电。
如果在设备维护或故障处理过程中,遇到难以确定或难以解决的问题,通过文档的指导仍不能解决,可通过线上技术支持体系、电话技术指导、远程支持及现场技术支持等方式获取及时有效的技术支持。