1、在主循环while(1)里,循环检测DEBUG0寄存器的LSSM_STATE位,如果不为0x11,则触发HardReset,重新启动EEPROM中的IBL代码,在该代码中进行PCIe的初始化。这种方法能实现自动建链。但我感觉这样效率有点低。2、另一种方法是开启PCIe的PCIEXpress_PM_INT中断,主机重启时,会触发该中断,然后在中断服务程序里进行PCIe的初始化(包括pciepowerDown)或触发HardReset。该方法有个问题,即主机重启后,不能完成建链,需要主机再重启一次才能完成链路的建立。
PCIEXpress_PM_INT中断触发的时间有点晚,即错过了主机枚举PCIE设备的时间。通过测试,LSSM_STATE。=0x11的时间要比PCIEXpress_PM_INT中断早,差不多早200us左右。
亲您好,PCIe电源自启动(PES)是PCIe设备的关键功能,用于使PCIe设备能够自主启动,并持续供电以保持运行状态。PES的工作原理是:当PCIe设备接入电源时,内部的检测电路会激活PCIe设备的PCIe电源自动检测器。这个检测器将检测出PCIe设备的服务电源是否达到规定的电压水平,如果达到,则检测器就会向PCIe设备发出一个电源良好信号,以告知PCIe设备可以启动。
当PCIe设备检测到电源良好信号时,将会启动PCIe设备的供电接口。这样,PCIe设备就可以从电源中获得足够的电流,使其能够正常工作。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)