• 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内部的非透明桥的协议配置,估计还会遇到不少困难~

  • 相关阅读:
    BEV(Bird’s-eye-view)三部曲之二:方法详解
    在JavaScript中,什么是生成器函数(generator function)?它的作用是什么?
    Django ORM 单表操作
    递归方法实现字符串反转函数
    Meta开源新工具啊,Git地位危险了?
    中集集团飞瞳全球港口航运人工智能领军企业中集飞瞳,成熟港航人工智能AI为港口船公司大幅提效降本,新一代智慧港口智慧船公司解决方案
    P5733 【深基6.例1】自动修正
    界面控件DevExpress WPF(v23.2)下半年发展路线图
    c语言 编程及答案
    Java竞赛快速输入输出,防止读取数据过慢导致超时
  • 原文地址:https://blog.csdn.net/qq_37147721/article/details/127852415