以太网开发指导FAQ
FAQ001: 以太网唤醒
问:唤醒包是任意包还是特定包?
FAQ002: vlan与tso
问:如果配置了vlan进行数据收发的话,是不是必须把tso给关掉?
FAQ003: IP与MAC
问:保存在EMMC里面的MAC和IP,是否有保护措施,让用户没有机会随便修改,如果有,能否介绍下?
FAQ004: TSN
问:我们支持哪些TSN标准?
增强型整形机制(Enhancements to Scheduled Traffic, EST)(IEEE 802.1Qbv-2015)
帧抢占(Frame Preemption, FPE)(IEEE 802.1Qbu-2016)
FAQ005: 硬件特性
问:matrix5-双J5的MAC1接的PHY芯片是88EA1512,但是看驱动里面PHY1的compatible是"marvell,88E1518",请问下这两个是什么关系?
问:ETH工作电压是否支持3.0V mode?
CAN开发指导FAQ
FAQ001: CAN驱动相关问题
问:CAN的实时性怎么保证?

数据发送时,如果其他模块中断很频繁,可能导致无法及时发送数据;
数据接收时,中断不能及时由GIC分发给CPU处理、软中断无法被及时调度到,都会影响实时性。Linux无法保证较高的实时性。
问:CAN的软中断用的哪种类型?中断线程化之后,还有没有软中断?
napi_schedule的实现如下:
最终通过__raise_softirq_irqoff(NET_RX_SOFTIRQ)调度软中断的执行;
NAPI的这个软中断使用的是NET_RX_SOFTIRQ,优先级低于tasklet。
软中断是每个CPU上有一个线程:softirqd,线程的调度策略是SCHED_NORMAL,softirqd做的事情是检查软中断标志是否被设置,如果设置了,执行相应的额action;
中断线程化之后,中断变成线程,优先级默认是50,调度策略为SCHED_FIFO;
因此,中断线程化之后,还有软中断。
问:中断线程化后,调整当前线程的优先级,能够保证can数据收发的实时性吗?但是上层协议层的延迟还是没办法保证是吧?
问:CAN里面的mtu能具体展开讲一下吗?
对于CANFD,MTU是72,对于CAN,MTU是16;
对于Linux socket CAN,MTU代表什么,可以直接看内核代码:include/uapi/linux/can.h
问:CPU不及时读取CAN数据导致溢出,这个是否有打印信息?
答:
数据的溢出可能在两个地方:
硬件上mailbox全部填充满,导致无mailbox可以用,导致溢出。
maibox这边的溢出可以通过ifconfig查询:
溢出的话,这两个参数会增加:
offload->dev->stats.rx_over_errors:对应ifconfig中的frame
offload->dev->stats.rx_errors:对应ifconfig中的errors

2. 队列队列长度超过最大长度导致溢出。
中断服务函数将skb插入offload->skb_queue队列的时候会判断长度是否超出offload->skb_queue的最大长度,如果超出了,就会有debug的打印信息。
问:CAN支持多少mailbox?
答:
CAN的mailbox空间总共2048字节,对于CAN标准帧,数据部分8字节,CAN帧头部8字节,一共16字节。所以对于CAN标准帧一共2048/16 = 128个。
对于CANFD:支持的携带的数据大小:8、16、32、64字节,CAN帧头部还是8字节,RAM空间分为4个Block
每个Block支持的mailbox数量:512除以mailbox大小,例如CANFD携带16字节数据,mailbox大小为16+8 = 24,512 / 24 = 21.33333取整数部分等于21,21个mailbox其实只使用了21*24 = 504,剩下的不够存一个mailbox了。

问:CAN ID过滤CAN帧在软件还是硬件实现?
答:
CAN ID的过滤在软件实现,硬件也支持ID过滤,但是没有使用。
CAN ID过滤可以看下图的数据接收过程:

FAQ002: 基础知识相关
问:CAN的速率好像还没有spi和i2c高,既然速率这么低,为啥汽车里面还要用CAN作为数据传输的主要通路呢?
为什么要发明CAN总线:

CAN的几个优势:
差分信号传输,抗干扰性强;
没有主从关系,并且只需要两根线,解决现代汽车中庞大的电子控制装置之间的通讯,减少不断增加的信号线;
CAN总线方式连接的控制单元中有一个发生故障,其它控制单元仍可发送各自的数据,互不影响
通信距离较长。
I2C/SPI一般用于电路板内的通信,CAN用于汽车组件之间的通信。
FAQ003: CAN使用相关问题
FAQ003: CAN使用相关问题
问:CAN的采样点设置为多少比较好?
答:
J5只需要和总线上的其他设备保持一致即可。
一般采用如下配置:
75% when 波特率 > 800K
80% when 波特率 > 500K
87.5% when 波特率 <= 500K
