From 5c7939acb88b0a6310a2d9ce3ab16be0f1d2a2eb Mon Sep 17 00:00:00 2001 From: haslinghuis Date: Tue, 7 Jul 2020 06:00:58 +0200 Subject: [PATCH] Ubuntu development documentation updated. --- docs/development/Building in Ubuntu.md | 121 +++++++++---------------- 1 file changed, 43 insertions(+), 78 deletions(-) diff --git a/docs/development/Building in Ubuntu.md b/docs/development/Building in Ubuntu.md index 664adc8131..319baf2406 100644 --- a/docs/development/Building in Ubuntu.md +++ b/docs/development/Building in Ubuntu.md @@ -1,91 +1,56 @@ # 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 Betaflight. We suggest that you take an -alternative PPA from Terry Guo, found here: -https://launchpad.net/~terry.guo/+archive/ubuntu/gcc-arm-embedded +Building for Ubuntu platform is remarkably easy. +This document is tested and based on the latest Ubuntu 20.04 LTS release. -This PPA has several compiler versions and platforms available. For many hardware platforms (notably Naze) -the 4.9.3 compiler will work fine. For some, older compiler 4.8 (notably Sparky) 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. +### Clone betaflight repository and install toolchain -Adjust the ARM_SDK_DIR variable in make/tools.mk file with the correct "gcc-arm-none-eabi-xxx" version. - -## 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: -```bash -sudo apt-get remove binutils-arm-none-eabi gcc-arm-none-eabi -sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa -sudo apt-get update ``` - -For Ubuntu 14.10 (current release, called Utopic Unicorn), you should pin: -```bash -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: -```bash -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: -```bash -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. -```bash -cd src -git clone git@github.com:betaflight/betaflight.git +sudo apt update +sudo apt upgrade +sudo apt install build-essential +git clone https://github.com/betaflight/betaflight.git cd betaflight -make TARGET=NAZE +make arm_sdk_install ``` -You'll see a set of files being compiled, and finally linked, yielding both an ELF and then a HEX: +### Updating and Rebuilding Firmware + +Navigate to your local betaflight repository and use the following steps to pull the latest changes and rebuild your version of betaflight: + ``` -... -arm-none-eabi-size ./obj/main/betaflight_NAZE.elf - text data bss dec hex filename - 97164 320 11080 108564 1a814 ./obj/main/betaflight_NAZE.elf -arm-none-eabi-objcopy -O ihex --set-start 0x8000000 obj/main/betaflight_NAZE.elf obj/betaflight_NAZE.hex -$ ls -la obj/betaflight_NAZE.hex --rw-rw-r-- 1 pim pim 274258 Jan 12 21:45 obj/betaflight_NAZE.hex -``` - -You can use the Betaflight-Configurator to flash the `obj/betaflight_NAZE.hex` file. - -## Bricked/Bad build? - -Users have reported that the 4.9.3 compiler for ARM produces bad builds, for example on the Sparky hardware platform. -It is very likely that using an older compiler would be fine -- Terry happens to have also a 4.8 2014q2 build in his -PPA - to install this, you can fetch the `.deb` directly: -http://ppa.launchpad.net/terry.guo/gcc-arm-embedded/ubuntu/pool/main/g/gcc-arm-none-eabi/ - -and use `dpkg` to install: -```bash -sudo dpkg -i gcc-arm-none-eabi_4-8-2014q2-0saucy9_amd64.deb -``` - -Make sure to remove `obj/` and `make clean`, before building again. - -## Updating and rebuilding - -Navigate to the local betaflight repository and use the following steps to pull the latest changes and rebuild your version of betaflight: - -```bash -cd src/betaflight git reset --hard git pull -make clean TARGET=NAZE -make +make clean TARGET=MATEKF722 +make TARGET=MATEKF722 [OPTIONS=RANGEFINDER] [DEBUG=DBG] ``` -Credit goes to K.C. Budd, AKfreak for testing, and pulsar for doing the long legwork that yielded this very short document. +Using the optional OPTIONS parameters you can specify options like RANGEFINDER. +Using the optional DEBUG parameter you can specify the debugger. + +You'll see a set of files being compiled, and finally linked, yielding both an ELF and then a HEX. +You can use the Betaflight-Configurator to flash the `obj/betaflight_MATEKF722.hex` file. +Make sure to remove `obj/` and `make clean`, before building again. + +### Building Betaflight Configurator + +See [Betaflight Configurator Development](https://github.com/betaflight/betaflight-configurator#development) for how to build the Betaflight Configurator. + +### Flashing a target with Betaflight Configurator on Ubuntu 20.04 + +In most Linux distributions the user won't have access to serial interfaces by default. Flashing a target requires configuration of usb for dfu mode. To add this access right type the following command in a terminal: + +``` +sudo usermod -a -G dialout $USER +sudo usermod -a -G plugdev $USER +sudo apt-get remove modemmanager +lsusb +(echo '# DFU (Internal bootloader for STM32 MCUs)' + echo 'ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE="0664", GROUP="plugdev"') | sudo tee /etc/udev/rules.d/45-stdfu-permissions.rules > /dev/null +``` + +Please log out and log in to active the settings. You should now be able to flash your target using Betaflight Configurator. + + +Credit goes to K.C. Budd, AKfreak for testing, and pulsar for doing the long legwork that yielded the original content of this document. +