[En-Nut-Discussion] Robust Ethernet bootloader

Philipp Burch phip at hb9etc.ch
Mon Jun 4 15:06:05 CEST 2018


Hi everyone,

I'm in a project where we will soon have to deploy some boards running
Nut/OS into "the field". Those boards are all connected to a local
computer using Ethernet, but the computer itself is usually only
accessible over the net. In the first prototype, we simply put a J-Link
into the machine to be able to update the MCU firmware (or even debug
it), in case a problem arises, but this definitely is no productive
solution. We use Ethernet to have a robust and isolated connection after
all, which USB and JTAG is not.

Our target platform is a TIVA TM4C1294NCPDT processor, which has an
integrated Ethernet MAC and PHY. My primary concern is robustness of the
bootloader, it should be rather hard to brick the device. I see that
there is some Ethernet-based bootloader functionality in the ROM of this
MCU, but as far as I can tell, this must be invoked from the application
code. So in case the update fails, there will most likely be no way to
re-flash the firmware without local intervention. What I would prefer is
a small self-contained bootloader that always runs when the firmware
starts (after power-on, watchdog-reset, hard-fault, etc.), validates the
firmware image and then starts the application. In case the validation
fails, it should sit there and wait for a new image to be downloaded.

My questions:

- What are your experiences and suggestions for Ethernet bootloaders?

- Did I miss anything important?

- Does Nut/OS offer some functionality for this?

- How do I need to compile the target application, so that it can be
started from the bootloader? Especially considering the interrupt vector
table and such stuff.

Thank you and best regards,
Philipp


More information about the En-Nut-Discussion mailing list