Embedded Operating Systems: A Practical Approach (Undergraduate Topics in Computer Science)
Alan Holt, Chi-Yu Huang
Format: PDF / Kindle (mobi) / ePub
This practically-oriented textbook/reference provides a clear introduction to the different component parts of an operating system and how these work together.
The easy-to-follow text covers the bootloader, kernel, filesystem, shared libraries, start-up scripts, configuration files and system utilities. The procedure for building each component is described in detail, guiding the reader through the process of creating a fully functional GNU/Linux embedded operating system.
Topics and features:
* Presents a concise overview of the GNU/Linux system, and a detailed review of GNU/Linux filesystems
* Describes how to build an embedded system to run on a virtual machine, and to run natively on an actual processor
* Introduces the concept of the compiler toolchain, demonstrating how to develop a cross toolchain so that programs can be built on a range of different architectures
* Discusses the ARM-based platforms BeagleBone and Raspberry Pi
* Explains how to build OpenWRT firmware images for OMxP Open-mesh devices and the Dragino MS14 series
Ideal for undergraduate and graduate level students studying operating systems, the book will also prove to be highly useful to industry professionals involved in this area.
to the keyboard while standard output and standard error are mapped to the screen. The diagram in Fig. 2.1 shows a graphical representation of a processes (initial) I/O streams. Fig. 2.1Process input/output Table 2.3Summary of input/ouput streams File descriptor Stream name Abbreviation Default device 0 Standard input stdin Keyboard 1 Standard output stdout Screen 2 Standard error stderr Screen Table 2.3 shows a summary of the I/O streams. It shows that each I/O stream is
mechanism similar to a FIFO. Sockets are created and managed with same systems calls used for network sockets. Symbolic links Symbolic links or soft links overcome the limitation of hard links which cannot link to files across filesystem boundaries. A filesystem is divided into blocks (typically between 512 and 4,096 bytes in size). Blocks are allocated for storing the content of files and directories. Some blocks are reserved for meta data and information about the filesystem itself. Physical
choice of IP network is somewhat arbitrary but ensure it does not conflict with the network of the host’s eth0 interface. It is highly likely that the network you choose will be unknown to any routers on the external Ethernet network and will be unable to forward packets to the deb VM. We can resolve this issue by adding NAT rules to the host. As we have completed all the necessary configuration of the deb VM, we can unmount deb_fs: All the configuration steps hereon in are performed on the
the most difficult component of system to build. Once you have successfully compiled Glibc, the other components are relatively straight forward. When building Glibc for your embedded system, we recommend you use same version of the library that is running on your host system. To find out the version of Glibc running on your host system, run: It can be seen from the first line of the output that the version is 2.11.2-10. It also shows the version of GCC used to compile the library (4.4.5) and
host system but builds software for a target system of a different architecture. In this chapter we discuss compiler toolchains. We restrict our discussion to the GNU compiler collection (GCC) as to is the de facto toolchain for the GNU/Linux system (though it is not exclusive to GNU/Linux). In the last part of the chapter we show how to build a cross compiler toolchain. 6.1 GCC GCC (GNU compiler collection) is a set of compilers. GCC was originally just a C compiler (and was called the GNU C