Eu já encontrei os tutoriais do Baking Pi , mas eles usam apenas a linguagem assembly . Eu segui as primeiras lições, mas já estou imaginando como usar o C. Quero dizer, há uma razão pela qual eles inventaram linguagens de nível superior. Eu tentei apenas compilar o código C em um .o
arquivo object ( ), compilando
.section .init
.globl _start
_start:
bl main
loop$:
b loop$
para outro arquivo de objeto e vinculá-los e, assim, obter kernel.img
. Substituí o kernel já presente pelo meu, mas ele não executa o código C. O código C que escrevi deve acender o LED OK e retornar (depois vem loop$: b loop$
). Mas o LED OK pisca aleatoriamente algumas vezes e fica desligado. Aqui está o meu 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;
}
Como uso o C para o desenvolvimento de sistemas operacionais em um Raspberry Pi?
Duvido que seja um erro no código (embora eu seja apenas um hobby). Estou ciente de que configurar C pode ser complicado, mas não sou o primeiro a fazer isso. AFAIK, todos os sistemas operacionais dominantes atualmente são escritos principalmente em C, portanto, deve haver um artigo explicando o processo. Eu ficaria muito feliz com uma lista de etapas também, para poder pesquisar essas etapas no Google e talvez fazer uma pergunta um pouco menos ampla.
Nota: o conjunto ARM equivalente do código C acima funciona perfeitamente. Acende o LED (depois de piscar um pouco). Eu acho que (espero) que indica que meu Raspberry Pi está bem.