This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

IBL loading in I2C Slave Mode

Hi, 

We are trying to boot the DSP EVM6657 in I2C Slave mode. We have connected the I2C to a ARM processor that acts as the I2C Master in this scenarios. 

The reason we are doing that is to boot the DSP and set it up so that is has the correct PCIe configuration so that we can further download stuff using PCIe  from the Arm processor (DSP PCIe Boot does not work for us because the default BAR are not accepted by our ARM). This is technically roughly the same as what the 6678 is doing. 

So we built a IBL with only the PCIe Workarround (code took from the IBL example) and a few other settings and we managed to program the EEPROM with it and it runs and we can access the PCIe from the ARM once it is booted. 

If we try to load this same IBL with the DSP in I2C Slave Boot Mode, we are able to load it and boot it but it does not get out of the loop when it waits for PCIe PLL Lock. 

while (!lock) {    CSL_BootCfgGetPCIEPLLLock(&lock); }

So we are a bit confused about what is different between I2C Master and I2S Slave. Is there anything that the FPGA or the RBL does differrent that would make the same code behave differently ? or is it because the PCIe is connected to a host ARM that is running while we are trying to run this loop ??

Help would be greatly appreciated. 

  • Can someone please respond.

  • while (!lock) {    CSL_BootCfgGetPCIEPLLLock(&lock); }

    This code is checking

    This code is checking PCIE_SERDES_STS (0x262_015c bit 0) if PLL is locked or not. See PCIE user guide: 2.3.1.2 PCIe SerDes Status Register (PCIE_SERDES_STS).

    Where did you get the PCIE reference clock for EVM6657, from ARM or on board? Did the same setup pass this check when you connect ARM processor with 6657 in PCIE boot mode?

    Regards, Eric

     

  • Thank you Eric  for the response. 

    We have made some progress. It works if we use the DSP local clock but we want to work off the ARM's PCIe clock. The problem is that the PCIe clock (on the ARM) does not get enabled until very late in the boot process and we cannot get the DSP to be detected as a PCI device in that condition. 

    Our plan (let me know what you think) is to keep the DSP in Reset until we set the PCIe clock in UBoot on the ARM side. Then we will download (using I2C) an IBL that will initialize the PCIe on the DSP (same as we did before), then we will start the kernel on the ARM side and hope that the DSP can be enumerated properly. 

    Claude

  • Claude,

    This should work.

    Regards, Eric