Forum: Compiler & IDEs Cortex A7 Bare Metal - Vorgehensweise


von Max M. (maxmicr)


Lesenswert?

Hallo,

da vorhergehende Beiträge über die Bare-Metal Programmierung von 
Cortex-A Prozessoren immer im Sand verlaufen sind, wollte ich das Thema 
(für mich) noch mal eröffnen.

Es gibt auf Aliexpress ein günstiges Board mit einer Cortex A7 
Implementierung von Allwinner: 
https://de.aliexpress.com/item/New-Orange-Pi-Zero-H2-Quad-Core-Open-source-development-board-beyond-Raspberry-Pi/32760774493.html

Der Allwinner H2+ scheint ein reduzierter H3 zu sein, der aber ansonsten 
kompatibel ist: https://linux-sunxi.org/H2%2B#Variants

Generell gibt es über den relativ viel Dokumentation, inklusive 
Datenblatt von Allwinner: 
https://linux-sunxi.org/images/4/4b/Allwinner_H3_Datasheet_V1.2.pdf

und eine Beschreibung des Boards: 
https://linux-sunxi.org/Xunlong_Orange_Pi_Zero

Anscheined gibt es eine Möglichkeit, JTag zu aktivieren (siehe weiter 
unten unter dem Punkt "JTAG").

Der GNU Gcc unterstützt den Cortex A7 auch: 
http://gnutoolchains.com/arm-eabi/

Meine Frage ist nun, wie würde man vorgehen, wenn man den H2+ gerne in C 
programmieren möchte (ähnlich wie ein µC)? Ich könnte mir vorstellen, 
dass man den GCC in gängige IDEs einbinden kann und sich der Code via 
Jtag auf den Prozessor bzw. den angebundenen Flash laden lässt. Aber 
welche Konfigurationen muss ich vornehmen, damit die CPU in den Zustand 
der Codeausführung kommt?

Ich hab mal kurz mit einem Cortex M3 in Assembler rum gespielt, da gibt 
es von EmBitz eine extra Konfigurationsdatei, die alles nötige 
initialisiert und einen dann als letzten Befehl zur main-Funktion 
weiterleitet. Gibt es so etwas auch für den A7?

Edit: Es mag sein, dass die A-Serie CPUs nicht für die direkte 
Ausführung von Code ohne OS gedacht sind, trotzdem finde ich das Thema 
sehr interessant und ich bin auch bereit, die entsprechende Zeit zu 
investieren sofern es vernünftige Ressourcen dafür gibt, in die man sich 
einarbeiten kann.

: Bearbeitet durch User
von Jim M. (turboj)


Lesenswert?

Bei mir entscheidet die Doku mit über den Kauf.  Gibt es für die CPU das 
DB/Manual und für das Board einen vollständigen Schaltplän?

Normalwerweise wird bei Linux der Speicher schon im Bootloader 
initialisiert, den könnte man sich mal für Bare-Metal Anwendungen 
anschauen. Ist normalerweise U-Boot oder Redboot.

von Max M. (maxmicr)


Lesenswert?

Jim M. schrieb:
> und für das Board einen vollständigen Schaltplän

Gibt es sogar, danke für den Hinweis: 
http://linux-sunxi.org/images/e/e0/Orange-Pi-Zero-Schanetics-v1_11.pdf

Laut dem Schaltplan ist JTAG über die Pins PA0-PA3 verteilt.

Also die Seite http://linux-sunxi.org/Main_Page ist schon klasse.

Jim M. schrieb:
> Gibt es für die CPU das
> DB/Manual

Jop: https://linux-sunxi.org/images/4/4b/Allwinner_H3_Datasheet_V1.2.pdf

Jim M. schrieb:
> Ist normalerweise U-Boot oder Redboot.

Hast du da Tipps für mich, auf was ich da genau achten muss? Ehrlich 
gesagt hab ich bis jetzt weder einen Bootloader selber geschrieben noch 
mir näher angesehen.

: Bearbeitet durch User
von Max M. (maxmicr)


Lesenswert?

Dieses Tutorial ist Gold wert: 
http://www.valvers.com/open-software/raspberry-pi/step01-bare-metal-programming-in-cpt1/

Hat auf Anhieb mit meinem Raspberry Pi B+ funktioniert.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.