Marvell88Q5192 switch调试记录(BSTA1000B平台)

本文详细记录了在BSTA1000B SoC平台上开发调试Marvell 88Q5192 switch的过程,涉及数据链路和控制链路的建立,以及使用JTAG和SMI工具进行调试的步骤。在调试过程中遇到的初始化失败、端口配置、速度测试等问题和解决方案也进行了阐述。
摘要由CSDN通过智能技术生成

本文章主要记录 基于BSTA1000B Soc平台,开发调试Marvell 88Q5192 switch的过程

背景:自动驾驶行业,车载通信使用的是车载以太网,而且由于各种传感器,如激光雷达、雷达、IBOX、IECU等,另外,ADCU控制器,内部可能需要多颗soc,soc通soc之间,也需要接入以太网,那么就需要多路车载以太网的支持,基本最少需要10几路的车载以太网,所以基于此,在黑芝麻BSTA1000B平台上,进行marvell88Q5192的调试工作!

        拿到此任务后,对于以太网这块,之前也没有相关调试经验,首先面对复杂的网络拓扑,先进行梳理,数据链路以及控制链路;

一、 数据链路 & 控制链路:

    首先 5192通过一个口的RGMII信号,连接到BSTA1000B的GMAC0,这个是数据链路,控制通道是通过SMI或者SPI方式控制5192,现在常规做法,可能是switch直接通过switch的固件直接进行配置,或者switch接到mcu(如TC397)上进行初始化,但是我们这边连接到了soc进行控制,所以针对此数据通路、控制通路,需要考虑使用的是 MAC-MAC的方式,还是MAC-PHY的方式,

自我理解,MAC-MAC的方式,就是 不需要 SMI或者SPI等控制去初始化switch(同soc连接的),然后gmac控制器驱动,会自动创建网卡,然后就可以直接通信了,如果是mac-phy的方式的话,需要soc通过smi对switch进行配置,需要phy驱动支持

二、 marvell 88Q5192调试:

marvell 5192可以理解为是两个5152,即marvell的说法,两个die,die0,die1,又可以理解为两个cpu,5192有两个硬件的工具,可以不用写代码,直接去调试5192,JTAG工具、SMI工具

截图如下:

SMI工具,SMI通过SDIO总线,访问marvell5192,JTAG工具,通过JTAG接口访问5192,目前,JTAG工具,功能比较强的,marvell支持的比较好,有专门的工具(windows下)可以烧录marvell5192的固件,可以查看marvell5192内部的所有寄存器

工具入下:

通过飞线,将上述的jtag小板,连接到5192的jtag口,5根线(TXD、RXD,TMS、TCK、GND),然后通过usb线,连接到电脑上后,执行 jtag_rat.exe 后,即可进入到jtag调试命令行界面,如下: 

可以使用的命令:参考同目录下的 jtag_rat.txt

这里常用到的命令如下:

showPorts,可以查看每个端口的状态,如当前的模式,detect状态,speed,link的状态等,非常有用;

showBooStrap:查看硬件管脚初始化状态;

showMIB ALL 1

查看Port1的数据收发情况,用于定位,对用端口上,有无数据

ESURead、ESUWrite:用来读写寄存器

如:ESURead Port_0 0x0 ,读取Port0的0寄存器

PhyWrite45,用于读取phy寄存器

phywrite45 i 1 2 0xF0AD 0x0

                   此处的i,代表的是internel,内部的寄存器

                     此处的1,代表的是哪个端口,如Port0,就是0,Port1就是1

                        此处的2,代表的是哪个设备,即device或者class

                             此处的0xF0AD表示的是哪个寄存器

                                      此处的0表示的是写入的值  

SMI工具界面如下:

调试过程中遇到的问题总结:

1. BSTA1000B Gmac驱动初始化失败问题,出现

bstgmaceth 30000000.ethernet eth0 : bstgmac_hw_setup : DMA engine initialization failed

bstgmaceth 30000000.ethernet eth0 : bstgmac_open: Hw setup failed

此问题,是bsta1000b控制器内部的gmac控制器,初始化时,需要RGMII上有RXCLK信号(针对soc来讲是RXCLK),由于5192需要拉reset后,才会有txclk,所以此问题,需要确保5192有RGMII TXCLK输出,否则会出现gmac驱动初始化失败问题,在测量此信号时,需要注意,要提高采样率,才能捕捉到此信号

2. marvell5192端口配置为百兆后,showPorts可以观察到,然后要测试,需要使用车载以太网转工业以太网转接盒,才能进行测试,此转接盒,需要注意,master、slave模式,谁做主,谁做从的问题,测试新项目时,最好先在现有已测试ok的项目上,测试以下以太网转接盒,是否好使,然后确保测试用的车载转工业以太网的转接盒是ok的,然后使用这个转接盒测试5192才会更有意义,否则不通的话,无法排除是转接盒的问题

3. 千兆以太网测试,需要注意,使用的一定是千兆的转接盒,注意master、slave模式,注意 N/P的线序(不确定的话,可以交叉试下);

4. 截至到2022、7、16号,5192的die1,需要通过die0进行使能,die1才能进行工作;

5. soc 的RGMII同Switch的RGMII连接后,发现发送的包全是bad的,ShowMIB ALL 7可以查看,

然后需要 配置 5192的 TX、RX delay,jtag配置命令如下:

ESUwrite Port_7 0x1 0xe03e,

6. die1的RGMII功能,需要通过配置命令开启:

ESUwrite  0x1b 0x1b 0x13fa
ESUwrite  0x1b 0x1a 0x8000
ESUwrite  0x1b 0x19 0xfce0
ESUwrite  0x7 0x00 0x0e07

且同样需要配置RGMII的tx/rx delay

ESUwrite Port_7 0x1 0xe03e,

7. marvell 88Q5192 的die0,通过spi访问,ReleaseNote中明确说明了 ,不支持Mode2、3

所以,同硬件确认,最好使用 spi mode0进行操作

操作时序,参考 Functional 的pdf文档 SPI Slave章节

8. 通过SMI 访问die1,需要同硬件确认 配置的是single mode还是multi mode,single mode 的话,5192内部的端口会被 开放到SMI总线上,作为smi devcie来操作

附:

jtag工具需要安装驱动,驱动文件《(11条消息) marvell88q519288q611388q5050jtag驱动文件-Linux文档类资源-CSDN文库

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

科技之光666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值