Sou desenvolvedor de aplicativos de alto nível (C #, python) e gostaria de sujar as mãos com o desenvolvimento de aplicativos embarcados de baixo nível. A Universidade de Cambridge publicou uma série de tutoriais ensinando como criar um sistema operacional para o Raspberry Pi chamado Baking Pi. Pretendi postar minha pergunta sobre este tutorial aqui e atualizar as respostas à medida que avanças. Talvez até poste alguns pontos que eu mesmo descobri.
Então, eu tenho acompanhado a lição 1 e já estou confuso. Aqui está o link da página .
A primeira parte do tutorial diz que precisamos (presumo) ativar o controlador GPIO escrevendo o valor 0x20200000 para registrar r0. Não consigo encontrar essas informações relevantes em nenhum lugar da folha de dados. ( link ). Eu olhei para a seção GPIO, mas não vi nenhuma indicação de 16 registros ou r0. Onde esta informação está?
ATUALIZAR
Primeiro de tudo, o tutorial fala sobre como ativar o LED OK, que é o LED de status. Você pode estar se perguntando onde, no Manual, o GPIO 16 está conectado ao LED OK. Não vai. Você precisa olhar para o Raspberry Schematics e descobrir a qual GPIO o status_led está conectado. Aqui está o link dos esquemas. Página 2, Bloco BCM2835.
Portanto, o objetivo é selecionar o pino GPIO16. (mais atualizações por vir ...)
fonte
Obrigado a Jivings e emcconville por responderem à pergunta.
No pdf da folha de dados, na página 6, seção endereço físico do braço , há uma seção que diz
Indo para a página 90, a primeira linha da tabela declara:
portanto, o 0x7E200000 é convertido no endereço físico 0x20200000, que é o bit 0 de seleção da função GPIO.
Quanto ao r0, existem 16 registradores de uso geral no ARM, que podemos usar para armazenar números, e é por isso que no tutorial ele está escolhendo o r0, já que é o primeiro registro gratuito.
fonte
O registo
r0
atravésr12
são de uso geral. Naturalmente, é mais fácil começarr0
. Como Jivings apontou, o manual lista cada endereço e declara:fonte