Dependencies

We've used quite a lot of tools to build our firmware. The following table lists all the dependencies that one need to install before being able to build the firmware. Note that these tools are needed to build and run the firmware but not an actual part of the finished software itself.

DependencyRole
GNU ARM Embedded Toolchain This toolchain contains the essential tools required to build the firmware : a C and C++ compiler, an assembler, a linker, and a debugger. It also includes miscellaneous tools to analyze the resulting products.
libpng This library allows the compression and decompression of PNG images. We're not including libpng code in the firmware itself: instead we use it on the host machine to embed decompressed image assets.
Bison We use Bison to parse mathematical expressions. Bison takes a BNF grammar in, and outputs C++ code that's eventually compiled into the firmware.
Flex Bison needs to rely on an external software to perform lexical analysis. We're using Flex for this purpose.
GNU Make Building the firmware takes quite a lot of steps. We're using a Makefile script to plan all those steps and replay them in an efficient manner.
FreeType We've designed a custom font for use in the firmware. We're using FreeType on the host PC to convert it to a raster image which will be embedded in the device.
FLTK We've designed a simulator that runs on the host PC. It's not as fun as running it on the device, but it can be convenient. We're using FLTK to generate a cross-platform user interface.
dfu-util Dfu-util lets you upload a firmware to your device over the USB port.
OpenOCD You'll only need this if you use the Cortex Debug port. OpenOCD allows you to attach a full-fledged debugger to follow code execution step-by-step.

On Debian

If you run Debian or a derivative such as Ubuntu, you should be able to install all the required dependencies by using the command below.

apt-get install bison build-essential dfu-util flex gcc-arm-none-eabi git libfltk1.3-dev libfreetype6-dev libpng12-dev