• 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,抛出;2,捕获
    高教社杯数模竞赛特辑论文篇-2023年C题:基于历史数据的蔬菜类商品定价与补货决策模型(附获奖论文及R语言和Python代码实现)(下)
    【图解】JavaScript加法问题
    金仓数据库 KingbaseGIS 使用手册(4. 数据管理和查询)
    ZooKeeper中,关于节点(znode)的一些概念
    【概率论基础进阶】多维随机变量及其分布-二维均匀分布和二维正态分布
    2022.7.25-7.31 AI行业周刊(第108期):值钱比赚钱更重要
    有没有必要考取PMP?
    PC_算计机性能指标
    Audition 2024 for Mac/Win:音频录制与编辑的卓越之选
  • 原文地址:https://blog.csdn.net/qq_37147721/article/details/127852415