This is a fork/continuation of Bill Nesbitt's AutoQuad firmware for multicopter flight control.
- AutoQuad Project Site
- AutoQuad Documetation
- AutoQuad Forums
- AutoQuad Downloads Page
- AutoQuad Public FTP: ftp://ftp.autoquad.org/3/334693_22529/
USE AT YOUR OWN RISK!!! ABSOLUTELY NO RESPONSOBILITY IS ASSUMED BY THE AUTHORS OR PUBLISHERS OF THIS FIRMWARE. SEE LICENSE FILE FOR FULL TERMS.
masterbranch is current stable version.nextbranch is to integrate all proposed changes for holistic testing before being committed tomaster.- Numbered branches (eg.
6.8) are for older versions. - All other branches are "feature" branches used for testing individual changes before integration into
next.
Pull requests should typically be submitted against the next branch, unless it is an important fix for something which affects master as well, or some other similarly good reason.
Pre-compiled firmware versions can be found at the AutoQuad public FTP site: ftp://ftp.autoquad.org/3/334693_22529/aq-firmware/forks/mpaperno/aq_flight_control/. The structure is organized by repository branch and then hardware version.
If you already have a Git client installed (or are willing to learn), the easiest method is to clone this repository to your local machine. If you do not want to deal with Git, you may also download zip archives of the necessary projects.
This repository contains Git submodules (for MAVLink headers) which must be initialized and updated. This is a simple process but you will get compile errors if you don't do it.
If you use a GUI Git client (TortoiseGit, SourceTree, etc) then look for options such as recursive during cloning and commands like "Update Submodules". This is usually an option when (or after) you do a clone/checkout command. Refer to the program's help if necessary. After checking out the code, make sure the lib/mavlink/include folder exists.
It is also very easy to use the command line for clone, update, and checkout.
Here's a complete example starting with fresh copy of the repo, then checking out the next branch, and the submodule init:
git clone https://github.com/mpaperno/aq_flight_control.git
cd aq_flight_control
git checkout next
git submodule update --initIf you already have a clone of the repo and you only want to do a pull of the latest changes, run something like this (example uses the master branch and assumes "origin" for the remote name of this GitHub repo, which is a typical default):
git checkout master
git pull --recurse-submodules origin master
git submodule update --initAs you may have gathered by now, the point is to run git submodule update after cloning or updating the code from this repository. The --init option is only necessary the first time, but it doesn't hurt to include it.
Unfortunately GitHub makes this a bit more complicated than it should be. To download a snapshot of the current code on any branch:
- In the default GitHub Code tab view, find the Branch menu and select the branch you want to download.
- To the right of the Branch menu, click the Download ZIP link and save the file (it will be named something like "aq_flight_control_master.zip")
- While still in the Code view, click on the
libfolder. - To the right of the
mavlinkfolder there is an ID like "67a140b" or similar (7 hex digits). Click on that. It will take you to a different code repository (AutoQuad/mavlink_headers) and to a specific commit in a specific branch (this is important). - Now click the Download Zip link on this new page. Save the file (it will be named "mavlink_headers-" with a long string of numbers at the end).
- Unzip the "aq_flight_control_master.zip" file into wherever you want to keep the firmware source code (preferably a directory path w/out spaces).
- Unzip the "mavlink_headers-xxxxx.zip" file into the
lib/mavlinkfolder of the firmware source code tree. So the final result should be alib/mavlink/includefolder with 2 subfolders and some .h files inside.
Download GNU ARM Embedded Toolchain and follow its readme.txt to install the toolchain on your system.
Note: You will need Java to run Eclipse.
-
Download and install Eclipse CDT.
-
Install the GNU MCU Eclipse plug-ins.
-
Open Eclipse and click
File->New->Makefile Project with Existing Code. In the popup window, select the project folder inExisting Code Location. And selectARM Cross GCCin theToolchain for Indexer Settingslist. The clickFinish. -
Right click the project and click
Properties. SelectC/C++ Buildon the left, then de-selectUse default build commandand setBuild commandtomake BUILD_TYPE=Debug MAV_VER=2 PROJ_ROOT=${CWD}. -
(Optional) Click
C/C++ General->Preprocessor Include Pathsin the Properties window. Switch toProviderstab. In the list of providers, clickCDT Cross GCC Built-in Compiler Settings. UnderCommand to get compiler specs, replace the text inCommand to get compiler specswitharm-none-eabi-gcc ${FLAGS} -E -P -v -dD "${INPUTS}". Then clickCDT GCC Build Output Parserand replace the text inCompiler command patternwitharm-none-eabi-(g?cc)|([gc]\+\+)|(clang). -
Right click the project and click
Build Projectto build.
- By default a release binary is built. Run
make BUILD_TYPE=Debugto build debug firmware. - To change the AQ hardware version, pass
BOARD_VERandBOARD_REVarguments tomake. Eg.make BOARD_VER=8 BOARD_REV=6to build for M4 rev 6 (M4 v2). Read theMakefilefor full list of versions and revisions available.
- Read the Makefile comments for more options, full list of build targets, and other information.
- Use
-jXfor faster (parallel) compilation, where "X" equals the number of CPUs/cores/threads on your computer. If you havemakeversion 4+, also add the-Ooption for better progress output during compilation. Eg.make -j8 -Ofor a quad-core CPU. - The
Makefile.userfile is the right place to specify build options you typically want, then you can avoid entering them on the command-line each time, or editing the mainMakefile. You can also set any variable in the environment andmakewill use it instead of the default in theMakefile. Command-line options always override all other variables. - All directory paths are relative to the location of the
Makefile. You can use relative or absolute paths for most options. - You can easily set up a local environment and specify build options using a batch or shell file. This is especially useful for Windows so you can specify a local
PATHvariable w/out having to change the system-widePATH(and need to restart Windows). The order of thePATHentries also affects how Windows searches for commands (making it easy to, for example, override Windows'mkidirwith GNU toolsmkdir). Here is a basic example batch file to initiate a build (this also shows using environment variables to set all the build options):
@echo off
set PATH=c:\devel\gcc-arm-none-eabi\bin;c:\devel\GnuWin\bin;C:\Windows\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
set BUILD_TYPE=Release-M4.r6
set BOARD_VER=8
set BOARD_REV=6
make bin You will need some GNU (Unix/Linux) tools installed and in your PATH. Make sure to install them on a path with no spaces (eg. c:/GnuWin/) There are several good sources for these, including GnuWin32 CoreUtils and ezwinports. The following utilities are required:
sh, make, gawk, mv, echo, rm, mkdir, expr, zip.
Most distributions include an older version of 'make' (3.x). Version 4.x offers some improvements for parallel builds. Windows versions are available from ezwinports (get a "w/out guile" version) or Equation Solution (64 or 32 bit version, depending on your Windows type).
Note that all directory paths used by make should have forward slashes (/) instead of typical Windows backslashes (\).
- Download and install OpenOCD from this repo.
- Build the firmware in Eclipse.
- Click
Run->Debug Configurationsand double clickGDB OpenOCD Debugging. The a new target will be created underGDB OpenOCD Debugging, click the new target. - Check the elf binary is correct in the
Maintab. - Switch to
Debuggertab, check theStart OpenOCD locallyoption and select the executable path for OpenOCD. Type-f openocd.cfgin theConfig optionstext field. Note that theopenocd.cfgin this repo is for ST-Link v2 only. If you are using other debug probes, theopenocd.cfgshould be revised. - Click
Applybutton to save the configuration. The clickDebugbutton to start a debug session.