AM263P4-Q1: sbl program flash fails and throws memory write failure

Part Number: AM263P4-Q1
Other Parts Discussed in Thread: UNIFLASH

Hi TI team,

I am working with an AM263Px custom board using an IS25LX256 OSPI flash device (same flash part as used on the EVM).

The OSPI interface appears to be functioning correctly. I am able to program my main application using CCS, and the application runs successfully from the board.

However, I am unable to program the SBL using UniFlash. I have tried multiple boot modes, including UART boot, OSPI boot, and DEV boot, but the programming process always fails. UniFlash reports:
[10/22/2026, 4:20:23 PM] [ERROR] Cortex_R5_0: Run failed...[10/22/2026, 4:20:23 PM] [ERROR] Cortex_R5_0: File Loader: Memory write failed: Timed out waiting for target to halt while executing am263px_cc_flasher.out 

Since the application can be programmed and executed successfully, I believe the OSPI flash hardware is operational. I would like to understand whether there are any additional requirements, board configuration dependencies, or custom-board considerations that are needed for UniFlash/SBL programming on AM263Px.

Am I missing any setup steps, configuration settings, or prerequisites specific to SBL programming on a custom board?

Thank you for your help.

  • Likely cause

    You're running the EVM's prebuilt flasher (am263px_cc_flasher.out). That binary carries the EVM's OSPI pin mux and flash configuration. On a custom board, it can hang before reaching its halt point — which UniFlash reports as "Timed out waiting for target to halt." The fact that CCS can load and run your application does not cover this, because your application has its own (working) OSPI config while the stock flasher does not.

    A custom board requires a rebuilt flasher plus a rebuilt SBL, both using your board's flash and pin configuration.

    Sequence to follow

    1. Validate your OSPI configuration standalone

    Run the SDK ospi_flash_io example with your board's flash/pin settings. Passing erase and write/read confirms both the flash configuration and the hardware interface before you involve UniFlash 1.

    2. Build a custom flasher

    Build tools/flasher/jtag_uniflash from the SDK using the same flash, pin, and OSPI configuration you just validated. Point UniFlash at the generated .out as the custom flasher instead of am263px_cc_flasher.out 1.

    3. Rebuild the SBL with the same configuration

    A custom flasher alone is not sufficient — the SBL itself must carry your custom flash and OSPI pin configuration 2.

    4. Set OSPI boot mode to boot

    After flashing, the board must be in OSPI boot mode for the SBL/application to boot. DevBoot mode was the cause of a previously reported custom-board boot failure 2.

    Verification notes

    Item Detail
    Default app location Flash offset 0x81000, mapped at 0x60081000 — use this address for readback/checksum unless you changed the SBL boot image offset 2
    Address mappings 0x60000000 and 0x80000000 are functionally equivalent when AB swap is disabled 3
    UniFlash Memory Browser May display zeros even after a successful OSPI write. Verify with CCS Memory Browser or a flash-read API in your application 2
    Flash visibility If your application closes the flash/OSPI driver, disables DAC, or remuxes OSPI pins, the flash becomes invisible to UniFlash and CCS. Leaving the flash open restored visibility in a reported case 4

    1. FAQ: AM263P4-Q1 — How to flash/program custom external flashes
    2. AM263P4-Q1: Flashing custom board
    3. AM263P4-Q1: Flash bootloader addresses
    4. FAQ: AM263P4-Q1 — How to read flash memory from UniFlash