mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Welchen Arm-Assembler-Kompiler für Linux?


Autor: Jobst M. (jobstens-de)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich bin auf der Suche nach einem ARM-Assembler-Kompiler für Linux. Ein 
einfaches Komandozeilentool wäre perfekt.
Mit Google bekommt man leider viel zu viel, bzw. gar nichts.

:-/

Vielleicht kann mir ja mal jemand einen Stoß in die richtige Richtung 
geben ...


Gruß

Jobst

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gcc?

Autor: Jobst M. (jobstens-de)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der gcc kann Assembler?

Autor: Knilch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
GNU ARM Toolchain?
http://www.gnuarm.com/

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jobst M. schrieb:

> Der gcc kann Assembler?

Nö, der erzeugt Assembler-Code, weshalb man ihn als Assembler-Compiler 
bezeichnen kann, so wie andere dann Binärcode-Compiler sind. Ein 
Assembler hingegen kompiliert nichts mehr, der assembliert.

Autor: Jobst M. (jobstens-de)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf der Seite war ich schon ein paar mal - da steht nichts von 
Assembler.


Gruß

Jobst

Autor: Jobst M. (jobstens-de)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay - ich benötige ein ASM-to-HEX Konverter ...


Gruß

Jobst

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber in der toolchain ist der Assembler doch dabei.
Sonst hätte die Kette eine Lücke vor dem Linker...

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jobst M. schrieb:
> Okay - ich benötige ein ASM-to-HEX Konverter ...

oder eher Assembler=ASM-to-OBJ und einen OBJ-to-HEX?
Beides in der tool chain dabei...

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jobst M. schrieb:
> Der gcc kann Assembler?

gcc steht schon lange nicht mehr für "GNU C-Compiler", sondern
für "GNU compiler collection".

Autor: Jobst M. (jobstens-de)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klaus Wachtler schrieb:
> oder eher Assembler=ASM-to-OBJ und einen OBJ-to-HEX?
> Beides in der tool chain dabei...

Schaue ich mir (noch)mal an ...

Vielen Dank erstmal. Vielleicht kommen ja noch andere Vorschläge.


Gruß

Jobst

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In Linux sind Tools wie Assembler und Linker als "bintools" 
zusammengefasst. Wenn man keinen Compiler braucht, dann besorgt man sich 
die bei GNU und installiert die über Sourcecode - fertige compilerfreie 
Pakete werden bei ARM nicht sehr häufig nachgefragt. Mit Compiler drin 
gibts eine aktuelle Version als freie Version bei Codesourcery.

GnuARM ist ein bischen alt, könnte bei den Cortexen zu Problemen führen.

Autor: Jobst M. (jobstens-de)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klaus Wachtler schrieb:
> gcc steht schon lange nicht mehr für "GNU C-Compiler", sondern
> für "GNU compiler collection".

Habe ich auch nie behauptet. Aber:

The GNU Compiler Collection includes front ends for C, C++, Objective-C, 
Fortran, Java, Ada, and Go



Gruß

Jobst

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit der Toolchain geht assembler aber auch, selbst wenn es nicht
außen drauf steht.

Aus man gcc:
       Suffixes of source file names indicate the language and kind of processing to be
       done:

       .c    C source; preprocess, compile, assemble
       .C    C++ source; preprocess, compile, assemble
       .cc   C++ source; preprocess, compile, assemble
       .cxx  C++ source; preprocess, compile, assemble
       .m    Objective-C source; preprocess, compile, assemble
       .i    preprocessed C; compile, assemble
       .ii   preprocessed C++; compile, assemble
       .s    Assembler source; assemble
       .S    Assembler source; preprocess, assemble
       .h    Preprocessor file; not usually named on command line

       Files with other suffixes are passed to the linker.  Common cases include:

       .o    Object file
       .a    Archive file

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jobst M. schrieb:

> The GNU Compiler Collection includes front ends for C, C++, Objective-C,
> Fortran, Java, Ada, and Go

Jau, und diese Frontends erzeugen Zwischencode für den Rest des GCC, der 
wiederum Assemblercode erzeugt, der wiederum vom Assembler zu Binärcode 
umgesetzt wird.

Dieser Assembler gehört nun aber tatsächlich formal nicht zu GCC, 
sondern eben zu den bintools. Die aber logischerweise Bestandteil vom 
Compilerpaketen wie GnuARM oder Codesourcery sind.

Am einfachsten kommt man also an einen Assembler ran, in dem man sich 
ein solches Compilerpaket besorgt.

Autor: Jobst M. (jobstens-de)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mal 'ne ganz blöde Frage: ist der gcc für alle Prozessoren gleichzeitig?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Er hat verschiedene Architekturmodule im Codegenerator, von denen bei 
der Übersetzung einer bestimmten Version des Compilers (z.B. für ARM) 
eines ausgewählt wird. Diese Module sind aber Bestandteil der 
Quellcodedistribution.

Bei Assembler ist das ähnlich. Jede compilierte Version des ähnlich 
aufgebauten Quellcodes davon verdaut nur eine Architkturfamilie.

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

nee ist er nicht

Autor: Jobst M. (jobstens-de)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tobi schrieb:
> Moin,
>
> nee ist er nicht

Scheint so :-/

Dann werde ich mir wohl noch einen zweiten gcc auf den Rechner setzen 
...


Ich berichte, wie es weiter geht ...


Gruß

Jobst

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> bintools

Eigentlich 'binutils'.

Jobst M. schrieb:
> The GNU Compiler Collection includes front ends for C, C++, Objective-C,
> Fortran, Java, Ada, and Go

GCC enthält nicht den Assembler, aber trotzdem kann man über ihn 
assemblieren, genauso wie er keinen Linker enthält, man aber trotzdem 
darüber linken kann. Assembler und Linker sind eben nicht Teil von GCC, 
müssen aber vorhanden sein, damit man GCC sinnvoll nutzen kann. Also 
sind die bei jeder Toolchain schon mit dabei.

Autor: Jobst M. (jobstens-de)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay. Der aktuelle gcc setzt einen kompletten Umbau meines Systems 
voraus um diesen zu bauen.

rpmseek findet keinen gcc dummguck ... das ist ja merkwürdig. Man kann 
danach browsen und wenn man ihn anklickt, kommt man wieder zur Suche ??

Das ist mir jetzt schon zu viel. Da schreibe ich mir lieber selber einen 
...


Gruß

Jobst

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jobst M. schrieb:

> rpmseek findet keinen gcc dummguck ... das ist ja merkwürdig.

Jedenfalls keinen für ARM, wenn dein System nicht grad zufällig einen im 
Bauch haben sollte (was noch selten ist).

> Man kann
> danach browsen und wenn man ihn anklickt, kommt man wieder zur Suche ??

Vielleicht heisst er anders, aber wie immer er heisst, den so 
verbreiteten GCC für x86 oder amd64 wirst du nur dafür verwenden können, 
die gewünschten Binutils zu übersetzen. Nicht aber dazu, irgendwas für 
ARM zu übersetzen.

Es könnte allerdings helfen, wenn man wüsste, was für eine Distro das 
überhaupt ist. Bis jetzt weiss ich dank der Erwähnung von rpmseek nur, 
welche es nicht sein kann.

Ausserdem wäre da wie schon erwähnt Codesourcery lite. Nix übersetzen, 
nicht lang rpmsuchen, einfach installieren und arm-none-eabi-gcc 
aufrufen. Oder arm-none-eabi-as, wenn es dir nach dem Assembler in 
Reinform gelüstet.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jobst M. schrieb:
> Okay. Der aktuelle gcc setzt einen kompletten Umbau meines Systems
> voraus um diesen zu bauen.

Was ist das denn für ein komisches System? Ich habe schon viele GCCs 
gebaut und wüßte nicht, warum man da irgendwas am System umbauen müßte.

Abgesehen davon: Wenn du eh nur einen Assembler brauchst, warum willst 
du dann überhaupt einen GCC bauen? Wie gesagt: Assembler und Linker sind 
nicht Teil des GCC, sondern der binutils. Die kann man auch ohne GCC 
benutzen.

Autor: Jobst M. (jobstens-de)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist ein Mandriva 2009.0

Den gcc zu kompilieren habe ich ja nun auch schon gekippt. Allerdings 
bereiten mir die binutils auch gewisse Probleme. Ich habe das 
Komplettpaket gebaut - lief auch anstandslos durch. Aber zu ARM lässt 
sich das Ding nicht aus ...

Wie muss ich den gas aufrufen?


Gruß

Jobst

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um nicht den hauseigenen Assembler, Compiler, Linker etc. für
das eigene Systeme aufzurufen, haben die Programme meist
die Architektur davorgesetzt, also statt gcc avr-gcc für den
gcc, der AVR-Code erzeugt, arm-gcc für den, der ARM erzeugt, u.s.w..

Wenn du also nicht nur gebaut hast, sondern auch installiert,
wäre arm-gas oder arm-as ein guter Ansatz...

Auf einem Rechner hier mit der ARM-toolchain sind das die
aufrufbaren Programme, die mit arm- beginnen:
arm-920t-linux-gnu-addr2line  arm-920t-linux-gnu-run
arm-920t-linux-gnu-ar         arm-920t-linux-gnu-size
arm-920t-linux-gnu-as         arm-920t-linux-gnu-strings
arm-920t-linux-gnu-c++        arm-920t-linux-gnu-strip
arm-920t-linux-gnu-c++filt    arm-elf-addr2line
arm-920t-linux-gnu-cpp        arm-elf-ar
arm-920t-linux-gnu-g++        arm-elf-as
arm-920t-linux-gnu-gcc        arm-elf-c++filt
arm-920t-linux-gnu-gcc-3.4.5  arm-elf-gasp
arm-920t-linux-gnu-gccbug     arm-elf-gcc
arm-920t-linux-gnu-gcov       arm-elf-gdb
arm-920t-linux-gnu-gdb        arm-elf-ld
arm-920t-linux-gnu-gdbtui     arm-elf-nm
arm-920t-linux-gnu-gprof      arm-elf-objcopy
arm-920t-linux-gnu-ld         arm-elf-objdump
arm-920t-linux-gnu-nm         arm-elf-ranlib
arm-920t-linux-gnu-objcopy    arm-elf-run
arm-920t-linux-gnu-objdump    arm-elf-size
arm-920t-linux-gnu-ranlib     arm-elf-strings
arm-920t-linux-gnu-readelf    arm-elf-strip

Vielleicht hilft dir das die Suche.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um hier mal sicher zu gehen: Du hast es auch für_ _ARM gebaut?

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klaus Wachtler schrieb:
> Wenn du also nicht nur gebaut hast, sondern auch installiert,
> wäre arm-gas oder arm-as ein guter Ansatz...

Halt das, was er beim configure als target angegeben hat.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tja, wenn man wüsste, was er gemacht hat...

Autor: Jobst M. (jobstens-de)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Seufz ...

Also gut - ich dachte, ich reiche mit dem Bau hin ...
Eigentlich wollte ich die vorhandenen binutils nicht überschreiben, da 
dann evtl. der gcc damit rumzickt. Aber die binutils habe ich ja noch 
als Paket da ...

Also los ...

[root@tube binutils-2.21]# make install

... nö ... kein arm-as, kein arm-gas, kein arm[garnüscht]

nur den as

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klaus Wachtler schrieb:
> Tja, wenn man wüsste, was er gemacht hat...

Jobst M. schrieb:
> Also gut - ich dachte, ich reiche mit dem Bau hin ...

so genau wollten wir es gar nicht wissen, wie du "gebaut" hast :-)

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jobst M. schrieb:
> Eigentlich wollte ich die vorhandenen binutils nicht überschreiben, da
> dann evtl. der gcc damit rumzickt.

Brauchst du ja auch nicht. Wenn du die für ARM gebaut hast, haben die ja 
eh einen anderen Namen. Außerdem installiert man sich die natürlich in 
ein anderes Verzeichnis (ich würde was wie /opt/my-arm oder so wählen).

> Also los ...
>
> [root@tube binutils-2.21]# make install
>
> ... nö ... kein arm-as, kein arm-gas, kein arm[garnüscht]

Was hast du denn nun als target angegeben beim configure? Einfach nur 
arm?

Autor: Jobst M. (jobstens-de)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klaus Wachtler schrieb:
> Tja, wenn man wüsste, was er gemacht hat...

ich habe ihm einfach ein ./configure gegeben - was offensichtlich wohl 
falsch war ...

Ich ging davon aus, daß er mir dann alles baut ...

also nochmal ... gnnnnn

Wo finde ich denn, wie ich den Arm dort einbaue?
./configure --help hilft nicht weiter ...


Gruß

Jobst

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Jobst M. (jobstens-de)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rolf Magnus schrieb:
> Einfach nur arm?

Endet mit

*** BFD does not support target arm-unknown-none.


Gruß

Jobst

Autor: Jürgen (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier meine Skripte um GCC für ARM7 zu bauen, target ist arm-elf.
Für andere ARM Versionen sind evtl. Anpassungen nötig
(es wäre schön gewesen, wenn du etwas präziser schreiben würdest,
für welche ARM-Variante du das brauchst, welches Linux du hast, ...).

Wobei das für den Assembler wohl eher unkritisch ist,
dafür reicht wie schon gesagt das binutils-Paket.

Die Versionen sind auch nicht ganz aktuell.

Da mußt du dich halt mal selbst ein bißchen schlau machen,
und ein bißchen strukturierter vorgehen, sonst wird das nichts.

Autor: Jobst M. (jobstens-de)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jürgen schrieb:
> target ist arm-elf.

Ich weiß derzeit noch gar nicht, ob elf mich weiter bringt ...

Jürgen schrieb:
> welche ARM-Variante du das brauchst, welches Linux du hast

1.) Noch nicht festgelegt

2.)
Jobst M. schrieb:
> Das ist ein Mandriva 2009.0


Hiermit scheint es nun geklappt zu haben:

./configure --target=arm-none-eabi

Damit werde ich nun erst mal herumspielen ...

Die Optionen des Assemblers bieten ja auch noch einige Fallen ...


Zunächst einmal vielen Dank an alle!


Gruß

Jobst

Autor: hhhhh@hhhhh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nimm das Tool von der rosaroten Edition

Autor: Steve M. (steve_m)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

anbei mal ein minimales Beispiel für den arm-elf-gcc, welcher so gebaut 
wurde: http://bb.osmocom.org/trac/wiki/GnuArmToolchain

Steve

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.