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.

Different behavior after erasing flash in TM4c129X family

Other Parts Discussed in Thread: TM4C129ENCPDT

Hello.

I am seing an interesting behavior difference in my custom board from the EK-TM4c129XL, after erasing the entire flash.

I have written a function that, after receiving a command via the UART0, it erases the full flash memory of the device using ROM_FlashErase calls. This function is executed from SRAM to avoid any issue with the calls.

Then, the function completes and the memory is empty in the devices (both Evaluation board and Custom board). However, when I try to reprogram the chip using the Uart0, even with LM Flash programmer, the reprogramming only works on the Evaluation board.  I am assuming this should be the standard operation for a erased device (we are used to do that with our 123x devices with no issues). It happens the same if the flash is erased from the LM flash programmer (using a ICDI device as JTAG).

Moreover, if I use a stellaris board to Unlock both boards, then I can reprogram our custom board only if I uncheck  the "DISABLE AUTO BAUD SUPPORT" option from the menu, and set the baud rate to 115200. The Evaluation board can be reprogrammed with the auto baud support option ON. 

We have tried all this methods with our custom boards using different versions of the silicon as XM4c129ENCPDTI1 or TM4c1292NCPDTI3. We haven't seen any issue with the UART0 port when the program is running even at high speeds (even at 8Mbps). To communicate we are using a original FTDI  USB 2.0 Hi-Speed to UART cable which C232HD ic.

Have you experienced the same issues at some point?

Regards 

  • Hello PAk,

    How is the UART boot loader invoked after erasing the Flash? Does the SRAM code execute a System Reset to call the ROM Boot Loaders?

    Regards
    Amit
  • Yes, the SRAM code executes a system reset. I am assuming this is enabling the Rom uart bootloader, right?
  • Hello PAk,

    Did you check the section 8.2.2.1 Note: "Considerations When Using the UART Boot Loader in ROM". I may be tempted to check what is happening on U0Rx when the System is reset after Flash erase.

    On the EVM's and Launchpad it is driven by the ICDI MCU so U0Rx is always held high.

    Regards
    Amit
  • Amit Ashara said:
    Hello PAk,

    Did you check the section 8.2.2.1 Note: "Considerations When Using the UART Boot Loader in ROM". I may be tempted to check what is happening on U0Rx when the System is reset after Flash erase.

    Those considerations only appear on the Stellaris datasheet, not on the TM4c129ENCPDT datasheet.

    However we found the issue, your comment lighted a bulb!!! The problem was with U0Tx. We added two 10k pull-downs,which were OK when the board is programmed, but made the voltage drop to half when the chip was "empty".....so, watch out everybody!!!

    Maybe a 50k value will work, right?

    Thank you Amit.

  • Hello PAk,

    Why Pull down? A pull up is what will keep the UART in idle State.

    Glad that I was of some help.

    Regards
    Amit
  • Because in the document said either two would work:

    Considerations When Using the UART Boot Loader in ROM U0Tx is not driven by the ROM boot loader until the auto-bauding process has completed. If U0Tx is floating during this time, the receiver it is connected to may see transitions on the signal, which could be interpreted by its UART as valid characters. To handle this situation, put a pull-up or pull-down on U0Tx, providing a defined state for the signal until the ROM boot loader begins driving U0Tx. A pull-up is preferred as it indicates that the UART is idle, rather than a pull-down, which indicates a break condition.

    I think a higher pull down will also work.
  • Hello PAk,

    Can you please point me to the text in the document as it is not correct. It may work but for something like boot loader it is not a good way.

    Regards
    Amit