J'ai déjà trouvé les tutoriels Baking Pi , mais ils utilisent uniquement le langage d'assemblage . J'ai suivi les premières leçons, mais je me demande déjà comment utiliser C à la place. Je veux dire, il y a une raison pour laquelle ils ont inventé des langages de niveau supérieur. J'ai essayé de compiler le code C dans un .o
fichier object ( ), en compilant
.section .init
.globl _start
_start:
bl main
loop$:
b loop$
à un autre fichier objet et les reliant entre eux et ainsi obtenir kernel.img
. J'ai ensuite remplacé le noyau déjà présent par le mien, mais il n'exécute pas le code C. Le code C que j'ai écrit devrait simplement allumer la LED OK puis revenir (puis vient loop$: b loop$
). Mais la LED OK clignote plusieurs fois au hasard, puis reste éteinte. Voici mon code C:
int main(int argc, char ** argv) {
volatile unsigned *gpioAddr = (volatile unsigned *)0x20200000;
*(gpioAddr + 4) = 1 << 18;
*(gpioAddr + 40) = 1 << 16;
return 0;
}
Comment utiliser C pour le développement de systèmes d'exploitation sur un Raspberry Pi?
Je doute que ce soit une erreur dans le code (même si je ne suis qu'un amateur). Je suis conscient que la configuration de C peut être compliquée, mais je ne suis pas le premier à le faire. AFAIK, tous les OS actuellement dominants sont principalement écrits en C, il doit donc y avoir un article expliquant le processus. Je serais également très heureux d'avoir une liste d'étapes, je peux donc rechercher ces étapes sur Google et peut-être poser une question un peu moins large.
Remarque: l'équivalent d'assemblage ARM du code C ci-dessus fonctionne très bien. Il allume la LED (après un peu de clignotement). Je pense (j'espère) que cela indique que mon Raspberry Pi va bien.