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.