我们目前在做 J6/M 域控接入环卫车的调试,希望通过域控读取车辆 CAN 信息,后续在车辆协议、控制使能和安全条件都明确后,再尝试通过 CAN 下发底盘控制指令。
一、我们的使用目标
车辆侧有 CAN1、CAN2、COM3 三个接口。车端反馈如下:
1. CAN1:底盘相关接口,偏单独控车口;
2. CAN2:老款车型上用于和域控通信,也可以控制底盘,目前更像是新域控接入车辆的主要 CAN 口;
3. COM3:陀螺仪/IMU 数据,需要串口转接。
我们希望先把车辆 CAN2 接入新域控,读取车速、档位、转向、制动、驱动状态等底盘信息。后续如果协议和安全条件明确,再考虑控制车辆运动。
二、当前域控侧信息
域控系统信息大致如下:
- Debian GNU/Linux 12
- Linux 6.1.94-rt33-gac7c113a9bab
- AArch64 / ARM64
- 通过 SSH 登录系统后,Linux 侧只看到 lo、eth0、eth1,没有看到 can0/can1/canX。
已经检查过:
ip -br link
ip -details -statistics link show type can
没有 SocketCAN 类型接口输出。
系统中存在以下库和配置:
/dev/ipcdrv
/usr/hobot/etc/nodes.json
/usr/hobot/etc/channels.json
/usr/hobot/etc/ipcf_channel.json
nodes.json 中看到 chassis/pnc/radar 这些 target 通过 ipcf 配置,例如 chassis、pnc、radar 都是 device_type=ipcf。
ipcf_channel.json 中也能看到类似 chassis 对应 channel 4、pnc 对应 channel 5、radar 对应 channel 6 的配置。
结合社区里的 J6X can transfer sample,我们理解这台设备可能不是通过 Linux SocketCAN 直接暴露 can0/can1,而是 MCU 侧接入 CAN,再通过 IPCF/CanHal 转给 Acore。
三、目前想确认的问题
我们现在主要不是想问 CAN 通用协议本身,而是想确认这台域控实际接车调试必须用到的接口信息。因为如果不知道物理 CAN 口、针脚定义和软件通道映射,即使 CAN 协议本身是通用的,也无法判断应该接哪根线、读哪个通道,更无法安全验证后续控制链路。
想请教以下几个问题:
1. 车辆 CAN2 如果作为底盘通信/控制口,新域控推荐接哪一路外部 CAN?
例如 CAN-A-Chassis、CAN-B-BODY、CAN-H-Diagnose,还是其他 CAN 口?
2. 这一路域控线束的接口/针脚定义能否确认?
主要想知道 CAN_H、CAN_L、GND/屏蔽分别是哪根线或哪个针脚,避免接错。
3. 这一路物理 CAN 在软件上对应哪个 Acore 读取入口?
是否应该通过 libhbcanhal 读取 target=chassis?
4. 当前 MCU 固件是否已经启用了 CAN -> IPCF -> Acore/CanHal 的转发?
如果已经启用,对应的 MCU CAN 控制器、IPCF instance/channel、Acore target 分别是什么?
5. 是否有对应的硬件接口说明、线束定义文档或调试指导文档?
我们在社区文档和官网资料里已经查找过,但关于域控硬件接入、CAN 线束定义、底层通道映射这部分信息比较少。我们理解这些信息应该不是个别使用问题,而是硬件出厂和项目部署时就需要确认的基础接口信息,所以想再确认一下。