Linux for Embedded systems – basic

(now including hardware Raspberry Pi)

This course gives general information on Linux in an embedded resource restricted environment as well as deeper knowledge on how the Linux kernel space with its related primitives provides service to the user space application level.

Traditionally an embedded system is defined by its peripheral features in a dedicated and resource restricted environment and this course will introduce the students to the methods and tools to configure the Linux kernel and how to deploy a target root file system in a well worked out host-target development environment. The students will be introduced to the concepts of kernel modules and how to encapsulate device driver into these kernel modules.


Course fee (SEK): 17 800
Number of days: 3
Theory/Practical: 40/60
Upcoming course dates

2013/01/22 · Kista/Stockholm

2013/02/26 · Linköping

2013/04/16 · Kista/Stockholm

2013/04/23 · Lund

  • Course information

  • Your details

Close form


Throughout the course the students will be guided and challenged with several hands-on exercises where the students can learn step-by-step how to use a typical development environment for embedded Linux systems.

The exercises includes:
- Kernel configuration and build
- Populate and deploy a root file system dedicated for its target platform
- Create a boot- loader for the target system
- Create a virtualized instance of the ARM11 platform with QEMU
- Manage target resources such as network interfaces, serial devices and file systems
- Write generic kernel modules and use dedicated utilities to manage those modules
- Write and test a simplified driver according to the Linux Device Driver Model
- Write and test a complete SPI device driver with interrupt service routines (ISR), queuing and hardware handling

Objectives
Upon completion of the course, the student shall have an understanding of the basic principles of how Linux is used as an embedded and scalable operating system. The student will also have an understanding of how to build and populate a root file system with minimal memory footprint and then deploy this file system to a target machine. The student shall also have a good understanding of how to write and encapsulate device drivers into kernel modules.

Who should attend?
System designers, application programmers and project leaders.

Previous knowledge
C-programming on Linux or Unix and basic understanding of multitasking concepts. Experience with embedded systems. Recommended courses: Embedded C programming,

Recommended following courses
Kernel deployment techniques for embedded Linux devices
Fault resilient designs for Embedded Linux Devices
Embedded Linux development with threads and sockets 

Documentation
The course documentation is both Xdin specific and general available books in English.

Hardware
Exercises are performed on a Raspberry Pi Kit that will remain the student’s property after course completion

Other information
The course may on request be given tailored to the needs of the customer.

- Theoretical discussion on Linux embedded environment
- Linux introduction
- Linux and GNU in retrospect
- Free Software Foundation (FSF)
- CopyLeft, GPL, LGPL license models
- Linux in the embedded marketplace
- Linux kernel subsystem
- Scheduler process management
- Nice values and realtime process selection
- Memory Manager responsibilities
- Virtual Filesystem responsibilities
- IPC – Inter-Process Communication
- Linux and real- time
- The /proc file system
- The root file system
- File system Hierarchy Standard (FHS)
- Linux utilities and libraries
- Glibc v.s uClibc C- libraries
- BusyBox – a collection of binary essentials
- Lighthttpd HTTP Server
- Linux boot sequence
- GRUB
- U-boot
- SySVinit and Inittab
- Runlevels
- Linux kernel mechanisms
- Spinlocks, Semaphores and Wait queues
- Interrupt handlers
- Bottom half handling with tasklets and Work queues
- Kernel modules
- Modules and GPL implications
- Module Utilities (modutils)
- Module configuration
- Linux Device and Driver model
- Device driver registration
- Device identification with Major/Minor numbers
- Device files and udev
- Device driver access and File operations
- SPI  and GPIO Drivers
-Virtualization of embedded devices