Other Parts Discussed in Thread: UNIFLASH, EK-TM4C129EXL, EK-TM4C1294XL, EK-TM4C123GXL
I am using TIVA TM4C1294NCPDT controller on a custom board. I have UART0 connected to UART of an embedded linux board. During normal OS operation, I am able to invoke the ROM bootloader by calling ROM_UpdateUART() to update firmware using sflash utility. This method works fine as long as I have some firmware already on the device.
I want to program virgin devices using sflash. To test this, I erased the flash and confirmed over JTAG that 0x0 and 0x4 locations read 0xFFFF_FFFF and that BOOTCFG register is 0xFFFF_FFFE. On a blank device, I expect the device to stay in ROM bootloader looking for packets over UART. However, when I run sflash, I get the 'erasing' chip message and nothing after that.
I have also noticed that when the bootloader is invoked using ROM_UpdateUART(), if the firmware update is interrupted and restarted, the device resumes the firmware update and continues successfully. However, if after interrupting, power is cycled, then the update does not resume. The symptoms are similar to the failure mode mentioned above in the blank chip case. Can the gurus confirm if the ROM bootloader and sflash combo is resistant to power interruptions? Does the ROM bootloader write 0x0 and 0x4 locations at the end of the update or before?
Also, any ideas on why sflash and ROM bootloader do not work when device is blank? How do I go about debugging the ROM bootloader?
Thanks in advance for your time and inputs,
Rajah