Serial bootloader utility for STM32, LPC17xx, MSP430, CC13xx, Tiva C, Z180, eZ80

I often use serial bootloader for debugging applications. I wrote bootloader utility for every MCU earlier, but one time I felt I needed general utility because it was always the same: load Intel-HEX file, open serial port, send bootloader commands; after programming open serial terminal and print debugging messages and send back debugging commands.

It was quite helpful when I started using USB-CDC adapter in my work. It has RxD and TxD signal (of course, it is serial ;-), and also /RST and BOOT signals used to reset MCU and switch between bootloader and application mode. Since this time I have the same connector in all my devices. So this was short history how MCUload has been born. And the last thing is that I use this utility both on Windows and Linux so I always have the same behaviour when I am debugging.

First note about connection: reset signal is connected to DTR, bootloader selection to RTS. When either signal is set (in meaning of system), TTL signal has low level. MCUload can be used with any real or virtual serial port which has these signals (DTR, RTS).

Command line

Command-line syntax is: MCUload [options] file. Here is list of all available command-line options:


Almost all options can accept values: decimal values begin with 0..9; hexadecimal values begin with x.

Eg. disabling internal Flash for eZ80, --iFLASH 0 can be used. Or enabling internal RAM: --iRAM xB780.

--command "time %%h:%%m:%%s\rdate %%D.%%M.%%YY\r\d" sets current time and date when first programmed; If reload ir requested, this command is not used again.

Used protocols

Added later...

Terminal control

Terminal supports basic ANSI/VT100 keycodes and ESC-control, so F-keys can be used and some basic display control is processed. Terminal is exited with ^X key. RST signal is activated with ^R, BOOT pin can be changed with ^B, file reload can be manually requested by pressing ^L.

All source code can be downloaded here.

Modified: 7.3.2016