Hi,
I am attempting to use the flash resident boot loader provided with Stellarisware to do firmware updates via the UART.
I have had success doing this with the LM3S9B92rB1 eval board through UART0 and UART1.
I've also tried it with the LM4F232H5QDrA1 eval board through UART0 and UART1 as well as a LM5F232H5QCrA3 custom board through UART1.
In all of the LM4F cases, the boot loader runs fine (can boot an application image that's already loaded in flash), but does not communicate. It gets stuck the first time it enters UARTReceive(). I tried setting a break point after this instruction
//
// Wait for the FIFO to not be empty.
//
while((HWREG(UART_BASE + UART_O_FR) & UART_FR_RXFE))
{
}
and it never reaches it. It's like the UART isn't actually configured. Note that I didn't set the breakpoint until the boot loader was already running, to ensure that it didn't get overwritten when the boot loader was loaded into RAM. I also tested out this approach on the LM3S9B92 to make sure it worked, and it did hit the breakpoint when I sent data.
I've loaded other code on the LM4F boards and verified that the UART interfaces are good.
I don't see anything in the errata to explain this. Did I miss something special I need to do for the LM4F's? Any suggestions on what could be going wrong or what else I can do to debug this would be appreciated.
I'm using IAR v6.40 and Stellarisware rev 9107.
Thanks.