In order to finally run NuttX on your board, you first have to flash the NuttX binary. As an easy start, it is recommended that you choose a well supported board which also integrates the debugger/programmer in the board itself exposed via USB connector.

A good choice is a Nucleo or Discovery board from ST Microelectronics, as there is a wide choice of suported boards for the STM32 architecture in NuttX. Also, these boards expose an UART port over the USB connection which allows you to interact with NuttX via the interactive console without any extra hardware. For the purposes of this guide, we will use the Nucleo F103RB board.


There are various tools you can use to flash the NuttX binary to your Nucleo board. One common option is to use openocd which supports a large number of programmers and target microcontrollers.

To install the stable version of openocd you can do:

$ apt install openocd


add instructions for other platforms

You should note that openocd project has not made stable releases for long time and support for newer hardware will probably be only available in the latest Git version. To install it you should:

$ git clone git:// openocd
$ cd openocd
$ ./bootstrap
$ ./configure --prefix=install/
$ make install

The resulting installation will be under openocd/install. You can add openocd/install/bin to your PATH.

Now, to flash the binary to your board, connect the USB cable and do:

$ cd nuttx/
$ openocd -f interface/st-link-v2.cfg -f target/stm32f1x.cfg -c 'init' \
  -c 'program nuttx/nuttx.bin verify reset' -c 'shutdown'

Access NuttShell

Once you flash your board, it will reset and offer a prompt over the serial console. With the Nucleo board, you can simply open the terminal program of your choice where you will see the nsh> prompt:

$ picocom -b 115200 /dev/ttyUSB0
$ gtkterm -s 115200 -p /dev/ttyUSB0

Next up is Configuring.