This is a Book with Views. This means that the book covers several types of computers at the same time. When you read the book, you read it one view at the time, and you can easily switch betwen the views. There are links to the views at the end of each section, and in the web version of the book there are also links to the views in the left sidebar of each page. The view you are currently reading is about computers with a processor architecture called the x86 architecture. This architecture was originally created by Intel, and it is commonly found in personal computers, but also in embedded systems. Here we describe the 32-bit version of the architecture.
The programming language C is used. The reason for choosing C is that most embedded systems are programmed in C. This is so even if the language itself is rather old. In addition to C, assembly programming is used. The reason for choosing assembly is that it is required for certain things involved in the creation of an embedded system. Among these things are the startup of a system, the handling of interrupts, communication with external devices, and the switching between different actitivites in a program.
A specific hardware is chosen, for the purpose of making examples more realistic, and for making them repeatable, so that readers can do experiments. This book uses the hardware found in a personal computer. This means that you can, if you dare, boot your own personal computer with software developed as described in this book. For the purpose of simulation, which is very convenient when developing the software, the simulator QEMU is used.
There are several examples in the book. The software used for creating these examples can be downloaded from the Book Software page.
Using software as described in this book requires tools, such as compilers and linkers, and also tools and methods for placing executable code on a target hardware, in this case a computer with a 32-bit Intel-x86-compatible processor. Required tools will be mentioned and described, but it will not be described in detail how to obtain and install the tools. Instead references to places with more detailed instructions will be given.
The software presented is developed mostly using Linux. Parts of the software have also been tested on MacOS. At a later stage, the software may also be tested on Windows. If you want to try using Windows at this stage, I recommend using a tool like Cygwin.