Ya encontré los tutoriales de Baking Pi , pero solo usan lenguaje ensamblador . Seguí las primeras lecciones, pero ya me pregunto cómo usar C en su lugar. Quiero decir, hay una razón por la que inventaron idiomas de nivel superior. Intenté simplemente compilar el código C en un .o
archivo object ( ), compilando
.section .init
.globl _start
_start:
bl main
loop$:
b loop$
a otro archivo de objeto y vincularlos juntos y así obtener kernel.img
. Luego reemplacé el núcleo ya presente por el mío, pero no ejecuta el código C. El código C que escribí debería encender el LED OK y luego regresar (luego viene loop$: b loop$
). Pero el LED OK parpadea aleatoriamente algunas veces y luego simplemente se apaga. Aquí está mi código C:
int main(int argc, char ** argv) {
volatile unsigned *gpioAddr = (volatile unsigned *)0x20200000;
*(gpioAddr + 4) = 1 << 18;
*(gpioAddr + 40) = 1 << 16;
return 0;
}
¿Cómo uso C para el desarrollo del sistema operativo en una Raspberry Pi?
Dudo que sea un error en el código (aunque solo soy un aficionado). Sé que configurar C puede ser complicado, pero no soy el primero en hacer esto. AFAIK, todos los sistemas operativos dominantes actualmente están escritos principalmente en C, por lo que debe haber un artículo que explique el proceso. También estaría muy contento con una lista de pasos, así que puedo buscar esos pasos en Google y tal vez hacer una pregunta un poco menos amplia.
Nota: el ensamblaje ARM equivalente del código C anterior funciona bien. Enciende el LED (después de un poco de parpadeo). Creo (espero) que eso indique que mi Raspberry Pi está bien.