本专栏停更了2个星期,主要是因为工作中遇到了一个autosar以太网协议栈的bug,当然主要是因为我们公司使用的SIP包比较陈旧导致的部分patch没有,所以在通讯负载比较高时出现了问题,等后续也整理成文档分享出来。
本章节主要承接上一个博客《Marvell88Q5152交换机开发(2)-配置修改和集成》补充介绍一下配置工具的使用细节,这里主要介绍一下Board configuration的配置。
如上图所示:需要add并且enable对应的单选框才能在xml中生成对应模块的配置项。例如:1. port configuration需要add并且enable1.port才能生效。
General Settings配置
如下图所示这个配置栏非常简单,只有一个Target Device ID的配置,看着不多但是这个配置很重要,这个参数直接决定了switch芯片的SMI的访问地址,当使用单芯片模式时默认是0不需要修改,如果想要使用多芯片模式那就需要需改为对应的地址。
需要注意的是,这个配置会在CPU固件启动后需改bootstraps的硬件配置地址。
Port Configuration配置
88Q5152共有10个port,其中port0是switch内部的port与ARM R52的MAC连接。
1.需要但左边的单选框选中要配置的port的
2.Mode选中Forwarding模式,此模式表示port口的收发使能如果选择disable模式则端口不通,对于一个port来说有4种模式,但是GUI工具只有2个模式。
| Disabled | 不允许帧进入(ingress)或离开(egress)一个被禁用的端口 |
| Blocking/Listening | 阻塞/侦听阻塞端口只允许MGMT帧进入(ingress)或离开(egress)。所有其他的帧类型都被丢弃。在阻塞端口上禁用学习功能 |
| Learning | 只允许MGMT帧进入(ingress)或离开(egress)。所有其他类型的帧都将被丢弃,但所有良好的非mgmt帧都将被学习,因为这些帧没有被过滤掉 |
| Forwarding | 所有帧都是允许的 |
3.802.1q mode会影响port口接收到vlan报文时的处理策略,有四种模式可以配置
| Disabled | 收到报文时不做vlan table检查,所以报文都可以直接由vlan base table的规则转发 |
| Fallback | 报文的vlanid在vlan table中,需要port即是vlan table对应的vlan条目中同时目标和源port也要满足vlan base table的转发规则。 如果报文vlanid不在vlan table中,只需要满足vlan base table的转发规则就可以发送 |
| check | 模式只检查vlanid是否在vlan table中,并不关心ingress port是否在对应的条目成员中。如果vlan id不在vlan table中会被丢弃,在vlan table中但是port不是对应条目的成员不会被丢弃 |
| secure | vlanid必须在vlan table并且ingress port也必须时条目的成员,否在丢弃报文 |
4.Hard limit和Hard Multiplier是port口的egress流量限制,一般不会项目中不会配置这个参数,配置流控限制后会导致丢包,处理时要慎重
5.Schedule Mode是port口的优先级队列的调度算法,默认是加权轮询,如果有AVB的需求就要配置优先级轮询模式,5152支持8个配置模式。
| 0 | 加权轮询排队, |
| 1 | 7 strict优先级,其他加权轮询(strict:严格最高) |
| 2 | 7,6 strict优先级,其他加权轮询 |
| 3 | 7,6,5 strict优先级,其他加权轮询 |
| 4 | 7,6,5,4 strict优先级,其他加权轮询 |
| 5 | 7,6,5,4,3 strict优先级,其他加权轮询 |
| 6 | 7,6,5,4,3,2 strict优先级,其他加权轮询 |
| 7 | 全部使用strict优先级 |
6.TSN Mode,PCP,DSCP优先级映射以及STU映射表,一般不去设置,后续在AVB中在介绍
7.queue配置主要有队列egress流量限制(Limit,Multiplier,mode)。每个port有8个输出队列每个队列都有对应的限制规则。
模式(mode) | 0 | 动态限制队列使能 |
1 | 硬件限制队列使能 | |
乘数(Multiplier) | 0 | 队列size乘以1 |
1 | 队列size乘以4 | |
2 | 队列size乘以8 | |
3 | 队列size乘以16 | |
值(limit) | 队列值 |
Fireware Configuration配置:
fireware配置主要配置5152的R52运行的以太网协议栈的mac地址,以及switch配置的版本号和功能安全监控心跳。
1.心跳配置主要是通过UDP报文实现,通过配置dts mac以及后续章节配置的转发关系,可以确认udp报文会转发给那个设备,从配置内容看很好理解,就是一些基本的周期和udp的port口信息。只需要在monitor设备中创建udp的服务就可以收到对应的心跳报文。
2.Customer Information主要用来区分switch的配置版本号,在固件升级以及版本管理时需要回去这个版本号检验。后续在介绍RMU模块时会说明这个版本的读取方式。
MAC地址就是swith的单播地址。
3.其他的2个配置一般不会用到这里不做过多的说明。
DLT Configuration配置
DLT(Diagnostic Log and Trace)这个是应为车载以太网功能安全需要加上的功能,switch的固件会周期的上报DLT报文给到特定的端口和心跳报文类似都是UDP报文。
DLT有标准的信息格式规范,在wireshark中也有格式解析支持,这里只介绍一下 Default Log Level,在车载系统中一般会设置为0关闭DLT
| 0 | DLT_LOG_OFF | 关闭log |
| 1 | DLT_LOG_FATAL | 致命且不可恢复的错误。因此,此类消息应极为罕见地出现。整个(子)系统的稳定性可能会受到威胁 |
| 2 | DLT_LOG_ERROR | err信息 |
| 3 | DLT_LOG_WARN | 警告信息 |
| 4 | DLT_LOG_INFO | info信息 |
| 5 | DLT_LOG_DEBUG | 调试信息 |
| 6 | DLT_LOG_VERBOSE | 深度调试信息 |
Runtime Operation Settings配置
当打开marvell的配置工具会发现,工具提供了转发规则的配置以及port的使能配置,但是没有PHY初始化以及port的带宽模式等初始化配置。这个窗口就是用来做port以及phy的初始化配置用的。
基本原理就是配置生成SMI的寄存器配置指令。
1.在空白窗口右击新建一个operation list,然后设置自定义名字
2.右击operation list,选择导入操作。也可以选择Add Register Setting这样的操作,单独添加一个寄存器的读写指令。一般情况下建议直接导入
3.导入脚本是txt格式数据,格式描述。附件会提供port口的初始化脚本。port配置指令是闭源的可以找marvell要,一些开源寄存器的操作可以自己写(关闭端口自学,MTU设置等)。
4.可以调整初始话的执行顺序,通过左边菜单栏的配置列表拖拽