summaryrefslogtreecommitdiff
path: root/src/HW/makerbot/arduino-on-gentoo/document.it.rest.txt
blob: 6a2c51fe61fba6c7452916487784574d418ac314 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
==============================================
 Compilare Arduino / Sanguino su Gentoo amd64
==============================================
:CreationDate: 2009-09-01 17:27:01
:Id: HW/makerbot/arduino-on-gentoo
:tags: - hardware
       - software
       - 3dPrint
 
Bene, mi è arrivata la CupCake_, in scatola di montaggio. Ha
l'elettronica già montata, e i firmware pre-installati. Ma voglio
poter fare gli aggiornamenti, specialmente perché tutto il progetto è
ancora in sviluppo.
 
Allora, le `istruzioni di MakerBot`_ dicono "prendi l'ambiente
Arduino_, applica la patch Sanguino_, e sei a posto". Facile, vero?
 
Comincio scaricando i sorgenti per il software Arduino_. Vedete, la
mia macchina è a 64 bit, e i binari pre-compilati sono a 32. Non
buono.
 
Ovviamente, devo compilare il cross-compilatore e accessori…
abbastanza facile: crossdev_ ha un "target" apposito::
 
  # crossdev -t avr
 
Peccato che non funzioni: ``avr-libc-headers`` ha bisogno che il
compilatore sia già stato compilato. Non mi metto a correggerlo nel
modo giusto, mi limito a seguire il `consiglio trovato su una mailing
list`_, e (dopo la fallita invocazione di ``crossdev``) faccio::
 
  # USE='-nls -fortran -gtk -openmp -mudflap' emerge -v cross-avr/gcc
  # crossdev -t avr
 
e finalmente ho un cross-compilatore (che speriamo funzioni).
 
Quindi, seguendo le `istruzioni Arduino`_, faccio::
 
  ~/arduino-src/build/linux$ ./make.sh
 
e mi risponde::
 
 The Java bundle that is included with Processing supports only i686 by default.
 To build the code, you will need to install the Java 1.5.0_15 JDK (not a JRE,
 and not any other version), and create a symlink to the directory where it is
 installed. Create the symlink in the "work" directory, and named it "java":
 ln -s /path/to/jdk1.5.0_15 /home/dakkar/arduino-src/build/linux/work/java"
 
Va bene, lo faccio. Siccome non ho letto bene, faccio il symlink dal
JDK ``icedtea6``. Non sembra dare problemi.
 
Ora compila, ma non esegue: ci sono delle librerie a 32 bit! Chi le ha
compilate??
 
Guardando in Portage (sì, uso Gentoo) vedo che c'è un ebuild per una
versione (più vecchia) di Arduino, e dichiara di dipendere proprio
dalla libreria che mi dà problemi. Per cui::
 
  emerge -av dev-java/rxtx uisp
 
e ho la libreria giusta. Ovviamente, il programma Arduino non la usa
(non sta nel ``CLASSPATH`` predefinito), per cui metto dei symlink al
posto della versione inclusa::
 
  rm work/lib/RXTXcomm.jar work/lib/librxtxSerial.so
  ln -s /usr/share/rxtx-2/lib/RXTXcomm.jar  work/lib/
  ln -s /usr/lib/rxtx-2/librxtxSerial.so work/lib/
 
Parte!
 
.. warning:: Nell'albero Portage ufficiale la versione di RXTX è la
   2.1.7.2, che non sembra funzionare a dovere. Serve la 2.2; potete
   ottenerla dalla `mia overlay </cgit/gentoo-overlay/>`_.
 
Certo, ancora non c'è il supporto per Sanguino_, e la piastra
principale della CupCake_ è un Sanguino_.
 
Le `istruzioni Sanguino`_ dicono di copiare un paio di directory,
sovrascrivere un po' di file, aggiungere delle linee a un file, e
dovrebbe funzionare. Beh, non proprio. Non ha funzionato per me.
 
Dopo un po' di ``find``, noto che il file ``boards.txt`` (quello a cui
bisogna aggiungere righe) è stato copiato dalla sua posizione "sorgente"
(``/home/dakkar/arduino-src/hardware/boards.txt``) alla posizione di "lavoro"
(``/home/dakkar/arduino-src/build/linux/work/hardware/boards.txt``). Bene,
avrei dovuto leggere *tutta* la documentazione: dice di ricompilare
l'ambiente Arduino ogni volta che si fanno delle modifiche.
 
A questo punto però mi sono un po' rotto di ri-fare i trucchi di cui
sopra, quindi cambio lo script ``make.sh``::
 
 ===================================================================
 --- make.sh (revision 756)
 +++ make.sh (working copy)
 @@ -34,25 +34,7 @@
 
    install -m 755 dist/arduino work/arduino
  
 -  ARCH=`uname -m`
 -  if [ $ARCH = "i686" ]
 -  then
 -    echo Extracting JRE...
 -    tar --extract --file=jre.tgz --ungzip --directory=work
 -  else 
 -#    echo This is not my beautiful house.
 -#    if [ $ARCH = "x86_64" ]
 -#    then 
 -#      echo You gots the 64.
 -#    fi
 -    echo "
 -The Java bundle that is included with Processing supports only i686 by default.
 -To build the code, you will need to install the Java 1.5.0_15 JDK (not a JRE,
 -and not any other version), and create a symlink to the directory where it is
 -installed. Create the symlink in the \"work\" directory, and named it \"java\":
 -ln -s /path/to/jdk1.5.0_15 `pwd`/work/java"
 -    exit
 -  fi
 +  ln -s "$(java-config -O)" work/java
  fi
  
  cd ../..
 @@ -91,6 +73,11 @@
  rm -rf ../build/linux/work/classes
  mkdir ../build/linux/work/classes
  
 +rm ../build/linux/work/lib/RXTXcomm.jar
 +rm ../build/linux/work/lib/librxtxSerial.so
 +ln -s /usr/share/rxtx-2/lib/RXTXcomm.jar ../build/linux/work/lib/
 +ln -s /usr/lib/rxtx-2/librxtxSerial.so ../build/linux/work/lib/
 +
  ../build/linux/work/java/bin/java \
      -cp ../build/linux/work/java/lib/tools.jar \
      com.sun.tools.javac.Main \
 
Ora::
 
  rm -rf work/
  ./make.sh
  ./run.sh
 
e ho l'ambiente funzionante! Davvero funzionante: ho usato il
risultato di queste istruzioni per aggiornare il firmware di entrambe
le board della CupCake_, e ha funzionato perfettamente.
 
.. _CupCake: http://wiki.makerbot.com/cupcake
.. _`istruzioni di MakerBot`: http://wiki.makerbot.com/cupcake-motherboard-firmware-update
.. _crossdev: http://en.gentoo-wiki.com/wiki/Crossdev
.. _`consiglio trovato su una mailing list`: http://www.mail-archive.com/avr-libc-dev@nongnu.org/msg03019.html
.. _Arduino: http://arduino.cc/
.. _`istruzioni Arduino`: http://code.google.com/p/arduino/wiki/BuildingArduino
.. _Sanguino: http://sanguino.cc/
.. _`istruzioni Sanguino`: http://sanguino.cc/softwareforlinux