Direkt zum Inhalt | Direkt zur Navigation

UniBwM » LRT » LRT 1 » Prof. Gerdts » Teaching » Zusatzmaterial und Links » brickOSusbSuse.html

brickOSusbSuse.html

brickOSusbSuse.html — HTML, 5 kB (5.332 bytes)

Dateiinhalt

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
	<TITLE></TITLE>
	<META NAME="GENERATOR" CONTENT="OpenOffice.org 2.0  (Linux)">
	<META NAME="CREATED" CONTENT="20060218;20000200">
	<META NAME="CHANGED" CONTENT="20060224;4285200">
	<STYLE>
	<!--
		@page { size: 10cm 29.7cm; margin: 2cm }
		P { margin-bottom: 0.21cm }
	-->
	</STYLE>
</HEAD>
<BODY LANG="de-DE" DIR="LTR">
<PRE>Einrichtung von BrickOS mit USB-Tower- Unterst&uuml;tzung unter Linux


Falls binary packages verf&uuml;gbar sind, nimmt man nat&uuml;rlich die.
Ansonsten ist ein wenig Arbeit n&ouml;tig...

**************************************************
Sources holen:
brickOS-0.9.0 verf&uuml;gt im Gegensatz zu der hier benutzten Version bereits &uuml;ber 
USB- Unterst&uuml;tzung (im Gegensatz zur Version 0.2.6.10). Ich meine da eigentlich bei 
sourceforge etwas anderes gelesen zu haben, aber als ich einen USB-Patch mit der zu 
patchenden Datei verglichen habe, stellte ich fest, dass zumindest einiges &uuml;bernommen 
worden ist. Leider compiliert bei mir brickOS-0.9.0 nicht. Also:

lnpd gibt es bislang nicht f&uuml;r den USB- Tower. Eventuell &auml;ndert sich das aber bald...
Ich benutze eine lnpd-0.9.2, die an der Uni Bremen gebastelt wurde. lnpd l&auml;uft dabei 
nicht mehr als Demon, aber daf&uuml;r kann man Daten vom RCX an den Tower senden (die 
andere Richtung funktioniert nicht).

lnpd-0.9.x
brickOS-0.2.6.10.6
binutils-2.16.1
gcc-4.0.0
newlib-1.14.0
ggf. brickos-0.2.6.10.6-gcc-3.4-usb.patch

Grund f&uuml;r gcc-4.0.0: Version 4.0.2 liess sich absolut nicht kompilieren...
alle entpackt in /usr/local/src speichern

**************************************************
compilieren:

* * * * * * * * *
binutils:
im binutils-Verzeichnis:

&gt; ./configure --target=h8300-hms --prefix=/usr/local

&gt; make
Kaffee trinken gehen

&gt; make install
&gt; cd ..


* * * * * * * * *
gcc:
Diese L&ouml;sung ist Quick and dirty, aber sie funktioniert wenigstens:
&gt; cp -r newlib-1.14.0/newlib gcc-4.0.0/
&gt; cp -r newlib-1.14.0/libgloss gcc-4.0.0/

Da hier ein bisschen mehr zu tun ist als bei den binutils, bauen wir uns erstmal ein 
Verzeichnis, in dem wir die gebastelten Makefiles etc. sammeln:

&gt; mkdir build-gcc
&gt; cd build-gcc
&gt; ../gcc-4.0.0/configure --target=h8300-hms --prefix=/usr/local --enable-languages=c,c++ --with-newlib

Jetzt sollte gcc als cross-compiler konfiguriert sein...
also:
&gt; make

Die neueste GCC- Version funktioniert deshalb nicht, weil einige zu installierende 
Dateien in einem speziellen C-Dialekt (ISO-C90) geschrieben sind und andere nicht. 
Mit 4.0.0 sollte es aber klappen. Man sollte nebenbei ein gutes Buch lesen. 
Bei 700 Mhz, 256MB dauert's ca. eineinhalb Stunden. Etwas schneller geht's, wenn 
man die Konsole minimiert. Ansonsten braucht die Darstellung selbst einige Zeit.

Okay, maken wir's install.
&gt; make install
Dauert &uuml;berraschenderweise auch nochmal seine Zeit, aber mehr als zwei, drei Minuten 
sollten's auch nicht werden.

* * * * * * * * *
brickOS!
Dann wird also brickOS installiert. Auf geht's:
&gt; cd ..
f&uuml;r brickOS-0.2.6.10.6:
 &gt; cd brickos-0.2.6.10.6/
 &gt; patch -p1 &lt;../brickos-0.2.6.10.6-gcc-3.4-usb.patch
&gt; ./configure
&gt; make
&gt; make install



Eigentlich sollte Linux den Tower selbst&auml;ndig erkennen. Ob das funktioniert, 
testet man mit &gt; find /dev | grep lego

Wird eine Datei angezeigt, hat alles geklappt. In dem Fall merke man sich den Namen 
des Device. Ansonsten muss man die Device- Datei f&uuml;r den Tower selbst erstellen 
mit:

&gt; mknod /dev/legousbtower0 c 180 160

Das war's. Ab jetzt sollte die &Uuml;bertragung der Firmware und selbstgeschriebener 
Programme auf den Tower funktionieren.



Probieren wir, ob die Firmware &uuml;bertragen werden kann. Dazu muss erstmal die 
vorhandene Firmware gel&ouml;scht werden, indem man beim RCX die 
„Prgm“- Taste gedr&uuml;ckt h&auml;lt und die 
„On-Off“- Taste dr&uuml;ckt. Der RCX quittiert das mit einem 
freundlichen Piep. Alternativ kann man auch alle Batterien f&uuml;r kurze Zeit 
rausnehmen. &Uuml;bergeht man diesen Schritt, bricht die &Uuml;bertragung mit 
„delete firmware failed“ ab.

Jetzt kann man also die BrickOS- eigene Firmware &uuml;berspielen:

&gt; firmdl3 --tty=/dev/legousbtower0 /usr/local/lib/brickos/brickOS.srec

Ggf. muss man /dev/legousbtower0 durch den richtigen Dateinamen ersetzen; im 
Zweifelsfall sucht man einfach im /dev - Verzeichnis nach lego. 
An der Konsole erscheint eine Statusanzeige in %.

Mit

&gt; dll -v --tty=/dev/legousbtower0 /usr/local/src/brickos-0.2.6.10.6/demo/helloworld.lx

sendet man dann das altbekannte (leicht angepasste) „HelloWorld“- Programm. 
Die Option -v sorgt daf&uuml;r, dass dll nicht einfach ohne Anzeige beendet wird, 
wenn das Programm erfolgreich gesendet wurde.

Mit der „Run“- Taste startet man das ausgew&auml;hlte Programm. Die 
Option -p2, -p3,... -p8 erlaubt es, mehrere Programme zu laden. 
Mit der „Prgm“- Taste w&auml;hlt man, welches gestartet werden soll.




<B>ToDo:</B>
links setzen,
lnpd,
lnpd- Howto</PRE>
</BODY>
</HTML>