Embedded Systems – Booting Process

Steve Jobs once said, ” You can’t connect the dots looking forward; you can only connect them looking backwards. So you have to trust that the dots will somehow connect in your future. You have to trust in something – your gut, destiny, life, karma, whatever

The same applies to the world of electronics. You search random terms, learn new things with little or no idea as to how those things are connected. When you reach the critical point, you somehow connect the dots and understand the big picture. Let us begin learning Booting Process in an embedded system.

Certain Terminologies

  • RISC Processor : is Reduced Instruction Set Computing which is a CPU design strategy based on the insight that a simplified instruction set provides higher performance.
  • Booting : It is a process or set of operations that loads and hence starts the operating system, starting from the point when user switches on the power button.
  • Clock Speed : In short, it is the operating speed of a computer expressed in cycles per seconds.
  • File System : is the methods and structures that an OS uses to keep track of files on a disk ( The way files are organized )
  • Root File System : is the file system that is contained on the same partition on which the root directory is located, on which all file system are mounted as the system boots.

Booting Process

When the bootloader ( Do have a look at the first guide in the section to understand what a bootloader is ) has initialized the hardware, Serial Port, Ethernet Network, it has only one job left in its short life span , i.e. , to load and boot the Linux Kernel.

It consists of two stages :

  • TFTP : It instructs the U-Boot to load the kernel image ‘UImage” into the memory over the network using TFTP protocol. Another invocation of TFTP command loads a board configuration file called a Device Tree. It contains board specific information that the kernel requires to boot memory size, clock speeds.
  • Bootm : This command is issued to instruct the U-Boot to boot the kernel we just loaded from the address specified by TFTP command. Example- We instruct (bootm) to instruct U-Boot to load the kernel that we put at 0x600000(say) and pass the device tree binary (dtb) we loaded at 0xc00000 to the kernel.

Note : As soons as you use the bootm command, Linux Kernel takes control and bootloader ceases to exist. The only way to pass the control again is Reboot.

Kernel Initialization

Linux mounts a root file system. It goes through the steps required to mount its root file system from an NFS server on a machine with IP Usually, the root file system contains the app programs, utilities that make up a linux system.


First User Space Process : Init

Until this point, the Kernel itself was executing code, programming the numerous initialization steps in a context known as Kernel Context. In this operational state, the kernel owns all system memory and operates with full authority over all system resources. The kernel has access to all physical memory and I/O subsytems.

When the Linux Kernel has completed its internal initialization and mounted its root file system, the default behaviour is to spawn an application called init. When the kernel starts init, it is said to be running in User Space. In this operational mode, the user space has restricted access to the systems and must request Kernel Services such as device and I/O. This is a very important and simple concept.

The single benefit of this architecture is that an error in one process can’t trash the memory space of another.




I hope you found the tutorial useful. If you have any doubt, feel free to ask. Next Tutorial : Storage Conditions

Saumitra Kapoor

Leave a Reply