Training Categories

Click on a link to see more about each course.

Technical Training

Schedule

Course Outline

Dates Offered (click on the desired date to register):


This course is currently not scheduled for the near future.

Embedded and Real-Time Linux Development

Course Number:  LIN11

Course Description: 

Linux has become increasingly popular as an embedded operating system. Characteristics such as its reliability, robustness, open source, license-free nature, and successful implementation on a wide range of hardware, are some of the key reasons. This course acquaints developers with the issues essential for embedded and real-time Linux development. The course progresses through a number of topics. Each topic is presented with a supporting laboratory exercise before moving on to the next topic. This four and one-half day course provides substantial practice with the key steps in developing an embedded Linux product. The course shows attendees how to configure a small Linux kernel, develop code within the kernel, such as for new system functionality or device drivers, and how to measure and obtain real-time performance with Linux. The course begins with a complete, simple, project that walks the attendees through the entire process of creating a special version of the Linux kernel, creating a root file system, including just the libraries that are needed, and constructing a custom boot sequence.


The course covers the key issues in embedding Linux. Such questions as: why Linux, how to embed Linux, and how to measure and obtain real-time performance in Linux are examined. The attendees will gain experience in developing applications and system programs. These examples include hard and soft real-time applications. The issues with real-time in Linux will be examined in detail. Attendees will spend approximately 50 percent of the class time actually gaining hands-on experience with these topics

Objectives: 

 


Upon completion of this class, participants will:



  • Possess an understanding of the essentials of embedded and real-time Linux.

  • Gain practical experience in developing an embedded Linux system.

  • Develop real-time Linux software.

Benefits: 

Participants learn by doing in this hands-on workshop. Development boards are provided for lab exercises. Students receive resources and other goodies as part of their registration,

Target Audience: 

Linux system developers, software engineers, programmers/developers tasked with learning how to create real-time embedded systems under Linux.

Prerequisites: 

Current working experience and/or knowledge of C, C++, and Linux are required. Unix experience does not apply.

Course Length:  4.5 days

CourseTopics:

1.    Embedded and Real-Time Linux Development


1.1.     Objectives and format


1.2.     Introduction Embedded and Real-Time Linux


o        What is Linux?


o        What is Embedded Linux?


o        What is Real-Time Linux?


o        Linux Real-Time Overview


1.       Soft Time


2.       Hard Time


2. Overview Of Project


2.1. Building a small system 2.2. Configuring a Linux kernel


2.3  Compiling the Linux kernel


3. Building A Root File System


3.1. What directories are required? 3.2. Configuring, making, and installing Busybox


3.3. Configuring the boot sequence 3.4. Configuring networking


3.5     Creating the Linux Initialization files


3.6     Creating the Root File System


3.7     Using tools and utilities to build a Root file system.


4. Building A System Image


4.1. Creating the Devicesin the /dev directory 4.2. Inserting drivers 4.3. Stacked drivers 4.4. Libraries 4.5. Configuring the Linux Modules and Device Drivers files


5. Applications


5.1. Selecting, compiling and configuring the Applications for your embedded device


6. Making A Boot Image


       6.1. Selecting, configuring, and installing a bootloader (U-Boot, RedBoot, GRUB, Syslinux)


6.2. Putting the pieces together (Kernel, Root File System, 6.3. Creating a Filesystem image 6.4. Bootloaders (U-Boot, RedBoot, GRUB, Syslinux, etc)


6.5. Creating the final system boot image


7. File Systems


      7.1. Flash Devices


7.2. Read-Only File Systems 7.3. CRAMFS 7.4. Journaling File Systems 7.5. Ext2 File System 7.5.  Benchmarking File Systems


8. Development Gnu tools 8.1. Gcc


8.2. Optimization 8.3. Linker 8.4. Building tools for the source (make, Makefile, automake, etc)


8.5. Source Code Control


8.6. Debugging with gdb, ddd, strace, etc


8.7. Additional tools:  ccache, rsync, etc


8.8. Profiling and Tracing 8.9. Finding Memory Erros


9. Cross development


9.1. Cross compilation


9.2. Libraries and tool chains


9.3. How to configure the kernel for cross compiling


9.4. Building the kernel and modules


9.5. Emulators


9.6. Integrated Development Environments


10. Linux Real-Time Overview


10.1. Linux Real-Time fundamentals


10.2. Real-Time Example


10.3. Real-Time Software Model 10.4. Response Time 10.5. Designing a Real-Time Applications 10.6. Linux Scheduler


11. Kernel And System Programming


        11.1. Writing a system call 11.2. System call basics 11.3. Shared memory 11.4. Threads


11.5. Synchronization,  and Scheduling 11.6. Memory locking 11.7. Process and Thread Model 11.8. Linux Scheduler Priority Limits 11.9. Process States


11.10. Inter-Process/Threads Communication


11.11. Memory management, including file buffering, process swapping, and Direct memory Access


    (DMA)


       11.12. Compiling Modules for the kernel


       11.13. Creating a Device Driver


12. Linux and Real Time


12.1. What is real time? 12.2. A real-time time line


12.3. User space vs. kernel space 12.4. Linux Real-Time Scheduler


12.5. Issues and, latencies


12.6. Low latency patch 12.7. Linear scheduling


12.8. Non-preemptive kernels 12.9. Latency test tool 12.10. What is new in Kernel 2.6 for real-time


13. Real-Time Subkernels


13.1. RTLinux overview 13.2. Building RTLinux 13.3. Installing RTLinux


13.4. Programming with RTLinux 13.5. RTAI Overview and characteristics 13.6. Building RTAI 13.7. Installing RTAI 13.8. Programming with RTAI 13.9. RTAI functionality and functions


13.9. Kurt overview 13.10. Kurt Building Kurt 13.11. Installing Kurt


14. Preemption


14.1. Preemptibility in Kernel 2.6 14.2. Low Latency


14.3. Preemptible Kernels


14.4. Comparing Preemptible Solutions 14.5. Other Preemptibility Features


15. Data: User To/From Kernel


15.1. Functions to access the user space 15.2. System calls


15.3. Moving data between User Space and Kernel Space


15.4. Share Memory


 


16.  IOCTLs


16.1.    What is ioctl?


16.2.    Using ioctl commands to interact with a device


16.3.    Implementing IOCTL in device drivers




17.   Memory Management


17.1.    Memory allocation/deallocation with kmalloc and kfree


17.2.    Page-oriented memory allocation


17.3.    Memory allocation in the virtual address space


17.4.    The mmap() method


 


 

Phone:  772 217 3261

Email:  info@jhltech.com

Contact Us