a Virtual Robotix Network Team

Multipilot32 Getting Started. (PowerUP , Compile and Bootload your first program)

For last update doc this is the official wiki page :


I accept suggestion about this discussion.



This is my tutorial about how it is possible to start working with the Multipilot32 board:
Power up, compile and upload your first firmware.

Overview of requirements and options:

  • Multipilot32 board
  • Power source different options, choose what you prefer:
    • USB cable
    • Lipo 2S to 6S
    • AC:DC converter
    • 5Volt BEC normaly available on standard brushless controller
  • Dowload and install your IDE
  • Bootloading the firmware
    • Pad setup
      • Serial port 1 or serial port 2
      • ttl <> 232 converter
        • Jumper
        • Header
        • Small wire
        • USB to Serial converter
      • USB Bootloader (work in progress)
      • Jtag adapter


Power Source


Usb cable.

The simplest way to power up Multipilot32 is with a USB cable. When you connect USB to the board, it uses the USB 5V on the cable for powering up the board.



Lipo and AC:DC converter.

Another way is to use a LiPo battery or an AC:DC converter up to 30 volts. On Multipilot32 there is an input for DC:DC converter labeled as JP17.

On JP17 you can put voltage up to 30 volts. The internal DC:DC converter internally generates 5V and 3.3V.


Standard 5V BEC.

It is possible to connect standard BEC on the main pin headers JP1-JP2-JP3.

The 5V power is in the middle. To activate external power source you need to connect JP22 (EXT_VCC).

When you shortcut JP22 if you use USB or Lipo, you can use internal 5V power on Main Header.


Download and Install your IDE


At the following link you can find info about the download and installion of the Eclipse IDE.

I choose to use the standard IDE tested in the ChibiOS project. Because ChibiOS will be the starting point of our VROs.


This guide will explain how to setup a complete IDE based entirely on free and open source components for both Linux and Windows.


This guide will not enter into details of common system tasks like and not limited to:

  • Installing applications (unless a special procedure is required).
  • Creating desktop shortcuts.
  • Adding paths to the PATH variable.
  • Creating environment variables.
  • Any other normal PC usage task.
  • Use of the toolchain, this topic is covered in the ”Using an Eclipse-based IDE” article.


Bootloading the Firmware


Pad setup:

On the board there are two pads available for setting all Multipilot32 possibilities.

The pads are :

JP20         -       JP21

BOOT_0            BOOT_1

L                       X            User Flash.

H                      L             System.

H                      H            Sram.



Firmware Upload Using Serial1


To simplify the operation of uploading new firwmare we put a wire in a spear pin on double header as in the picture below (the blue pin).

When you put a dual header shortcut pin inside the header, Boot_0 goes Low so after a reset it boots from flash memory. If you remove the shortcut pin, Boot_0 goes High there is a pull-up 3.3V and the system goes into Serial Bootloader mode.



BOOT_0            BOOT_1

H                      L             System.

In this kind of configuration, when you reset Multipilot32, it starts to wait to start the flash uploading sequence. I use to upload the software with a standard ST tool called: "Flash Loader Demostrator".

Introduction document: Flash Loader Demostrator Introduction documents

Flash Loader software: 

This is the link to flash loader :


When the firmware is uploaded put the pad in this configuration and press Reset.

In User Flash configuration when you push reset on the board the uploaded firmare starts.


L                       X            User Flash.


USB Bootloader.


BOOT_0            BOOT_1

L                       X            User Flash.


The work on the bootloader is still work in progress, it is not yet available. When it will be available you can upload using serial port to micro and set the pad in User Flash Mode. So you do not need to change the pad configuration for upload and test of your software.


Jtag Bootloader.


BOOT_0            BOOT_1

L                       X            User Flash.


In this mode you can use a standard JTAG port for uploading your code and debugging it. I am doing some tests using R-Link from Raisonance. If others have experience with other tools, please add your suggestions in the comments.


UPDATE !!! For the Owner of MULTIPILOT 32 !!!

After you are understand how is possible to upload a firmware on your Multipilot32 I have a gifts for you :

I put on a repo ready to use code . This code is based on example on Standard RC Mulltpilot 32 Library (VROS LIB).

Here you can found the example:


MP32_RADIO_PPMSUM.cpp.bin : is a demo of decoding standard PPM SUM reciver connected on JP4-4 . You can see on serial port JP4-3 / JP4-2 the level of signal recived on different channel . All signal only on one pin. This is my prefered configuration so i developed the library before of other configuration :) On the PWM output you can see the same value of input recived by trasmitter. So if you connect a Brushless Regulator you can see your motor go slow or fast ..depend of your command.


MP32_OILPANLED.cpp.bin : is a simple example of using the three led available on oilpan imu. It blinking


MP32_SPI_ADC_TEST.cpp.bin : is an example of using sensor gyro , acc , temp available on oil pan . You can see the raw value read by adc converter and send by spi bus to MP32. If you move your board you can see this value change.


EEPROM_example.cpp.bin : is an example of using the eeprom emulation library on arm. This library use the flash page to emulate the local storage on eeprom.


ArmFox_V4_NG_CLI.cpp.bin : is the Arducopter NG code ported on Multipilot 32 , now is not yet flyiable will be in the next day .. i hope before of next week :) Now you can going inside the cli and enjoy to discover some functionality .





Bootloading the Firmware

Views: 6775


Reply to This

Replies to This Discussion

hello roberto,

i have an openprimer2 to play with.

with ride7 i could use c++ - see:

the compiler suite does come from codesourcery - thus build in c++ support. they only thing how to link the c++ lib's.


for me it would be interesting to get acm running on stm.

i already modded the adc lib for atmel because i think it is not really good.

so what is needed to start porting? :)

this would be the api - lower level drivers. no assumption is made how it looks above this layer.




Hi Robert ,

this morning i start to write how to doc .. and put in on a blog .. so your comment is welcome.

Are you sure that Ride7 support C++ ? In my test it don't work ... now i'll add info about the ide enviroment that i'm using ... Eclipse +codesourcery .

I have an example code with a lot of function  usefull for porting of acm . What approach do you prefer ? We can write a wrapper for arduino function inside a acm program and write a compatible apm class . I yet start this work based on  Xduino .. but now my idea is to join Xduino project to ChibiOS then reimplement the class inside the Xduino with native hal .. what do you think about ?

I Update the link of Flash Loader Demo , now It's right . Thank Stephan for your info , sorry for mistake ;)

Dear Friends ,

is available some demo code for your Multipilot 32. Check the repo and try to upload it.




i have the boards :)

can you provide a small how-to to attach a jtag/swd?



all clear, need a small adapter :)

it is german, but a few will understand - others might learn a bit.



i am asked to help a bit - getting staerted.

all prob. know the way too large 20 pin arm jtag connector.

one side is ground only - so it can shrinked without to much difficulties.

on the page/link provided above you find a picture "Der 10-polige JTAG Stecker von mmvisual "

this connector is like the U$1 connector found in the tech doc.

(be carefull - a little bit different)

thus a simple adapter cable is required to match it with a standard 20 pin connector.

and then you can start programming <G>

but it is way different a microsoft or vxworks os'es ...


i am eargerly waiting for the sample to hook up the spi/iec bus.




Hello All,

I have received my MP32 board few days ago and here are my comments of newbie :

1-The documentation
A lot of informations have been provided by Roberto, through the repositories, Videos and Webinar.
These was really helpful.

My concern is that all of these infos are spread across many posts and supports.
The ramp up is not facilitated and a tutorial formalising all the informations
is clearly a requirement for me.

2- The Equipment
Taking a look to my MP32 board and I was impressed by the quality.
I was also anxious to verify that the board was working correctly !

Hopefully, I also received this kind of FTDI USB UART board to do my tests :

After building some of connectors, I was able to start the tests of connection.

3- MP32 Board Tests
I found the communication settings on the forum for the Flash Demo tool i.e. : 1115200 ,8 bits data, Even, 1 stop

So I started to upload the binary provided by Roberto for testing purpose.
Some troubles on the first try ... !

In the tool, when you selected "Download to device",
you should also select the "Global Erase" Option.

Without that delete option, I have some errors and the upload failed.

I have tested the different binary files like Armfox_V4_NG_CLI.bin.

And I should indicate that for this program the RS-232 setting are a little bit different.
You should use 1115200 ,8 bits data, no parity, 1 stop to communicate with Hyper Terminal for example.

4- Eclipse IDE Tests
I have setup Eclipse IDE with Yagarto Toolchain.

Now my next steps are to be able to compile, build and upload a firmware in the MP32.

5- Conclusion
I am happy the board is working and I am able to upload binary files.

I hope to have quickly a fully operational IDE.

Thanks for Roberto for your contribution and to the experience members
that are and will help the newbies like me !

Best regards,


Hi Spartacus ,

I'm very happy that you join our meeting this evening , and I happy that you found usefull all the information and video that i put on our website if you need some help don't exitate to contact me directly.



Hi all,

I have some problems when I try to connect the MP32 via the Flash Loader Demo. I have the message "Unrecognized device..." or " No response from the target...".

I use an USB to serial cable with a TTL 3.3V converter . I connect Rx and Tx of the TTL converter to pin JP4_2 and JP4_3.

The MP32 is supplied via the USB port.

I can see with my scope that when I click on the "Next" button of the Flash Loader Demo to connect to the UART, data are transmitted to the MP32, then the MP32 Reply by sending data on the UART JP4_2. But I have the message "Unrecogniezd device..." or "No response". I have tried to push reset: same problem.

The BOOT_0 = H , BOOT_1 = L.

I don't use shortcut

So, where is the problem ?






Hi Cyrille,

how you power up your converter ? Are you using 5volt from MP32 ? or you use other source ?

Check if the ttl converter work fine with the power source that you are connected to the board .. i remember that another user had same problem and connect the power or converter 3.3v available on mp32 header .

You can shortcut the ttl converter and with a terminal check if you see a echo on serial terminal .

If you see a echo the flash loader normally work fine .

check the post in this discussion if you don't solve the problem contact me in skype my address is virtualrobotix



I had the same problem. I have a ttl level shifter. The shifter has Rx, Tx, Vcc, and Gnd. Vcc must be tied to the MP32 3.3V not 5V. That is what solved my problem. Some ttl converters can handle this, but mine could not. 


I used the 3V3 pin on JP-19 (pin 3). There is also one on the jtag U$1(pin1).


See the following post:



© 2021   Created by Roberto Navoni.   Powered by

Badges  |  Report an Issue  |  Terms of Service