Details zu Prozessoren und Cross-Compiler für OpenMoko

Hier geht es um die Hardware auf der Openmoko läuft

Details zu Prozessoren und Cross-Compiler für OpenMoko

Beitragvon alex am Mi 21. Jan 2009, 12:16

Bei meinen Recherchen zum Thema manuelles Kompilieren gängiger Open Source Software auf exotischen Plattformen und Architekturen bin ich auf einige Hinweise gestossen, die mich beunruhigen.

So soll es wohl einen generellen Unterschied zwischen Intel i386-Prozessoren, PowerPCs, MIPS und ARM geben: Endianness. Intel sei immer "Little Endian", PowerPC, MIPS und ARM als echte RISC-Architekturen wahlweise "Little Endian" oder "Big Endian".
Bei nicht ganz sauber programmierter Software könnte es Fehler beim Portieren und Ausführen geben.
Die NEO-Geräte für OpenMoko laufen ja nun ebenfalls mit einem ARM-Prozessor unter der Haube.
Wird diese CPU im Moko von Linux "little" oder "big" betrieben?
Ist das für mich als Hobbyist ein ernstzunehmendes Problem?
Gruss alex
alex
 
Beiträge: 2
Registriert: Mi 21. Jan 2009, 12:15

Re: Details zu Prozessoren und Cross-Compiler für OpenMoko

Beitragvon trurl23 am Mi 21. Jan 2009, 12:22

Im Klartext heißt dass, dass Du aufpassen musst, wenn Du lowlevel Zahlen aus Bytefolgen konvertierst. Denn bei x86-Kompatiblen wird immer das höherwertigere Byte zuerst gespeichert.

Das Ist also relevant für C/C++/Assembler bzw. alle Sprachen, bei denen es häufiger zu direkten Speicherzugriffen und "unsauberen" Typkonvertierungen kommt.
Dies ist insbesondere bei der Serialisierung ein Problem, also wenn Du beispielsweise Daten über Netzwerk versenden oder in eine Datei speichern willst und dich darauf verlässt, dass Dein Integerdatentyp immer 32bit groß ist und die höherwertigen Bytes immer zuerst gesendet werden (zumindest wenn Du die 32 bit einfach so aus dem Speicher kopierst und übermittelst). Um solche Operationen portabel auszuführen, ist es u.U. ratsam eine fertige Bibliothek zur Datenserialisierung zu nutzen.

Bei interpretierten Sprachen stellt die Tatsache, dass ARM "andersrum" im Vergleich zu x86 ist eher kein Problem dar, da hier in der Regel schon entsprechende (und komfortable) Serialisierungsschnittstellen in den Standardbibliotheken enhalten sind (z.B. pickle/cpickle für Python).

Desweiteren brauchst Du zum Kompilieren einen cross-compiler, weil die Zielplattform normalerweise zu schwach ist. Ein cross-compiler ist ein compiler, der auf Deiner Plattform z.B. x86 läuft, aber Code für eine andere Plattform z.B. ARM generiert. Dieser spuckt auf Deiner Plattform nicht ausführbare Executables aus.

Leider ist beim cross-compiler aber nicht Schluss, sondern Du benötigst üblicherweise auch jede Menge libraries (zumindest um eine grafische Applikation zu schreiben) und die müssen auch cross-compiliert vorliegen. Der erste Schritt bei OpenMoko wäre, sich die OM2007.2-Quellen zu ziehen und ein eigenes image zu kompilieren. Dabei wird u.a. der benötigte cross-compiler und die libraries erzeugt.

Ein einfacherer Einstieg ist zumindest für OpenMoko Python zusammen mit pygtk, ist beides verfügbar.
Allerdings nehme ich an, dass Du da bei größeren Applikationen von der Performance her relativ schnell an Grenzen stoßen dürftest.

Grüße
Trurl
trurl23
 
Beiträge: 4
Registriert: Mi 21. Jan 2009, 12:21

Re: Details zu Prozessoren und Cross-Compiler für OpenMoko

Beitragvon Lucas de Vil am Mi 21. Jan 2009, 12:24

Gibt es eigentlich irgendwo einen offiziellen offenen CrossCompiler für den Freerunner oder reicht mir da der normale ARM-Compiler der GCC?
Idealerweise brauch ich den für *Ubuntu, PowerPC und Intel Macs.
Vorgefertigtes habe ich irgendwie noch nicht gefunden.
Oder ich hab einfach falsch gesucht. ;)
Lucas de Vil
 
Beiträge: 7
Registriert: Mi 21. Jan 2009, 11:30


Zurück zu Die Hardware

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron