Kampis Elektroecke

Los geht´s!

Raspberry Pi

Bevor wir uns mit der Programmierung beschäftigen, müssen wir erst einen Blick auf den Prozessor und die benötigten Werkzeuge werfen. Auf dem Raspberry Pi sitzt ein Prozessor mit einer ARMv6 (bzw. in den neueren Modellen einer mit ARMv8) Architektur. Dieses Chipdesign wurde von einer englischen Firma namens ARM entwickelt und im Gegensatz zu vielen anderen Halbleiterfirmen stellt die Firma keine Chips her, sondern 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.

Ich will loslegen…was brauche ich?:

Für die Erzeugung des ARMv6 Maschinencodes wird ein spezielles Tool, der sogenannte Cross Compiler, benötigt. Dieser Compiler übersetzt den Code in die entsprechenden Assemblerbefehle. Im Gegensatz zu einem normalen Compiler kann der Cross Compiler auch Code für andere Architekturen erzeugen. Bezogen auf dieses Beispiel erzeugt der Cross Compiler also aus Code, der auf einer x86-Plattform entwickelt wurde (der Entwicklungsrechner), eine Binärdatei für eine ARM-Plattform (der Raspberry Pi). Ein normaler Compiler könnte nur Code auf einer x86-Plattform zu einer Binärdatei für x86 kompilieren.

Da sich die Verwendung eines Cross Compilers unter Windows in der Vergangenheit als sehr fehleranfällig und umständlich herausgestellt hat, würde ich hier den Einsatz eines Linux-Systems (z. B. Ubuntu) empfehlen. Wer dennoch auf einem Windows-System arbeiten möchte, kann dafür auf eine virtuelle Maschine (z. B. VirtualBox) ausweichen. Ich selber nutze diese Konstellation und kann so ganz bequem unter Windows arbeiten und unter Linux entwickeln.

Unter Linux muss dann noch die ARM-GNU Toolchain, also die zum kompilieren notwendige Werkzeugsammlung, installiert werden:

Falls dennoch unter Windows entwickelt werden soll, so kann die ARM-Toolchain auch direkt bei ARM heruntergeladen werden. Weiterhin wird das Programm make für Windows benötigt.


Hinweis:

Die Beispiele sind allesamt mit einem Raspberry Pi B+ (BCM2835 ARMv6) gemacht worden, weshalb es zu Inkompatibilitäten mit einem Raspberry Pi 2 + 3 kommen kann. Ggf. müssen Peripherieadressen etc. angepasst werden, damit der Code auf den neueren Modellen funktioniert.


Zudem ist eine integrierte Entwicklungsumgebung (IDE) empfehlenswert, da diese die Erstellung des Codes und das Debuggen startk vereinfacht. Für ARM-Prozessoren bietet SEGGER z. B. das Embedded Studio an, welches für nicht kommerzielle Zwecke kostenlos ist. Alternativ können auch Entwicklungsumgebungen wie z. B. Visual Studio Code genutzt werden.

Wenn alles beisammen ist, kann mit der ersten Lektion begonnen werden…

Last Updated on

4 Kommentare

  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

    1. 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

    1. 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.