Ich habe ein Bare-Metal-Multi-Core-Beispiel geschrieben.
Code, Schaltplan finden Sie hier - https://github.com/jeffreyantony/multipi/tree/master/Example_01
In meinem Beispiel sind 3 LEDs an die GPIO-Pins des Himbeer-Pi angeschlossen. In Raspberry Pi 2 befinden sich insgesamt 4 Kerne. Jedem Kern ist die entsprechende LED zum Blinken zugeordnet.
Ich habe die Adresse des Codes, der von jedem Kern ausgeführt werden soll, in die folgenden Adressen 0x4000009C für Kern 1 0x400000AC für Kern 2 0x400000BC für Kern 3 geschrieben
Nach dem Kompilieren des Codes blinkt nur die dem Kern 1 zugewiesene LED (gemäß diesem Beispiel gelbe LED). Andere nicht.
Dies bedeutet, dass der Code für Core 2 und 3 nicht ausgeführt wird (da die anderen LEDs nicht blinken). Außerdem habe ich festgestellt, dass der Code nach dem Starten aller Kerne ebenfalls nicht ausgeführt wird, dh core0_submain () - diese Funktion sollte die ACT-LED am Raspberry Pi blinken lassen
Könnte mich jemand wissen lassen, wo das Problem liegt? Liegt es daran, dass alle 4 Kerne versuchen, in dasselbe GPIO-Register zu schreiben, und nur Core 1 beim Schreiben gewinnt?
Ich habe versucht, " attribute ((nackt))" hinzuzufügen. für core0_submain () gab es aber keine Verwendung.
Ich verwende die Toolchain von https://launchpad.net/gcc-arm-embedded
noch einmal Code - https://github.com/jeffreyantony/multipi/blob/master/Example_01/main.c
Makefile - https://github.com/jeffreyantony/multipi/blob/master/Example_01/Makefile
Update 20. Oktober 2015 : Ich habe Unterstützung für JTAG hinzugefügt. Debug-Schnittstelle nicht erfolgreich erhalten
Update 25. Oktober 2015 : Problem behoben. Siehe Antwort.