# Use the Web Builder

The Mizar32 Web Builder at http://builder.simplemachines.it lets you customise the firmware in several ways and will build you a new firmware image without you having to do any of this horrible stuff. But unfortunately at the moment, we don't have this feature yet for Hempl. See issue #4.
If that doesn't do enough for you, or if you just enjoy this kind of thing, then take a deep breath and...

# Install an AVR32 cross-compiler
## On GNU/Linux
### Atmel AVR 32-bit Toolchain 3.4.2

The cross-compiler for GNU/Linux is the Atmel AVR Toolchain for Linux.
At the time of writing, July 2015, the latest version is Atmel AVR Toolchain 3.4.2, based on the GNU C Compiler version 4.4.7.
To skip the Atmel registration form, you can use these quick download links:
* Atmel AVR 32-bit Toolchain 3.4.2 - Linux 32-bit
* Atmel AVR 32-bit Toolchain 3.4.2 - Linux 64-bit
You will also need
* Atmel AVR Toolchain 3.4.2 - Header Files
and, if you are interested in building the toolchain yourself, the source code is here:
* Atmel AVR 32-bit Toolchain 3.4.2 - Source code

#### Fetching and unpacking the toolchain

Here we show the steps to install the 32-bit version:
then, to use it, once per session:
you can, set the include path (C_INCLUDE_PATH), to use atmel-headers-6.1.3.1475 with avr32.
For the 64-bit version, replace every "x86" in the above with "x86_64"

#### Installing it as a Debian/Ubuntu package

To make a Debian/Ubuntu package out of this, do the above, then go:
or, for the 64-bit version, do the same thing in avr32-gnu-toolchain-linux_x86_64 and rename the .deb file to ..._amd64.deb
If you had installed their old 2.4.2 Ubuntu packages, you will need to remove those first:
then you can install the new toolchain with
(to remove it again, sudo apt-get purge avr32-gnu-toolchain)

### Build a toolchain from source code

ct-ng, a fork of crosstool-ng, builds better AVR32 cross compilers for you:
By default, it installs the cross-toolchain under your home directory, so before building eLua you need to say:

## On Windows

Atmel also provide the Atmel AVR Toolchain for Windows as a setup.exe, for which the quick download link is:
* Atmel AVR Toolchain 3.4.2 for Windows

# Install the build system

The Hempl build system (same as the official elua0.9) uses "scons" and "gcc". The Hempl sources are under git, so install those.
On Debian or Ubuntu:

# Download the sources
## Stable release

The latest stable source release is hempl-1.0, which fully supports the Mizar32 boards.
An alternative is:

## The current development version
# Compile Hempl
## For Mizar32 A and B

The 256KB and 512KB flash/64MB internal RAM versions of Mizar32 use the same Hempl firmware. Use this command:
If you're compiling the Hempl sources, the build will create a file hempl_at32uc3a0256.elf.

## For Mizar32 C

We can't directly compile Hempl for Mizar32-C. It only has 128K of flash! There's another way. We use emBLOD for that. To understand how that works, see the chapter The emBLOD second-stage boot loader.

# Program the firmware to the board

When the compilation is finished, it should have created a file called something like hempl_at32uc3a0256.elf which can be programmed into the Mizar32 board in various ways: see the chapter on Flashing firmware.
If you will be using dfu-programmer to do this, you will first need to convert your .elf file to a .hex file. For example: