Автор: Klaus Elk
Издательство: Independently published
Год: November 3, 2023
Страниц: 229
Язык: английский
Формат: pdf
Размер: 10.1 MB
This book aims to inspire newcomers to the world of embedded programming - as well as seasoned developers looking to fill in the blanks.
In his new book, the author of "Embedded Software for the IoT” and ”SQL Server with C#”, throws the spotlight on the heart of all intelligent devices - the Microcontroller. Klaus Elk enthusiastically describes the building blocks of Microcontrollers, and debugs sample C-programs to show how compiler and linker builds the binary program for the Cortex-M Microcontroller. Along the way we get a feel for CMSIS – the libraries supplied by Arm and partners. We study the Floating-Point Unit and its alternatives, before moving on to parallel programming, and the basics of Real-Time Operating Systems. Klaus ties it all together in small demos using e.g., FreeRTOS.
Joining an embedded software project for the first time can be intimidating. As an embedded developer, you often have to start programming without hardware, and when the hardware finally arrives you cannot assume that it is working as it should. Typically, hardware is developed in parallel with your software. Your requirements to on-board resources - e.g. Flash and RAM - may be vague at the beginning. Other resources - such as display-type - might change as you go. Such changes may happen if a component becomes obsolete, and/or was replaced by something cheaper and “almost identical” - at least from the hardware designers point-of-view. Embedded programmers are faced with numerous CPU-types, board types and peripherals. These may have been selected in an earlier project - but you may be requested to offer your recommendations. This can also be a bit scary. On top of this we have the application domain. Embedded systems are typically dedicated for very specific purposes. This means that there may be many users out there, already trained by previous systems - maybe from competitors - with very special needs, that you may not yet understand. So why should you choose to go the embedded way? Because it is so satisfying to see an LED blink - or a step-motor step - or experience the sound from a phone in a prototype of a hearing aid. Embedded systems bridge the gap between the physical world and the art of programming. It is simply fascinating.
The aim of this book is to give you - the reader - a better understanding of what goes on in an embedded system. Using a mix of theory and examples, we will work our way through complex subjects from different perspectives. Following software from C-source through the compiler and linker - into the memory - we will get a taste of assembly code. Studying how different types of memories are used in embedded systems, we will see how they are accessed and controlled by the CPU-core. Looking at the modern microcontroller, we will see it perform floating-point operations. Armed with the above knowledge we will see how operating systems work, and we will discuss important patterns for parallel processing.
The book you have in your hand looks more inwards - at the CPU architecture, interrupt frames, memory-spaces, floating-point, instruction sets etc. - all from a C-programmers point-of-view. This inward looking is indeed a huge subject. I narrow it down a bit by mainly using examples from the Arm Cortex-M range of Microcontrollers1 . This focus makes sense because the Arm-based System-on-Chip (SoC) is everywhere.
In this book I am focusing on the Arm Cortex-M core - mostly related to bare-metal systems (those without an Operating System) because we can learn a lot this way. We will however also discuss real-time operating systems, as well as parallel programming and other more general subjects.
The aim of these investigations is not so much to show how to utilize various peripherals. Instead, we will dig into how code is generated, loaded and executed in C and a bit of assembly language. While doing this we will examine central concepts and components, and discuss important patterns in e.g., parallel programming.
Скачать Microcontrollers With C: Cortex-M and Beyond