【发布时间】:2017-06-30 16:26:57
【问题描述】:
非 FD(“传统”)CAN 帧在 SocketCAN 中具有以下格式:
struct can_frame {
canid_t can_id; /* 32 bit CAN_ID + EFF/RTR/ERR flags */
__u8 can_dlc; /* frame payload length in byte (0 .. 8) */
__u8 __pad; /* padding */
__u8 __res0; /* reserved / padding */
__u8 __res1; /* reserved / padding */
__u8 data[8] __attribute__((aligned(8)));
};
帧 ID、长度和数据都有明确的位置,加上一些我们不用担心的填充。但是,对于 CAN-FD 帧,有一个额外的字段:
struct canfd_frame {
canid_t can_id; /* 32 bit CAN_ID + EFF/RTR/ERR flags */
__u8 len; /* frame payload length in byte (0 .. 64) */
__u8 flags; /* additional flags for CAN FD */
__u8 __res0; /* reserved / padding */
__u8 __res1; /* reserved / padding */
__u8 data[64] __attribute__((aligned(8)));
};
flags 字段看起来很有用,但我没有找到关于它实际包含什么的文档。它是内部的(即由内核设置)吗?可能的标志是什么,它们是什么意思?
谢谢!
【问题讨论】: