Programação C Bare-Metal no braço
Este repositório contém um e-book tutorial sobre a programação de um sistema de braço de metal nu. Mais especificamente, ele lida com uma versão ARMV7A da plataforma Express Versátil do ARM, emulada em um PC regular através do Qemu. Você pode explorar o repositório ou ler as coisas em ordem.
Índice
Uma versão em PDF atualizada também está disponível.
Os capítulos seguintes podem ser considerados a primeira edição do e -book, fornecendo um caminho completo para iniciar um programa de trabalho que usa recursos de hardware.
- Capítulo 0: Introdução. Uma breve introdução ao assunto e ao e -book.
- Capítulo 1: Configuração. Um pequeno capítulo que lida com a preparação de um ambiente Linux para um desenvolvimento adicional.
- Capítulo 2: A primeira bota. Uso básico do QEMU e da cadeia de ferramentas de compilador cruzado, obtendo o código mais simples possível para ser executado.
- Capítulo 3: Adicionando um carregador de inicialização. Construindo o carregador de inicialização altamente popular em U-Boot e fazê-lo inicializar nosso próprio código.
- Capítulo 4: Preparando um ambiente C. Este capítulo lida com o trabalho necessário para obter da inicialização no código de montagem do código C.
- Capítulo 5: Sistema de construção e depuração. Aqui, mostramos como o trabalho pode ser simplificado adicionando um sistema de construção baseado em cmake e como o programa de metal nua pode ser depurada.
- Capítulo 6: Desenvolvimento do Driver UART. Neste capítulo, um driver de dispositivo para um UART é escrito.
- Capítulo 7: Interrupções. O capítulo passa pela configuração do controlador de interrupção genérica do ARM, usando -o para receber e responder às interrupções. Além disso, o driver UART é adaptado para usar interrupções.
- Capítulo 8 - WIP: Agendamento. Trabalho em andamento.
Estrutura do repositório
O repositório consiste em duas pastas de nível superior. A pasta doc contém os capítulos reais do tutorial. A pasta src contém o código -fonte correspondente a cada capítulo. Assim, por exemplo, SRC/04_CENV contém o código -fonte, pois cuida após a conclusão do capítulo 4.
Além disso, a pasta src tem algumas coisas compartilhadas. src/common_uboot contém uma versão despojada do U-Boot usada nos exemplos.
Divirta -se e fique à vontade para ajustar e experimentar, sendo uma ótima maneira de aprender!