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.

TPS65987D: SPI Flash Region 1

Part Number: TPS65987D
Other Parts Discussed in Thread: TPS65987

Hi,

I'm seeing an issue when TPS65987 loads the patchset+profile from "Region 1". It seems to always return wrong "Version (Reg. 0x0F)", as it always returns 0xF7071000, instead of 0xF7071008 as it should. When the patchset is loaded from "Region 0" the Version (Reg. 0x0F) correctly returns 0xF7071008.


Interestingly the custom profile is not affected and I'm able to properly negotiate custom PDO but my fear is that I will see other differences if indeed the latest TI Patch 0xF7071008 is not working with its fixes/modifications.

As a possible hint, looking through binary I see only 2 places that contain " 0xF707", one in the beginning of the Region area contains correct "0xF7071008

but few hundred bytes lower there's a "0xF7071000", maybe that's something, or perhaps just a weird coincidence.

Could you please help clarify what are the consequences of the version coming back the older patch 0xF7071000?

Thanks,

Ilya

  • Hi,

    Thanks for reaching us. 

    I've assigned this issue to the relevant expert who will get back to you shortly. 

    Thanks

    Prajith

  • Hi Ilya,

    A few questions:

    1. Are you seeing this issue on an Evaluation Module?
    2. If the platform is your custom platform, how are you programming the SPI flash? Meaning, are you using an external EC / microcontroller to program it?
    3. Can you share the readout of the Boot Flags register (0x2D) when you see the error?

    Regards,
    Kedar

  • Hi,

    1. I don't have an existing set up for Eval module.

    2. I have tried both via microcontroller and simply "in line" flashing the SPI flash via Aardvark tool using the generate "full image" binary. Both cases result in version reading 0xF7071000, so far it seems like the only consequence.

    3.  This is the Boot Flags Register (0x2D) 0x00000030 000006a2 00000078   - (speaking of which, the specification doesn't seem to indicate the meaning behind bytes [5-8] i.e. 0x000006a2)

    Thanks,

    Ilya

  • Hi,

    To further clarify (2):

    In order to force the load from Region 1 instead I simulate "corruption" by erasing the header for Region 0 [0x0000, 0x1000).

    Regards,

    Ilya

  • Hi Illya,

    To your last point, it is not recommended to touch the header regions. Corrupting the data that the header points to would do as well. 

    Just for clarification, are you trying to test the redundancy or is there a scenario where you ended up with the PD controller trying to boot from Region #1 instead of Region #0?

    Based on the data you provided, it looks like both Region #0 and Region #1 were attempted (0x00000030).

    Can you please share your binary and configuration (PJT file) for a review in parallel?

    To answer your original question, there are significant differences between versions F7071000 and F7071008. Using the latest and greatest patch is always recommended.

    Regards,
    Kedar

  • Hi,

    Corruption could theoretically happen in any part of the flash, so this was what I was simulating.

    I'm trying to test redundancy. Is there a known issue with booting from Region #1? 

    How can I privately share the project file?

    I certainly understand there are big differences between the 2 versions. Is the issue with the fact that it fails to load the patchset F7071008 completely, or that it fails to correctly read/populate the patchset version register when working with Region #1?

    Thanks,

    Ilya

  • Hi Ilya,

    This is a known issue in the device documented in the release notes. Quoting the release notes' excerpt:

    "The device currently doesn’t attempt to boot from high region (pointed by RegionHeader-1) if the first four bytes of the low-region binary pointed by RegionHeader-0 contain an invalid device-identity tag."

    Regards,
    Kedar

  • Hi Kedar,

    #edit

    During my latest experiments I was not properly deleting the "middle" page. So this seems to work as experiment for "corruption". Meaning, if I erase random page out of the Low Region I get proper high region patch version. It seems like erasing header also creates issues loading from high region.

    Thanks,

    Ilya