GitHub - umanovskis/baremetal-arm
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!
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK