
Linux is a free open source operating system, derived from Unix by Linus Torvalds, with Debian-based and Red Hat-based flavors, enabling testing without installation and strong embedded Linux opportunities.
Explore the basics of virtual machines, hypervisors, and virtual hardware, including VirtualBox, VMware, and Qemu, and how they map to real hardware.
Explore virtualbox, the open-source cross-platform virtualization tool, and learn to install it on Windows, Linux, and macOS, create and manage guests with snapshots and USB support.
Install Ubuntu 16.04 x64 in VirtualBox by selecting a release and downloading a 64-bit image. Create a VM with dynamic 10 GB disk and 3 GB RAM, then complete installation.
Explore the Linux terminal and console, and distinguish their cli experiences. Learn to switch between terminal and console modes using Ctrl+Alt function keys.
Explore the Linux shell as the user interface to the kernel, comparing Bash and sh, including auto completion, switching between shells, and Bash’s ubiquity on Ubuntu.
Explore essential Linux commands across flavors, including navigation, file management, permissions, searching, process control, archiving, and package management, with hands-on demonstrations in Ubuntu.
gedit is a full featured text editor for the gnome desktop, offering syntax highlighting, multiple tabs, and plugin support; it is not available on embedded linux.
Explore the nano text editor on embedded linux systems, and learn basic commands for editing configuration files, copying, saving, and exiting with control-key shortcuts.
Explore the vi text editor's editing and command modes, basic commands (i, e, esc, w, q, dd, yy, p), and limitations, with practical Ubuntu demonstrations for embedded Linux.
Explore the vim editor, its differences from vi, and its powerful features like syntax highlighting, multi-level undo, code folding, screen splitting, and cscope/ctag integration for embedded Linux development.
Explore git, a version control system, for tracking file changes and coordinating work, including init, clone, add, commit, push, log, status, and branches.
Learn to use ctags to navigate large embedded linux codebases, generate tag files with -R, and jump to definitions in vim using ctrl-] and ctrl-t.
Explore and parse C and C++ code with cscope, a classic source code explorer that builds a symbol database and enables lookups for definitions, function calls, and replacements.
Explore the three embedded device types: microcontroller, real time processor, and application processor, and how software and hardware form embedded platforms, with bare metal code and RTOS.
Compare low budget embedded boards Beaglebone black and Raspberry Pi 3, detailing features, connectivity, and software support, then evaluate community, cost, and add-on options to guide selection.
Access the board console via serial communication with minicom, putty, teraterm. Install minicom, set baud rate to 115200, disable hardware flow control, and identify devices like ttyUSB0 with root privileges.
Explore four network utilities—SSH, SCP, WinSCP, and TFTP—and learn to install openssh-server, start and stop SSH, transfer files with SCP, and configure a TFTP server for u-boot.
Explore qemu, a free open-source emulator that enables full system and user mode emulation for cross-architecture virtualization, including ARM and other architectures.
learn to compile qemu from git source by configuring with arm targets, enabling sdl, and building and installing into a sysroot, gaining full feature control and version selection.
Cross-compile an arm program and run it in qemu by setting up the toolchain, exporting arch, path, and cross-compiler, and compiling a hello world example.
Download the cross compiled kernel and BusyBox rootfs, then boot the Raspberry Pi on Qemu using the kernel, initrd, and rdinit parameters, verifying the console output and preparing for networking.
Enable network support in qemu for a Raspberry Pi using tap interfaces, create vnet0, configure IP addresses, and verify connectivity with ping and ssh.
Explore the four building blocks of embedded linux—toolchain, bootloader, kernel, and root filesystem—using qemu as a reference, and learn to build and run a hello world program.
Explore toolchain concepts and components such as binutils, gcc, libraries, and debugger, then set up native or cross compilers to build, run, and debug arm code with qemu.
Understand bootloader roles as the first code that initializes hardware, loads the kernel and root filesystem from boot media, and compare grub and lilo to embedded u-boot and redboot.
Explore the u-boot concept as the open source primary bootloader, its SPL and u-boot stages, supported architectures, system ROM loading, and command-driven configuration and booting of kernels and OS images.
Build and configure u-boot for real Raspberry Pi by setting up cross compiler, installing the device tree compiler, and selecting rpi_3 config to produce u-boot.bin for sdcard boot.
Build u-boot for qemu using the versatilepb target, mirroring the RPi workflow with a cross compiler and configuration, producing u-boot and u-boot.bin.
Run u-boot on qemu by configuring the environment and adjusting kernel parameters. Use printenv to verify baudrate and ethernet settings, preparing for tftp file transfers.
Explore how tftp works with u-boot on qemu and a ubuntu server, including ip configuration and creating uImage with mkimage.
Update for course slide ->> All slides of this course has been updated in pdf format in there respective sections.
This course is designed keeping in mind of providing overall understanding of embedded linux. This course does not cover advanced topic of linux kernel. In this course, you don't really have to buy any embedded hardware or evaluation board. Here first you will learn about linux basic concepts which will be applicable for all the linux professional. After the linux basic concepts, we will move towards topics especially designed for embedded linux. In embedded linux specific topics, we will cover qemu, toolchain, bootloader, kernel and root filesystem.
Throughout embedded linux specific topics, we will be taking reference of qemu instead of real target board like RPi or beaglebone black for covering the practical examples.
Best part of this course unlike other courses on udemy is that you don't have to buy costly embedded linux capable hardware/board. We will do all the practical examples like running u-boot, kernel, rootfs on Qemu which is a hardware emulator. Once you will be comfortable with concept of embedded linux, then based on your requirement and budget, you can buy a perfect embedded linux board. In this course, you will get to know how to select best possible board for you.
*** This course is available in both video and slides. Choose anyone or both which work best for you. ***
*** Please note that this embedded linux course will keep updating to improve the course and meet any specific area of interest within the scope of the course based on students feedback and demand. ***