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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.