AM62L: AM62L OTP Programming Support

Part Number: AM62L
Other Parts Discussed in Thread: TCA6424A

Dear Team,

We are performing OTP programming on the AM62L and have connected the VPP pin as required. Before programming the OTP, we would like to confirm that the OTP programming setup and feature are functioning correctly. Is there a recommended method to verify/confirm the OTP programming feature without actually programming any OTP bits?

Regards,
J Janani

  • Hello,

    Is there a recommended method to verify/confirm the OTP programming feature without actually programming any OTP bits?

    There is no direct method for this. If there is an issue with the VPP, the TIFS won't be able to program the OTP successfully and returns error. If the VPP is indeed correct and there is an issue with the OTP payload, the TIFS would return an error.

    If the OTP payload and the VPP correct, the TIFS would program the OTP successfully.

  • Hello,

    Thank you for your response.

    I have a few follow-up questions regarding OTP programming. Could you please help clarify the points below?

    1. In the AM62L datasheet, I noticed the statement "No support for eFuse defaults of all register values." Could you please explain which registers are associated with the eFuse by default, if any?

    2. I also referred to the OTP programming User Guide:
    software-dl.ti.com/.../UG-Programming-OTPs.html

    However, I could not identify which specific register corresponds to the eFuse. Could you please clarify this?

    3. I would also like to confirm whether my understanding of the OTP programming flow is correct:

    * Fuse Mode (0x00009045): This parameter is a mandatory safety validation tag that identifies the payload as the System Firmware Security Software Revision (SYSFW SWREV) block.
    * Dedicated Address (0x82000000): This is a specific system RAM location used as a temporary staging area to hold your formatted security keys.
    * Fusing on the AM62L EVK: The EVK enables the VPP programming voltage by sending I2C commands to the onboard TCA6424A I/O expander (I2C address 0x22) before initiating the fuse programming operation. The external 1.8 V VPP supply is disabled by default to prevent accidental OTP programming.

    Please let me know if my understanding is accurate or if any of these points need correction.

    4. You mentioned that, "If the OTP payload and the VPP are correct, the TIFS would program the OTP successfully." How can we verify that the OTP payload is correctly formatted and valid before attempting to program the OTP? Is there any validation method or tool available to confirm the payload without permanently programming the eFuse?
    Also how to confirm that the payload value is correct

    Thank you for your support.

  • Hello,

    1. In the AM62L datasheet, I noticed the statement "No support for eFuse defaults of all register values." Could you please explain which registers are associated with the eFuse by default, if any?

    I am checking the AM62L datasheet but don't find any such statement. Can you please share the link to the document you are referring to?

    2. I also referred to the OTP programming User Guide:
    software-dl.ti.com/.../UG-Programming-OTPs.html

    However, I could not identify which specific register corresponds to the eFuse. Could you please clarify this?

    This is not a concern from the user perspective. The U-Boot provides the `fuse` command to R/W the OTP data. Please note this guide is for the general purpose OTP efuses which differs from the one where you program your keys and other fields to convert the device to HSSE-Lite.

    https://software-dl.ti.com/processor-sdk-linux/esd/AM62LX/12_00_00_07_04/exports/docs/linux/Foundational_Components/U-Boot/UG-Key-Writer-Lite.html

    * Fuse Mode (0x00009045): This parameter is a mandatory safety validation tag that identifies the payload as the System Firmware Security Software Revision (SYSFW SWREV) block.

    The value relates to the TISCI message to identify the keywriter type

    https://software-dl.ti.com/tisci/esd/latest/2_tisci_msgs/security/keywriter_lite.html#sec-api-keywr-lite-program-keys

    * Dedicated Address (0x82000000): This is a specific system RAM location used as a temporary staging area to hold your formatted security keys.

    More specifically, the buffer holds the keywriter payload formatted as per the structure described here

    https://software-dl.ti.com/tisci/esd/latest/6_topic_user_guides/key_writer_lite.html#keywriter-lite-blob

    * Fusing on the AM62L EVK: The EVK enables the VPP programming voltage by sending I2C commands to the onboard TCA6424A I/O expander (I2C address 0x22) before initiating the fuse programming operation. The external 1.8 V VPP supply is disabled by default to prevent accidental OTP programming.

    The VPP can only be controlled via the I2C on the TI EVM.

    How can we verify that the OTP payload is correctly formatted and valid before attempting to program the OTP? Is there any validation method or tool available to confirm the payload without permanently programming the eFuse?

    There is no tool to validate the keywriter payload. To avoid manual errors, you may use the following tool to generate the keywriter blob

    https://github.com/TexasInstruments/security-utils

    Also how to confirm that the payload value is correct

    It is the responsibility of the user to ensure the values in the payload are indeed the expected ones. As long as the payload is intact, the TIFS would parse the values and program them. If the payload is corrupted, TIFS would detect through the checksum appended in the keywriter payload.