ELIN 100 - Introduction to Embedded Linux
Duration: 5 Days
Intended Audience
Attendees should be embedded systems developers with some experience of C programming and some experience of working with Linux or Unix at the command line. The course should provide a good understanding of what Linux can and cannot do, its strengths as well as its limitations.
Synopsis
This is a very intensive course which aims to provide beginners to embedded linux with sufficient understanding to be able to start developing and maintaining applications for embedded linux based systems, to build linux kernels for their target systems, to work with cross development environments and be able to configure a kernel on a target board for working with such environments. The course will also demonstrate how to write simple device drivers and how to write user applications to drive basic hardware such as buttons, LEDs, simple motors as well as I2C and SPI devices.
At the Linux user level the course covers key topics essential to understanding Linux such as logging on, Linux file systems, TCP/IP networking, user accounts and security, the Linux boot process, terminals and serial ports, and basic shell programming.
Each attendee will be given either a RaspberryPi or BeagleBone Black board, depending on which flavour of the course is being run, as well as a copy of either the RaspberryPi or BeagleBone Black book by Derek Molloy as appropriate.
Course Outline
- Introduction
- Logging on to Linux
- Linux as a multi-user, multi-tasking operating system
- Accessing the command line (terminal and desktop)
- Accessing and using manual pages
- Working with the command line and the shell
- Introduction to command shells
- Understanding command syntax
- Executing commands at the command line
- Common command line tasks
- Piping and redirection
- Managing user accounts
- Performing RPM and APT package related operations
- Managing directories and files
- Understanding the filesystem hierarchy standard (FHS)
- Changing directories and listing directory contents
- Creating, viewing and appending files
- Copying and moving files and directories
- Creating directories
- Deleting files and directories
- Finding files on linux
- Managing file permissions and ownership
- Basic use of the vi and nano text editors
- Understanding and viewing processes
- Viewing processes from the command line
- Understanding the runlevel concept
- Multiuser processes, multitasking and multi-threading
- Managing the network configuration
- Basic network configuration
- Overview of the network-related command-line tools
- Managing user access and security
- Basic Linux user security features
- Managing Linux users and groups
- Managing and securing the linux user environment
- Securing files and directories with permissions
- Setting up a linux file system
- An overview of the various types of Linux filesystems
- Overview of configuring linux filesystem partitions
- Overview of configuring and managing a linux file system
- Backing up and restoring a file system
- Working with Flash File Systems
- Understanding System initialisation
- Overview of bootloaders and the Linux boot process
- Overview of run levels and system settings
- Overview of startup shell scripts and services
- Connecting a system to the network
- Network components and architecture
- Configuring a network connection
- Configuring and managing routes
- Testing a network interface
- Enabling network services
- Basic POSIX API Programming
- Terminal and File I/O
- Creating task and threads
- Working with pipes
- Introduction to memory mapping
- Overview of inter-process communication mechanisms and patterns
- Understanding the Kernel Architecture
- Overview of the kernel architecture
- Interrupt handling
- Memory mapping
- Block, character and network devices
- Basic anatomy of a device driver
- How system calls work
- Loadable modules
- Cross Compilation - Kernel and Application Building for Remote Targets
- The kernel configuration and build process explained
- Installing a kernel on a remote target
- Compiling and downloading applications to a remote target
- Block, character and network devices
- Driving hardware on the embedded target
- Detecting button presses
- Flashing LEDs
- Working with SD/MMC card file systems
- Pulse Width Modulation for power and basic motor control
- Measuring temperature using an I2C based temperature sensor