====== Emerge gentoo crossdev avr-gcc for Arduino and Cura ======
In order to update the firmware of our [[mission:resources:picoprint|3D printer]] for dual head extrusion and to compile [[https://github.com/daid/Cura/|Cura]] (an alternative gcode slicer) a working AVR crossdev toolchain was needed.
The printer firmware uses the Arduino toolkit so the dependency was obvious, the Cura build unfortunately needs a working avr-gcc as well (not that obvious), because it also ships with Ultimaker firmware, which cannot be disabled, even if you don't have an Ultimaker (kinda stupid).
Currently, the stable crossdev avr-gcc suite with gcc 4.8.3 did not compile so it was a bit of a hassle to get it running again. In order to save somebody else the time to figure this out, here's the install trace that was already tested verbatim on another gentoo amd64 box and worked as well.
Let's start with a clean slate and unmerge any cross-avr chain:
crossdev -C avr
This was used originally:
USE="multilib -cxx" crossdev -v -s1 --without-headers --target avr --gcc 4.5.2 --binutils 2.21 --libc 1.7.0
USE="multilib cxx" crossdev -v -s4 --target avr --gcc 4.5.2 --binutils 2.21 --libc 1.7.0
As of 2015-04-05 the above combination doesn't work anymore, please use this instead:
USE="multilib -cxx" crossdev -v -s1 --without-headers --target avr --gcc 4.5.4 --binutils 2.21.1-r1 --libc 1.7.0
USE="multilib cxx" crossdev -v -s4 --target avr --gcc 4.5.4 --binutils 2.21.1-r1 --libc 1.7.0
And to finish it up:
ln -nsf /usr/x86_64-pc-linux-gnu/avr/lib/ldscripts /usr/avr/lib/ldscripts
ln -nsf /usr/x86_64-pc-linux-gnu/avr/lib/ldscripts /usr/x86_64-pc-linux-gnu/avr/binutils-bin/2.20.1/ldscripts
cd /usr/avr/lib
ln -nsf avr5/crtm328p.o .
ln -nsf avr6/crtm2561.o .
ln -nsf avr6/crtm2560.o .
mkdir -p /usr/share/arduino/hardware/tools/avr/bin/
ln -s /usr/bin/avr-gcc /usr/share/arduino/hardware/tools/avr/bin/avr-gcc
ln -s /usr/bin/avr-g++ /usr/share/arduino/hardware/tools/avr/bin/avr-g++
ln -s /usr/bin/avr-objcopy /usr/share/arduino/hardware/tools/avr/bin/avr-objcopy
ln -s /usr/bin/avr-ar /usr/share/arduino/hardware/tools/avr/bin/avr-ar
ln -s /usr/bin/avr-as /usr/share/arduino/hardware/tools/avr/bin/avr-as
ln -s /usr/bin/avr-size /usr/share/arduino/hardware/tools/avr/bin/avr-size
If you want to use the Software Serial and monitoring feature, you need to install rxtx-2.2_pre2 or newer. This version is still masked in the main portage tree, so you will need to unmask it by adding
=dev-java/rxtx-2.2_pre2 ~x86 ~amd64
to /etc/portage/package.keywords/arduino and then (re)emerge it
$ emerge dev-java/rxtx
Also, if you don't want to use the crappy JAVA based Arduino IDE, you can simply use a Makefile like this: https://github.com/sudar/Arduino-Makefile
{{tag>gentoo avr-gcc crossdev arduino cura}}
{{keywords>Apollo-NG apollo next generation hackerspace hacker space research development makerspace fablab diy community open-resource open resource mobile hackbus gentoo avr-gcc crossdev arduino cura}}
~~DISCUSSION~~