Ho scritto un esempio multi core bare metal.
Codice, schema elettrico è qui - https://github.com/jeffreyantony/multipi/tree/master/Example_01
Nel mio esempio, ci sono 3 LED collegati ai pin GPIO del raspberry Pi. Ci sono totalmente 4 core in Raspberry Pi 2. A ciascun core è assegnato di lampeggiare il LED corrispondente.
Ho scritto l'indirizzo del codice che deve essere eseguito da ciascun core negli indirizzi seguenti 0x4000009C per core 1 0x400000AC per core 2 0x400000BC per core 3
Dopo aver compilato il codice, lampeggia solo il LED assegnato al core 1 (come in questo esempio, LED giallo). Altri no.
Ciò significa che il codice per Core 2 e 3 non è in esecuzione (poiché gli altri LED non lampeggiano). Inoltre, ho scoperto che il codice dopo l'avvio di tutti i core non è in esecuzione, ovvero core0_submain () - questa funzione dovrebbe far lampeggiare il LED ACT sul Raspberry Pi
Qualcuno potrebbe farmi sapere qual è il problema? È perché tutti e 4 i core cercano di scrivere nello stesso registro GPIO e solo il Core 1 sta vincendo nella scrittura?
Ho provato ad aggiungere " attributo ((nudo));" per core0_submain () ma non è stato utile.
Sto usando la toolchain da https://launchpad.net/gcc-arm-embedded
ancora una volta codice - https://github.com/jeffreyantony/multipi/blob/master/Example_01/main.c
makefile - https://github.com/jeffreyantony/multipi/blob/master/Example_01/Makefile
Aggiornamento 20 ottobre 2015 : ho aggiunto il supporto per JTAG. Ma non è riuscito a ottenere l'interfaccia di debug
Aggiornamento 25 ottobre 2015 : il problema è stato risolto. Vedi la risposta