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.
Tool/software:
Hello,
Our TMDSCNCD263P board will be in an enclosure in a high voltage environment. As a result we cannot easily reach the board and change the boot mode.
Granted, the instructions here (AM263Px MCU+ SDK: TI Uniflash Tool) mention to put the device into DevBoot mode. However, in practice I have been able to flash in QSPI(1S) mode using the onboard XDS110 debug emulator for months until very recently, irrespective of the instruction to use DevBoot. Therefore, I've not been concerned about the need to change the boot mode switches.
My problem is that now, for some reason, it is now failing as shown below:
[10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: ***OnTargetConnect() Launched*** [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: AM263Px Initialization Scripts Launched. Please Wait... [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: AM263Px_Cryst_Clock_Loss_Status() Launched [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: Crystal Clock present [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: AM263Px_SOP_Mode() Launched [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: SOP MODE = 0x00000002 [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: QSPI - 1S Functional boot mode [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: AM263Px_Read_Device_Type() Launched [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: EFuse Device Type Value = 0x000000AA [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: AM263Px_dual_or_lockstep_mode() Launched [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: r5fss0 = 0x00000101 [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: r5fss1 = 0x00000000 [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: R5FSS0 is in Lockstep mode [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: R5FSS1 is in Dual core mode [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: MSS_CTRL Control Registers Unlocked [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: MSS_TOP_RCM Control Registers Unlocked [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: MSS_RCM Control Registers Unlocked [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: MSS_IOMUX Control Registers Unlocked [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: TOP_CTRL Control Registers Unlocked [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: *** R5FSS0 Reset DualCore *** [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: ***R5FSS1 Reset DualCore *** [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: R5F ROM Eclipse [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: R5FSS0_0 Released [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: R5FSS0_1 Released [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: R5FSS1_0 Released [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: R5FSS1_1 Released [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: L2 Mem Init Complete [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: MailBox Mem Init Complete [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: *********** R5FSS0/1 Dual Core mode Configured******** [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: SYS_CLK DIVBY2 [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: DPLL_CORE_HSDIV0_CLKOUT0 selected as CLK source for R5FSS & SYS CLKs [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: CLK Programmed R5F=400MHz and SYS_CLK=200MHz [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: *** Enabling Peripheral Clocks *** [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: Enabling RTI[0:3] Clocks [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: Enabling RTI_WDT[0:3] Clocks [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: Enabling UART[0:5]/LIN[0:5] Clocks [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: Enabling QSPI Clocks [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: Enabling I2C Clocks [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: Enabling TRACE Clocks [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: Enabling MCAN[0:3] Clocks [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: Enabling MMCSD Clocks [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: Enabling MCSPI[0:4] Clocks [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: Enabling CONTROLSS Clocks [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: Enabling CPTS Clocks [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: Enabling RGMI[5,50,250] Clocks [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: Enabling XTAL_TEMPSENSE_32K Clocks [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: Enabling XTAL_MMC_32K Clocks [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: GEL Output: ***All IP Clocks are Enabled*** [10/02/2025, 17:13:12] [INFO] Cortex_R5_0: Writing Flash @ Address 0x60000000 of Length 0x00007ff0 [10/02/2025, 17:13:33] [ERROR] Cortex_R5_0: Run failed... [10/02/2025, 17:13:33] [ERROR] Cortex_R5_0: File Loader: Memory write failed: Timed out waiting for target to halt while executing am263px_flasher.out
As you can see in the log, UniFlash has no problem connecting to the device. I have tried UNIFLASH 8.7 through to 9.0,
I hope you can appreciate that having to change the boot mode from QSPI(1S) -> DevBoot -> QSPI(1S) is wholly impractical for us.
My first request: Please advise why (in principle) the SOC cannot be flashed in QSPI(1S) mode. This might offer some clues as to how I can rescue the situation.
The cause of this issue is because our application configured the Mux to be able to use HSEC_EQEP2_A and HSEC_EQEP2_B for GPIO. This means that the EEPROM becomes disconnected.
This is ostensibly no problem for our application since we are not using EEPROM. However, what is not obvious is that the stock flasher.out file used by UniFlash needs to read the EEPROM otherwise it fails. See TMDSCNCD263P: Why Does the OSPI Flasher Read The EEPROM? - Arm-based microcontrollers forum - Arm-based microcontrollers - TI E2E support forums.
When I restored the I2C connection in my application, the problem was solved and I was once again able to flash with UniFlash in QSPI (1S) mode.
The lesson is that if you want to use UniFlash with its stock flasher.out, then your application must not use pins which communicate with the EEPROM on I2C. The alternative is to make a custom flasher which avoids reading the EEPROM altogether.
Nilabh Anand The question still remains: Why does the manual mandate DevBoot mode for flashing by UniFlash? Why not QSPI (1S)? Is it purely to avoid the situation I have just described or are there other reasons?
Hi Kier,
The lesson is that if you want to use UniFlash with its stock flasher.out, then your application must not use pins which communicate with the EEPROM on I2C. The alternative is to make a custom flasher which avoids reading the EEPROM altogether
The flasher present in Uniflash by default is for TI boards. Could you please try to modify the flasher project present at sdk for your board and try again.
sdk_path\tools\flasher\jtag_uniflash\am263px-cc
Thanks Nilabh, but I've changed our application to connect the EEPROM again to avoid my having to make a customer flasher. I will however make a custom flasher for our custom PCB in a month or so.
But for now, it's critical for me to understand if there are knock-on effects to using QSPI (1S) boot mode with UniFlash:
- Why does the manual mandate DevBoot mode for flashing by UniFlash? Why not QSPI (1S) also?
- Is it purely to avoid the situation I have just described or are there other reasons?
But for now, it's critical for me to understand if there are knock-on effects to using QSPI (1S) boot mode with UniFlash:
- Why does the manual mandate DevBoot mode for flashing by UniFlash? Why not QSPI (1S) also?
There should not be any limitation of using Uniflash in QSPI 1s boot mode. I will take a min to explain how uniflash will work in QSPI 1s.
The boot pins are set to QSPI 1s and once the device is powered on ROM checks for boot pins and tries to boot in 1s mode, it will go and read the flash at location 0x0, depending on if the valid image is present it will either boot or go to redundant locations:
If none of these locations have valid images, System enters into Panic i.e. code waits for watch-dog to reset the device, WDT timeout is 180sec.
WDT will issue an reset after 180 sec, so if you want to use Uniflash, the care that needs to be taken care is that, it needs to be done before ROM issue a reset.