Bare Metal C cover

Bare Metal C

Embedded Programming for the Real World
by Stephen Oualline
May 2022, 304 pp.
Use coupon code PREORDER to get 25% off!

Look Inside!

Bare Metal C pages 36-37Bare Metal C pages 92-93Bare Metal C pages 154-155

Download Chapter 1: HELLO WORLD

Bare Metal C will teach you how to program embedded devices with the C programming language. For embedded system programmers who want precise and complete control over the system they are using, this book pulls back the curtain on what the compiler is doing for you so that you can see all the details of what's happening with your program.

The first part of the book teaches C basics with the aid of a low-cost, widely available bare metal system (the Nucleo Arm evaluation system), which gives you all the tools needed to perform basic embedded programming. As you progress through the book you’ll learn how to integrate serial input/output (I/O) and interrupts into your programs. You’ll also learn what the C compiler and linker do behind the scenes, so that you’ll be better able to write more efficient programs that maximize limited memory. Finally, you’ll learn how to use more complex, memory hungry C features like dynamic memory, file I/O, and floating-point numbers.

Author Bio 

Steve Oualline wrote his first program when he was 11. It was for an embedded system. He has been programming and designing methodologies for reliable programming ever since. He has a Master of Science from USC and has written many books for both No Starch Press and O’Reilly.

Table of contents 

PART I: Embedded Programming
Chapter 1: Hello World
Chapter 2: Introduction to the Integrated Development Environment
Chapter 3: Programming the Microcontroller
Chapter 4: Numbers and Variables
Chapter 5: Decision and Control Statements
Chapter 6: Arrays, Pointers, and Strings
Chapter 7: Local Variables and Procedures
Chapter 8: Complex Data Types
Chapter 9: Serial Output on the STM
Chapter 10: Interrupts
Chapter 11: The Linker
Chapter 12: The Preprocessor
PART II: C on Big Machines
Chapter 13: Dynamic Memory
Chapter 14: Command Line Arguments and Raw I/O
Chapter 15: Floating-Point Numbers
Chapter 16: Modular Programming