PCIe Switch PM40028调试

背景:项目使用到了一款PCIe Gen4的Switch芯片用于高速数据的交换,芯片型号为PM40028,制造商为microchip。


 前期工作:

初期参考Demo板设计了电路。

 回板后按照原厂要求进行测量,测量电源电压、电源纹波、电源的上电时序,100MHz时钟,复位信号,这些都没有问题了。

 然后使用chiplink工具进行配置,配置一些ID,ECC校验,IO之类的内容,再结合官网上的固件,在linux环境中编译出一个.data格式的文件,将这个文件使用裸芯片的方式(使用的是Dediprog的SF700工具)烧写进外置的flash芯片中,再上电,理论上就可以成功启动,并且从UART中打印出一些log。

 问题描述:

但是在这一步里面遇到了问题,上电后串口一直空空的,没有打印信息。我们反复测量硬件部分,也检查软件配置,同时也对串口部分的电路进行测试(因为他的串口是1.8V电平,我们这里使用了一个电平转换芯片,因此也做了些响应的测试),还是没有效果;

又因为这款芯片是指定了一些flash型号的,因此我们也更换了列表中的其他几款的flash(BGA24封装,这次可是把焊接技术练好了)进行测试,但都不行;

用逻辑分析仪测量PM40028与FLASH之间的QSPI芯片,发现芯片发出了读取的命令,但总是读了几下就停住了,看这数据量就觉得远远不够。

 我们还以为是QSPI的数据在传输过程中传错了,又拿有源探头去测量,发现信号的质量是很不错的,没有啥问题。

 问题解决:

最终,我们是在芯片的boot引脚设置的位置发现了异常,我们的boot引脚中有一个是用来设置启动时是按照4B方式还是3B方式启动的,我们的配置是4B,但是从逻辑分析仪抓出来的数据中,发现地址一直是3B方式,似乎有些不对应。

我们想过更换容量更小的flash来测试,修改boot引脚设置为3B来测试。但新的flash还没有到货时,我们只修改了boot引脚时,却发现整机电流跑上来了,而且串口竟然打出来数据了。通了!


最终问题的根因也不知道是什么,芯片手册中写道:如果使用的flash大于等于16MB,就是用4B模式,否则使用3B模式。我们使用的是512Mbit(64MB),理应使用4B,但是就是不可用,更改为3B后竟然神奇的通了。

虽然这一部分通了,芯片能够启动了,但是后续的工作才是更重要的:PCIe Gen4 那16Gbps的速率不知道实际上能跑到多少,还有switch内部的非透明桥的协议配置,估计还会遇到不少困难~

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值