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.
I am in the process of updating (rewriting) my code from the LM3S9B90 part to the TM4C129X part. I have a Test Application that I wrote that I use to program factory-fresh (blank) as well as already programmed LM3SB90 parts via the ROM Ethernet boot loader on a custom designed board. Everything works well for this.
I am using the TM4C129X development kit and TivaWare 2.1 to get started on the new code. While I can communicate with the Dev Kit using my Test App (via TCP), the reprogramming does not work.
Here is what I have found so far:
The ROM Users Guide (spmu363) for the TM4C129 part does not contain a section on the Boot Loader like the LM3SB90 ROM User Guide (UG330) does. Why not?
My code for the TM4C129X makes it to the SoftwareUpdateBegin( ) function in swupdate.c. At first it was executing the "#else" portion of the "#if" statement and then jumping to the IntDefaultHandler( ) function in startup_ccs.c. I then defined ROM_UpdateEthernet in my project settings and now the "#if" portion of the code in SoftwareUdpateBegin is executed but it still doesn't work. Incidentally, there seems to be a porting error from StellarisWare to TivaWare in this area. In StellarisWare, the SoftwareUpdateBegin code contains the following check:
#if ((defined ROM_UpdateEthernet) && !(defined USE_FLASH_BOOT_LOADER))
ROM_UpdateEthernet(ROM_SysCtlClockGet());
and then rom.h contains:
#if defined(TARGET_IS_TEMPEST_RB1) || \
defined(TARGET_IS_TEMPEST_RC1) || \
defined(TARGET_IS_TEMPEST_RC3) || \
defined(TARGET_IS_TEMPEST_RC5) || \
defined(TARGET_IS_FIRESTORM_RA2)
#define ROM_UpdateEthernet \
((void (*)(unsigned long ulClock))ROM_ETHERNETTABLE[19])
#endif
However, in the TivaWare version of SoftwareUpdate there is:
#if ((defined ROM_UpdateEthernet) && !(defined USE_FLASH_BOOT_LOADER))
ROM_UpdateEMAC(ui32SysClock);
and the TivaWare rom.h file has:
#if defined(TARGET_IS_TM4C129_RA1)
#define ROM_UpdateEMAC \
((void (*)(uint32_t ui32Clock))ROM_EMACTABLE[71])
#endif
It seems the TivaWare check should be:
#if ((defined ROM_UpdateEMAC ) && !(defined USE_FLASH_BOOT_LOADER))
ROM_UpdateEMAC(ui32SysClock);
This makes me wonder how this was ever tested.
I have also tried using the LMFlash Programmer (1613) to program via the Ethernet port without success.
Is there a sample program that uses the Ethernet ROM Boot loader for the TM4C129X parts?
Is there a fundamental difference in the way this works between the Stellaris LM3S9B90 and the Tiva TM4X129X parts?
Given that ROM_UpdateEMAC is defined only for TM4C129_RA1 parts and not RA0, does the Dev Kit that I have contain a RA0 part that just doesn't support this? How do I know if I have a RA0 or a RA1 part?
Thanks,
Jeff
Hello Jeff,
Please check the SYSCTL.DID0 register and if the value is 0x10070000 then you have a RA0 part
Regards,
Amit
Amit,
I get 100a0000. If I read the datasheet correctly, this means I have an A0 part. is that correct?
What implications does this have for my other questions?
Thanks
Hello Jeff,
Ethernet Boot loader is not available on A0 silicon parts. You would require A1 onwards silicon part which I believe is there on the EK-TM4C129. I would confirm that.
There are some other SW API's that are not available on this part (A0) in ROM.
Regards
Amit
Amit,
I will look into getting a new part.
What about the suspected TivaWare bug I mentioned in my first post?
Thanks,
Jeff
I agree with Jeff, there's a bug in the code and I can't find any detailed documentation on ROM_UpdateEMAC.
Is it equivalent to the alternative flash based boot_loader provided in C:\ti\TivaWare_C_Series-2.1.0.12573\utils\swupdate.c?
Is there a way to read the revision from the part # on the chip without having to look in the register?
John
I also need to get a bootloader up and running for the TM4C129, specifically the launchpad eval kit. When I downloaded the examples, it said they were for the Tiva 123. So is there not a bootloader or examples for the
129? Can someone from TI please address this issue? thanks.
Hello Randall,
There are multiple installers each one catering to a different EVM. The simplest solution will be to download the full TM4C TivaWare 2.1.0-12573 installer
Regards
Amit