Assembler auf Pi B+

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Moin Moin,

    ich versuche mich schon seit tagen an einer einfachen Schaltung für den Pi über Assembler.

    Ein Taster Soll gelesen werden und dann mit ihm eine LED angeschalten werden.

    Dazu halte ich mich an die Anleitung der Uni Camebridge zu "Baking Pi"

    Ich bekomme aber nicht mal den ersten Teil zum laufen.

    Ich möchte es Cross Compilen über Eclipse und habe dafür auch ein ordentlichen Toolchain.

    Compilieren und uploaden geht auch meistens,, leider sagt er mir recht offt "speicherzugriffsfehler"

    Mein Test-Code (soll nur GPIO 16 anschalten):

    Wenn ich das entweder auf dem Pi direkt oder in Eclipse compilieren lasse kommt der Fehler "undefined reference to main"

    Wenn ich das "_start" durch "main" ersetze dann compiliert er es, gibt mir aber beim ausführen einen "Speicherzugriffsfehler" selbst als Root.

    Ich glaube ich stehe auf dem Schlauch.

    Hat wer Ahnung was da falsch läuft?

    Danke!

  • Hallo SergeantFreeman,

    herzlich Willkommen in unserem Forum!

    In Deinem Code läuft einiges schief.

    Der Code basiert darauf, in einer Umgebung ohne Betriebssystem zu laufen (Stichwort Bare Metal).


    Soll der Code auf einem Betriebssystem laufen, dann musst Du "Memory Mapping" nutzen, um die GPIOs nutzen zu können.

    Und zu guter Letzt, bist Du Dir mit dem Adresenoffset (d.h. GPIO Base Address) sicher? Dein Offset gilt nur für Raspberry Pi A, B, A+, B+. Die Modelle RPi 2B und 3B haben einen anderen Offset... So als Hinweis, falls jemand den Code für ein ungeeignetes RPi-Modell übernehmen möchte.

    Du schießt hier auf Speicher, über den Dein Code nicht verfügen darf. Und das meldet Dir das Betriebssystem(!), auf dem das Programm nicht laufen kann.

    Solltest Du meine Erklärung nicht verstehen, dann beschäftige Dich bitte mit den Grundlagen:

    • Assembler auf dem Raspberry Pi
    • GPIO-Programmierung in Assembler
    • MemoryMapping
    • BareMetal ...

    Es ist Dir nicht damit geholfen, von irgendwoher Code zu übernehmen, den Du nicht zu verstehen scheinst. Auch nicht, wenn Du gar nicht weißt, in welcher Umgebung das Ergebnis (irgendein Binärcode) laufen könnte.

    Und ob letztens die Toolchain funktioniert, kannst Du auch nicht mit Gewissheit sagen.

    Hast Du Dir den von Dir verlinkten Beitrag überhaupt mal durchgelesen?

    Denn da steht:

    Zitat

    This website is here to guide you through the process of developing very
    basic operating systems on the Raspberry Pi! This website is aimed at people aged 16 and upwards, although
    younger readers may still find some of it accessible, particularly with assistance.
    More lessons may be added to this course in time.

    [Quelle]

    Das Ergebnis ist nämlich zu zeigen, wie prinzipiell ein Betriebssystem in Assembler programmiert wird - ein Thema, bei dem Dir hier im Forum vielleicht 3 Leute ein Grundverständnis entwickelt haben könnten. (Was man auch an der Resonanz an diesem Thread wird ablesen können...)

    Die Seite ist übrigens von 2012 ...


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    9 Mal editiert, zuletzt von Andreas (6. Januar 2018 um 16:29)

  • Danke für deine Hilfe!

    oh mann...Das erklärt einiges. Ich dachte dass ich die Source Datei auch schon so zum laufen bringen könnte.

    Den Code an sich konnte ich recht gut nachvollziehen aber wie das mit dem ausführen funktioniert hatte ich keine Ahnung.

    Der offset ist auch falsch, da ich ein Pi 2B habe.

    Langsam könnte ich heulen :(

    Jetzt stehe ich wieder bei null.

    Ich habe ein Hello World Programm in C aus Eclipse auf dem Pi zum laufen gebraucht aber nix was mit Assembler zu tun hatte.

    Hast du ne Idee was ich jetzt als Anlaufstelle nutzen könne um mich ein zu lesen?

    Danke dir!

  • Hallo SergeantFreeman,

    was möchtest Du denn?

    • Willst Du ein Betriebssystem entwickeln?
    • Willst Du überhaupt mal was in C programmieren?
    • Willst Du unbedingt in Assembler programmieren?
    • Darf es für den Einstieg auch eine andere Programmiersprache sein?

    Ich vermute mal, dass Du Dich erst einmal mit den Grundlagen der Programmierung vertraut machen solltest. Wir haben da gerade mehrere Threads laufen, in denen es darum geht, welche Programmiersprache für einen Einsteiger überhaupt mal oder am Besten geeignet ist. Mein Favorit ist die Programmiersprache Icon.

    Wenn Du aber jetzt schon weißt, dass Du sehr maschinennah programmieren möchtest, dann solltest Du mit C anfangen - auch wenn es vielleicht nicht ganz leicht ist. ( dreamshader möge mir verzeihen).

    Ansonsten gibt es Dutzende an Programmiersprachen für den Raspberry Pi.

    Hier im Forum gibt es etwa 3 Threads, die Bücherlisten enthalten. In einem davon habe ich einen Teil meiner damaligen Literatur aufgelistet. Vielleicht ist was für Dich dabei.


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Danke dir erstmal,

    Programmieren behaupte ich jetzt mal grundlegend zu verstehen. Ich kann ne solide Basis von Pascal und auch grundlegendes C und Visual Basic.

    Daran soll es aber nicht hapern.

    Es geht hier bei mir um einen Uni Versuch. Wir sollen eigentlich ein Assembler Programm schreiben dass von einem Taster, der n mal gedrückt wurde eine LED n mal blinken lässt. Daher ist Assembler für uns Pflicht.

    Da liegt aber auch das Problem. Ich habe zwar schon oft mit dem Pi gearbeitet und kenne also alles grundlegend, habe aber kein plan wie ich Assembler auf dem Ding umsetze.

    Daher dachte ich mir ich schaue mir das mal bei der Uni Camebridge an um einen Einstieg zu bekommen und baue mir dann nach und nach das Restliche Programm herum.

    Aus irgendeinen Grund müssen wir Eclipse und den uns vorgegeben Toolchain nutzen.

    An sich alles noch ok. Leider finde ich nirgendwo was sinnvolles für ARM-Assembler-Eclipse Programmierung was auch wirklich funktioniert.

    Hast du ne Idee?

    Danke dir!

  • Hallo SergeantFreeman,

    ich schreib Dir ausnahmsweise mal eine PN...


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!