Skip to content
Pim van Pelt edited this page Jan 13, 2015 · 1 revision

Building in Ubuntu

Building for Ubuntu platform is remarkably easy. The only trick to understand is that the Ubuntu toolchain, which they are downstreaming from Debian, is not compatible with Baseflight. We suggest that you take an alternative PPA from Terry Guo, found here: https://launchpad.net/~terry.guo/+archive/ubuntu/gcc-arm-embedded

This PPA has several compiler versions and platforms available. For our hardware platform (Naze) the 4.9.3 compiler will work fine. For some, older compiler 4.8 is more appropriate. We suggest you build with 4.9.3 first, and try to see if you can connect to the CLI or run the Configurator. If you cannot, please see the section below for further hints on what you might do.

Setup GNU ARM Toolchain

Note specifically the last paragraph of Terry's PPA documentation -- Ubuntu carries its own package for gcc-arm-none-eabi, so you'll have to remove it, and then pin the one from the PPA. For your release, you should first remove any older pacakges (from Debian or Ubuntu directly), introduce Terry's PPA, and update:

sudo apt-get remove binutils-arm-none-eabi gcc-arm-none-eabi
sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded
sudo apt-get update

For Ubuntu 14.10 (current release, called Utopic Unicorn), you should pin:

sudo apt-get install gcc-arm-none-eabi=4.9.3.2014q4-0utopic12

For Ubuntu 14.04 (an LTS as of Q1'2015, called Trusty Tahr), you should pin:

sudo apt-get install gcc-arm-none-eabi=4.9.3.2014q4-0trusty12

For Ubuntu 12.04 (previous LTS, called Precise Penguin), you should pin:

sudo apt-get install gcc-arm-none-eabi=4.9.3.2014q4-0precise12

Building on Ubuntu

After the ARM toolchain from Terry is installed, you should be able to build from source.

cd src
git clone [email protected]:baseflight/baseflight.git
cd baseflight
make TARGET=NAZE

You'll see a set of files being compiled, and finally linked, yielding both an ELF and then a HEX:

...

arm-none-eabi-objcopy -O ihex --set-start 0x8000000 obj/baseflight_NAZE.elf obj/baseflight_NAZE.hex
$ ls -la obj/baseflight_NAZE.hex 
-rw-rw-r-- 1 pim pim 229536 Jan 12 23:18 obj/baseflight_NAZE.hex

You can use the Baseflight Configurator to flash the obj/baseflight_NAZE.hex file.

Updating and rebuilding

Navigate to the local baseflight repository and use the following steps to pull the latest changes and rebuild your version of baseflight:

cd src/baseflight
git reset --hard
git pull
make clean TARGET=NAZE
make