Part Number: EK-TM4C129EXL Other Parts Discussed in Thread: EK-TM4C1294XL Tool/software: Hi - I've got an EK-TM4C129EXL and an EK-TM4C1294XL. I'm using the EK-TM4C129EXL to update the firmware on the EK-TM4C1294XL over I2C using the ROM bootloader. I've read the "TivaWare Boot Loader User's Guide" ( SPMU301E) numerous times in great detail and believe I am doing everything correctly. For example: I setup I2C in slave mode on the EK-TM4C1294XL before disabling interrupts and calling ROM_UpdateI2C(). I setup I2C in master mode at 100 kbps on the EK-TM4C129EXL and make sure the EK-TM4C1294XL has called ROM_UpdateI2C() before attempting to send commands. The steps I'm performing on EK-TM4C129EXL to send the firmware to the EK-TM4C1294XL are as follows. First I send the COMMAND_DOWNLOAD command using the following steps: Send a COMMAND_DOWNLOAD command appropriately packetized. (I write the firmware to address 0x00000000 since I have do not have my own bootloader and the size of the new firmware is 0x9A8) Check for the ACK to the COMMAND_DOWNLOAD command Send COMMAND_GET_STATUS appropriately packetized. Check for the ACK to the COMMAND_GET_STATUS command Make sure the return code from COMMAND_GET_STATUS is COMMAND_RET_SUCCESS. The following are images from my logic analyzer showing the successful communication of the steps above. First the COMMAND_DOWNLOAD and then starting to read the ACK... ...and then the ACK response, the and the status: All of it looks good. I then wait 10 seconds (yes, 10 full seconds) since I know the COMMAND_DOWNLOAD step needs to erase the entire flash section on the EK-TM4C1294XL. Then I start with my COMMAND_SEND_DATA commands: Send a COMMAND_SEND_DATA command appropriately packetized. Check for the ACK to the COMMAND_SEND_DATA command Send the COMMAND_GET_STATUS command appropriately packetized. Check for the ACK to the COMMAND_GET_STATUS command Make sure the return code from COMMAND_GET_STATUS is COMMAND_RET_SUCCESS. When doing the first COMMAND_SEND_DATA command it hangs indefinitely at step 2. The bootloader never sends back an ACK no matter how long I wait. Here's my logic analyzer output: Now, here's the funny thing: If I omit the COMMAND_GET_STATUS when doing both the COMMAND_DOWNLOAD and COMMAND_SEND_DATA commands, everything works. The entire 0x9A8 bytes of the new firmware will successfully get sent from the EK-TM4C129EXL to the EK-TM4C1294XL and written to flash on the EK-TM4C1294XL. When rebooting, it successfully runs the new firmware. So, I'm confused on two points and hoping someone has some suggestions: Why is the I2C communication hanging after that first COMMAND_SEND_DATA command. Why does everything work when removing the COMMAND_GET_STATUS commands. Any suggestions would be appreciated. Thanks. -Terence
↧