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.

LM4F232: ROM USB bootloader usage example?

Hi all,

Just wondering if there's any example code on how to use the ROM USB bootloader code? Stellarisware for the EKS-LM4F232 eval board contains a USB bootloader example; that example provides code for the entire USB bootloader (ie suitable for a processor without ROM code). I've been reading to ROM User Guide, and was wondering if there's example code anywhere on how to setup and then call the ROM USB bootloader?

Thanks.

  • Frank,

    What version of silicon do you have on the LM3S232?  If it is A1, this silicon revision is affected by the erratum "USB boot loader in ROM does not operate correctly" meaning you would have to use the Flash resident USB boot loader instead.  

    If it is A3: Currently, ROM_UpdateUSB is not present in rom.h in the StellarisWare driverlib.  You will need to add ROM_UpdateUSB in rom.h (see this post) to call this in your code.  In the boot loader code, replace the line (*((void (*)(void))(*(unsigned long *)0x2c)))(); which points to the start of the boot loader with a call to ROM_UpdateUSB() to instead use the ROM boot loader.  Refer to the ROM User's Guide about this function and how to appropriately call ROM_UpdateUSB.  An example of where this would be located is in the API SoftwareUpdateBegin() in swupdate.c for the Ethernet boot loader or in JumpToBootLoader() in boot_demo1.c or boot_demo2.c.

    -Rebecca

  • Rebecca - thanks for this - helpful.

    Might you know at about what date a "switch-over" was made to A3?  Our group uses 64 pin M4 (231H5QR) and even recent shipments have MCU bearing mark,  "A1".  May we assume that our version of M4 will also include this ROM correction - so long as MCU bears this A3 stamping?

  • cb1,

    I believe A3's were populated on the EK-LM4F232's sometime in May.  This ROM call will work with silicon revision A3, just not A1, as this revision was affected by the erratum.

    If using the rom.h from the upcoming StellarisWare release and using A3 silicon, adjust your project's target configuration file to TARGET_IS_BLIZZARD_RA2.  This will allow ROM_UpdateUSB() to be called.  The "A2" part of the target name is a typo in StellarisWare and will be fixed in the release after this one. 

    -Rebecca

  • Thanks Rebecca. I have revision A1 on the board right now, so that'll be an issue. I'll try using the full bootloader source example in StellarisWare.