63

GitHub - umanovskis/baremetal-arm

 5 years ago
source link: https://github.com/umanovskis/baremetal-arm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

README.md

Bare-metal C programming on ARM

This repository contains a tutorial ebook concerning programming a bare-metal ARM system. More specifically it deals with a ARMv7A version of the ARM Versatile Express platform, emulated on a regular PC through QEMU. You can explore the repository, or read things in order.

Table of Contents

An up-to-date PDF version is also available.

This is still a work in progress. Currently available:

  • Chapter 0: Introduction. A brief intro to the subject and the ebook.
  • Chapter 1: Setup. A short chapter dealing with preparing a Linux environment for further development.
  • Chapter 2: The first boot. Basic use of QEMU and the cross-compiler toolchain, getting the simplest possible code to run.
  • Chapter 3: Adding a bootloader. Building the highly popular U-Boot bootloader, and getting it to boot our own code.
  • Chapter 4: Preparing a C environment. This chapter deals with the necessary work for getting from startup in assembly code to C code.
  • Chapter 5: Build & debug system. Here we show how the work can be streamlined by adding a CMake-based build system, and how the bare-metal program can be debugged.
  • Chapter 6: UART driver development. In this chapter, a device driver for a UART gets written.
  • Chapter 7: Interrupts. The chapter goes through setting up the ARM Generic Interrupt Controller, using it to receive and respond to interrupts. Also the UART driver gets adapted to use interrupts.

Repository structure

The repository consists of two top-level folders. The doc folder contains the actual tutorial chapters. The src folder contains the source code corresponding to each chapter. So, for instance, src/04_cenv contains the source code as it looks after completing Chapter 4.

Additionally, the src folder has some shared things. src/common_uboot holds a stripped-down version of U-Boot used in the examples.

Have fun, and feel free to tweak and experiment, that being a great way to learn!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK