Ho già trovato i tutorial di Baking Pi , ma usano solo il linguaggio assembly . Ho seguito le prime lezioni, ma mi sto già chiedendo come usare invece C. Voglio dire, c'è una ragione per cui hanno inventato lingue di livello superiore. Ho provato a compilare il codice C in un .o
file object ( ), compilando
.section .init
.globl _start
_start:
bl main
loop$:
b loop$
a un altro file oggetto e collegandoli insieme e ottenendo così kernel.img
. Ho quindi sostituito il kernel già presente con il mio, ma non esegue il codice C. Il codice C che ho scritto dovrebbe semplicemente accendere il LED OK e quindi tornare (quindi arriva loop$: b loop$
). Ma il LED OK lampeggia in modo casuale alcune volte e poi rimane spento. Ecco il mio codice C:
int main(int argc, char ** argv) {
volatile unsigned *gpioAddr = (volatile unsigned *)0x20200000;
*(gpioAddr + 4) = 1 << 18;
*(gpioAddr + 40) = 1 << 16;
return 0;
}
Come posso usare C per lo sviluppo del sistema operativo su un Raspberry Pi?
Dubito che sia un errore nel codice (anche se sono solo un hobbista). Sono consapevole che la configurazione di C potrebbe essere complicata, ma non sono il primo a farlo. AFAIK, tutti i sistemi operativi attualmente dominanti sono scritti principalmente in C, quindi deve esserci un articolo che spieghi il processo. Sarei molto contento anche di un elenco di passaggi, quindi posso google per quei passaggi e forse porre una domanda un po 'meno ampia.
Nota: l'equivalente dell'assieme ARM del codice C sopra funziona perfettamente. Accende il LED (dopo un po 'di lampeggiamento). Penso (spero) che indichi che il mio Raspberry Pi sta bene.