User Tools

Site Tools


projects:crazyflie:devenv:index

Development environment

Software Tools

Software used

The following software are used by the Crazyflie development environment toolchain:

These are available for both Windows and Linux.

Setup on Fedora 16

Installing

In order to fix the permissions so it's possible to use the JTAG and USB Radio without being root do the following steps.

sudo usermod -a -G plugdev username

Note that you will need to logout and in again for the added group to take effect.

Find the JTAG vendor/product ID by running lsusb.

Create a file named /etc/udev/rules.d/99-jtagkey.rules and add the following:

SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="cff8", MODE="0664", GROUP="plugdev"

Create a file named /etc/udev/rules.d/99-crazyradio.rules and add the following:

SUBSYSTEM=="usb", ATTRS{idVendor}=="1915", ATTRS{idProduct}=="7777", MODE="0664", GROUP="plugdev"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1915", ATTRS{idProduct}=="0101", MODE="0664", GROUP="plugdev"

Setup on Ubuntu 13.04

Most of the software that you will need is now available from the repositories so just run the following command to install it:

sudo apt-get -y install mercurial python2.7 python-usb python-pygame python-qt4 qt4-designer openocd build-essential

Run the following to download, unpack and copy the ARM Embedded toolchain:

wget https://launchpad.net/gcc-arm-embedded/4.7/4.7-2013-q1-update/+download/gcc-arm-none-eabi-4_7-2013q1-20130313-linux.tar.bz2
tar xjf gcc-arm-none-eabi-4_7-2013q1-20130313-linux.tar.bz2
mkdir ~/bin
mv gcc-arm-none-eabi-4_7-2013q1 ~/bin/gcc-arm-none-eabi

And then also add the binaries to your path: In order for the build system to find the toolchain when building the firmware it has to be added to the path:

echo -e "\nPATH=\$PATH:$HOME/bin/gcc-arm-none-eabi/bin" >> ~/.bashrc
source ~/.bashrc

Setup on Windows

TBD

Setup on Mac OS X

Development environment setup is relatively easy on Mac OS X.

Please see this blog posting for an overview.

Compiling the copter code

The Crazyflie project is based on a Makefile. A couple of target are useful:

crazyflie-fimrware$ make         # Make copter firmware
crazyflie-fimrware$ make V=1     # Make copter firmware and shows the full compilation commands
crazyflie-fimrware$ make CLOAD=1 # Make copter firmware to be used with the bootloader
crazyflie-fimrware$ make clean && make USE_ESKYLINK=1 CLOAD=1 all # Make copter firmware to be used with the bootloader, CF controlled with eSky ET6i transmitter
crazyflie-fimrware$ make cload   # Flash the firmware using the radio bootloader
crazyflie-fimrware$ make flash   # Flash firmware using openOCD and the jtagKey
crazyflie-fimrware$ make reset   # Reset the copter using openOCD
crazyflie-fimrware$ make openocd # Launch openOCD and connect it to the copter (can then be used via the telnet interface and/or GDB)

A couple of variables can be set on the command line or shell environment to configure the build process:

Variable Default value Usage
CLOAD 1 If at 1 the firmware is liked to be used with the bootloader.
DEBUG 0 If at 1 the firmware will be build without optimization and with debug symbol (the firmware is ~70K in debug mode and ~40K optimized).
CROSS_COMPILE arm-none-eabi- Prefix of the cross compilation toolchain to use. Any bare arm GCC should do. The default value is good for the CodeSourcery toolchain.
OPENOCD_INTERFACE interface/jtagkey.cfg JTAG interface configuration file to use with openOCD. Default is for the Amontec JtagKEY.
V 0 Verbose mode. If V=1 the compilers command lines will be displayed. If V=0 only the tool type and target file are displayed.
PYTHON2 python Name of the Python 2.7 interpreter
USE_ESKYLINK 0 If at 1 the firmware is compiled to use with the eSky ET6i transmitter.

It is possible to create a file config.mk to set these variables in a more permanent manner, this file is imported at the beginning of Makefile.

The openOCD targets do not make the copter code, hence the compilation must be called first with make and then make flash can be called.

It is possible to flash with openOCD/jtag a bootloader version of the copter as long as the bootloader is present at the beginning of the flash. However this could interfere with GDB.

It is also possible to work with the copter code from within Eclipse.

Compiling and flashing the bootloader

The copter can be loaded with a radio bootloader contained in the crazyloader folder. The dev environment is very similar to the copter one:

crazyflie-bootloader$ make       # Make the bootoader
crazyflie-bootloader$ make flash # Flash the bootloader with openOCD
projects/crazyflie/devenv/index.txt · Last modified: 2015-07-15 16:31 (external edit)