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.

PROCESSOR-SDK-AM64X: flashing OTP keywriter per SD card

Part Number: PROCESSOR-SDK-AM64X
Other Parts Discussed in Thread: SK-AM64B, SYSCONFIG, TCA9538, TCA6424

Tool/software:

Hi experts,

I am working on a custom board where we need to program the OTP keywriter to transition our device from an HS‑FS to an HS‑SE state. However, our board does not have a USB‑DFU, UART, JTAG, or OSPI port available. Therefore, we are exploring the possibility of flashing the keywriter via an SD card.

Currently, I am using an AM64x SKEVM for development and testing since I do not yet have access to our custom board. I have followed the guide up to “Step 3: Generate the Keywriter Binary” and successfully generated the keywriter binary. I then attempted to boot the board using an SD card with the tiboot3.bin file placed on it. Unfortunately, I received no output on any of the debug UARTs.

1. is it possible to flash the OTP keywriter using an SD card?

2. what steps must be performed to make it possible if so?

Any additional documentation or guidance regarding flashing the keywriter via SD card on a custom board would be highly appreciated.

Thank you for your support.

Best regards,

Jano Klaus

  • Hello,

    There is nothing specific about booting keywriter from SD card.

    Do you already have a working setup of booting normal images like SBL or U-Boot from SD card? If yes, then you would need to simply replace the existing tiboot3.bin with the Keywriter's tiboot3.bin.

    If not, please create the bootable SD card with the following guide & confirm you are able to at least boot the R5 SPL.

    AM64x Starter Kit Quick Start Guide

    Regards,

    Prashant

  • Hi Prashant,

    Thank you for your earlier response.

    I wanted to follow up regarding the keywriter binary boot issue. I have a confirmed bootable SD card environment on our AM64x SKEVM—other images (such as SBL, U-Boot, example applications, and even self-built images) boot correctly. However, when I replace the tiboot3.bin with the keywriter binary (as generated per the OTP Keywriter User Guide and the website guide with the exact versions), I receive no output on any debug UARTs.

    Here are some additional details:

    Boot Environment: The SD card setup works flawlessly with other binaries.
    Guides & Versions: I followed both the keywriter guide from the website and the AM64X_AM243X OTP Keywriter User Guide.pdf, using the recommended versions.
    File Transfer Methods: I’ve tried copying the binary onto the SD card directly from the VM and also via SSH from my Windows PC, but the result remains the same - no boot.

    Any further guidance or documentation you could provide would be highly appreciated.

    Thank you for your support.

    Best regards,

    Jano Klaus

  • Hi Jano,

    I did not notice you were using SK-AM64B board. I do see the issue on this board.

    It turns out the Keywriter v10.00.08 has eMMC enabled in the Sysconfig while the SK-AM64B board doesn't have eMMC. Due to this, the execution got stuck in the eMMC initialization and so there are no UART logs.

    Please delete the Bootloader instance from the keywriter sysconfig which removes the MMC instance as well:

    After this, the keywriter boots but would still fail as the keywriter doesn't have the support for SK-AM64B which has different IO expander than EVM which is used for enabling VPP.

    Following is the FAQ to enable the OTP Keywriter for SK-AM64B

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1198808/faq-how-to-run-otp-keywriter-on-sk-am64b

    Regards,

    Prashant

  • Hi Prashant,

    Thank you for your guidance! The FAQ helped a lot too.

    For future users that may see this too i want to update the 2 year old FAQ a bit for faster debugging, i used the lates SDK version 10.0:

    {MCU+SDK_INSTALL_PATH}/source/board/makefile.am64x.r5f.ti-arm-clang in FILES_common "ioexp_tca6424.c \" needs to be replaced with "ioexp_tca9538.c \"

    {MCU+SDK_INSTALL_PATH}/source/board/ioexp/ioexp_tca9538.c every "i2cTransaction.slaveAddress = i2cAddress;" needs to be changed to "i2cTransaction.targetAddress = i2cAddress;"

    Best regards,

    Jano

  • Thank you for the contribution, Jano.