Los geht´s!

Raspberry Pi Bevor mit der Programmierung begonnen werden kann muss noch etwas Software installiert werden. Zudem werfen wir einen kurzen Blick auf den Prozessoraufbau und die „Programmiersprache“ Assembler.

-> Der Prozessor: Was steckt eigentlich in dem Raspberry Pi?:

Bevor wir uns mit der Programmierung beschäftigen müssen wir den Prozessor erst einmal genauer kennen lernen. Auf dem Raspberry Pi sitzt ein Prozessor mit einer ARMv6 Architektur. Dieses Chipdesign wurde von einer englischen Firma namens ARM entwickelt. Im Gegensatz zu vielen anderen Halbleiterfirmen stellt die Firma keine Chips her, sie verkauft lediglich die Lizenzen für ihre entwickelten Chips. Bei den Chips handelt es sich um besonders stromsparende aber dennoch recht leistungsstarke Prozessoren. Durch die Tatsache das die Chips sehr wenig Strom benötigen sind diese häufig in mobilen und kleinen Anwendungen wie dem Raspberry Pi, Smartphones, Tablets, Router, etc. zu finden.

-> Assembler…was ist das eigentlich?:

Einen fertigen Prozessor muss man sich im Grunde als dummes Stück Silizium vorstellen. Durch geschriebene Programme wird dem ganzen Chip dann anschließend Leben eingehaucht. Mittlerweile existieren viele verschiedene Programmiersprachen, sogenannte höhere Sprachen, wie z.B. Python, Java, C#.
Wie der Name höhere Programmiersprache bereits andeutet, sind diese Sprachen weiterentwickelte Versionen einer Ursprungssprache.
Verfolgt man die Entwicklung der Programmiersprachen bis ganz zurück zum Anfang, gelangt man schließlich zur Programmiersprache Assembler. Assembler ist die Basis jeder Programmiersprache. Bei Assembler handelt es sich um die direkte Vorstufe zum Maschinencode, welcher von dem Prozessor ausgeführt wird.
Jeder Prozessor versteht nur seinen eigenen Maschinencode und jedes Programm in jeder Sprache wird durch einen Compiler in diesen Maschinencode (welcher nur noch aus Zahlen besteht) umgewandelt. Die Sprache Assembler ist nichts anderes, als das man jedem Maschinencode einen Namen gibt (sogenannte Mnemonics).
Auf diese Weise lassen sich die Funktionen leichter merken und der Code ist lesbarer. Eine einfache If-Abfrage aus einer höheren Programmiersprache besteht z.B. aus ganz vielen Assemblerbefehlen, die so ineinander verschachtelt werden, dass die Funktion der Abfrage raus kommt.
Die Assemblerbefehle decken nur die Grundfunktionen wie das kopieren von Werten zwischen den Registern und den Speichern ab. Höhere Funktionen wie Abfragen, Schleifen etc. müssen alle noch programmiert werden. Der Vorteil von Assembler gegenüber jeder anderen Sprache ist die Geschwindigkeit.
Da Assemblerbefehle nur eine Funktion haben und quasi direkte Prozessorbefehle sind, sind Assemblerprogramme von der Ausführungsgeschwindigkeit sehr schnell.

-> Alles verstanden! Ich will loslegen…was brauche ich?:

Für die Erzeugung des ARMv6 Maschinencodes aus den Assembler Mnemonics wird ein spezielles Tool, der sogenannte Cross Compiler, benötigt. Dieser Compiler übersetzt auf dem eigenen Rechner den Code in die entsprechenden Assemblerbefehle. Der Cross Compiler kann auf jedem System installiert werden (egal ob mit einer ARM CPU oder einer x86 CPU von Intel oder AMD).
Insgesamt müsst ihr drei verschiedene Tools installieren (als Admin):

Zudem empfiehlt es sich, dass ihr einen anständiger Texteditor installiert. Ich verwende Programmer´s Notepad, welches ihr euch hier herunterladen könnt. Dieses Notepad beinhaltet ziemlich viele Dateiformate und speichert die Datei dann immer mit der entsprechenden Endung ab. Außerdem werden die Syntax, sprich die Befehle, farblich hervorgehoben.
Wenn ihr alles habt, können wir mit der ersten Lektion beginnen!

-> Am Anfang war die LED…

 

-> Zurück zu Raspberry Pi Assembler

4 thoughts on “Los geht´s!
  1. Hallo Daniel,

    super Seite – super Tutorial!
    Auf der Suche nach Assemblerprogrammierung des Raspberry bin ich bin ich auf Deine Seite gestoßen. Bisher habe ich fast ausschließlich in Assembler programmiert und bis auf wenige Ausnahmen nur 8-Bitter. Als ich mein letztes Projekt-einen HDMI-VGA-Generator mit mehreren AVR ausstatten mußte, hat man mir immer wieder gesagt-machst mir dem Raspberry oder besser noch einem Beaglebone. Die haben mehr Ports und sind viel schneller. Nachdem nun der Generator-vielleicht zu umständlich fertig ist, reitzte mich doch der Versuch mit einem Raspberry. Die Ernüchterung kam sehr schnell. Mit Linux und Python lassen sich derartige Generatoren nicht aufbauen. Das ist alles viel zu langsam und vor allem nicht jitterfrei. Ein möglicher Weg scheint nur die Programmierung in Assembler zu sein.
    Nun zu meinem eigentlichen Anliegen. Schon bei der Installationder 3 Tools scheiter ich. Der Link zu den Yargato Tools funktioniert nicht mehr. Mit welcher Geschwindigkeit werden die Befehle abgearbeitet? Im „ARM Architecture Reference Manual“ habe ich dazu nichts gefunden. Bei den AVR’s stehen die benötigten Takte immer mit dabei.
    Ich würde mich sehr freuen, wenn ich mit Deiner Hilfe die 3 Tools erst mal zum spielen bekomme. Weiterhin möchte ich Dich bitten, das Assemblertutorial weiterzuschreiben. Natürlich nur, wenn Dein Studium nicht darunter leidet. Die absolute Krönung wäre allerdings die 3. Ausgabe Deines Buches mit einem extragroßem Assemblerkapitel.

    Mit freundlichen Grüßen

    Bernd

    • Hallo Bernd,

      ich habe den Link aktualisiert. Du kannst dir nun die (neuen) Tools downloaden :).
      Bzgl. des Tuts…
      Schau mal hier:

      http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/index.html

      Dieses Tut ist quasi die Ausgangsbasis von mir gewesen (ist auch auf der Inhaltsseite vom Raspberry Pi Assembler verlinkt).
      Da kannst du dann schon etwas weiter spielen. :)

      Leider wird in dem Buch kein Assembler vorkommen können, da das (meiner Meinung nach) für Neulinge sehr wahrscheinlich zu viel werden würde und zu stark auf ein Thema bezogen ist ;)

      Gruß
      Daniel

  2. ..außerdem streikt der Yagarto Toolchain bei mir (Windows 10 x64 bit). hast du eine Alternative für mich?
    danke voraus

    • Hallo Dimitri,

      das Yagarto Toolchain ist unter Windows auch ein Krampf…
      Ich habe die Arbeiten damit komplett eingestellt. Ich mache das alles mittlerweile in einer VM unter Ubuntu (m. M. n. viel angenehmer).
      Ggf. wäre das für dich auch der bessere Schritt?

      Gruß
      Daniel

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload CAPTCHA.