K Computing - Delivering Computing Knowledge Worldwide Embedded/Real-Time Dev.

Course Description • How to measure real-time performance in Linux. Linux has become increasingly popular as • Fundamentals of embedded software for an embedded operating system. Such char- Linux acteristics such as its reliability, robust- ness, open source, license-free nature, and Who Should Attend: successful implementation on a wide range of hardware, are some of the key The course is designed for real-time or reasons. embedded engineers who are new to real- time or embedded Linux. Attendees Overview should have experience with C and be able to perform basic Unix commands. This four and one-half day course provides substantial practice with the key steps in Duration developing an embedded Linux product. The course shows attendees how to con- Four and one-half days figure a small , develop code within the kernel, such as for new system Course Materials functionality or device drivers, and how to measure and obtain real-time performance The workshop materials include a compre- with Linux. hensive student workbook and CD. The workbook contains all of the slides used in The course begins with a complete, sim- the course as well as hands-on lab exer- ple, project that walks the attendees cises. through the entire process of creating a special version of the Linux kernel, creat- The CD contains the lab exercise code as ing a root file system, including just the well as a large amount of embedded and libraries that are needed, and constructing real-time Linux software. a custom boot sequence. This course may optionally be taught with Attendees will spend approximately 50 the use of a representative embedded percent of the class time actually gaining Linux device. hands-on experience with these topics. Course Workshop:

Course Objectives The workshop makes use of standard PC’s with a desktop for • To provide an understanding of the development. The PC will be used as an essentials of embedded and real-time example target for both real-time and Linux. embedded. Alternative platforms such as • To give you practical experience in those with MIPS or PPC CPUs will be developing an embedded Linux system. used as examples. Since Linux has been effectively ported to many architectures, Attendees will learn: the principles taught in the workshop are appropriate for a wide range of target plat- • Key concepts and software for embedded forms. Linux. • Key concepts and software for real-time Linux. • How to configure a Linux kernel.

1 www.kcomputing.com K Computing - Delivering Computing Knowledge Worldwide Embedded and Real-Time Linux Development Outline

1. Embedded Linux Development compiling 1.1. Objectives and format 9.4. Building the kernel and modules 1.2. What/Why/How/Who/Where of embedded Linux 10. Tools 10.1. Integrated Development Environ- 2. Overview Of Project ments 2.1. Building an mp3 playing, web browser 10.2. Tracing controlled, appliance 10.3. Finding Memory Errors 2.2. Configuring a Linux kernel 10.4. Profiling 3. Building A Root File System 11. Kernel And System Programming 3.1. What directories are required? 11.1. Writing a system call 3.2. Making busybox 11.2. System call basics 3.3. Configuring the boot sequence 11.3. Shared memory 3.4. Configuring networking 11.4. Threads 11.5. Synchronization, 4. Building A System Image 11.6. Memory locking 4.1. Device drivers 4.2. Inserting drivers 12. Linux and Real Time 4.3. Stacked drivers 12.1. What is real time? 4.4. Libraries 12.2. a real-time time line 12.3. vs. kernel space 5. Applications 12.4. issues 5.1. running an embedded web server 12.5. latencies 5.2. mp3 software 12.6. low latency patch 12.7. linear scheduling 6. Making A Boot Image 12.8. Non-preemptive kernels 6.1. Syslinux 12.9. latency test tool 6.2. Putting the pieces together 6.3. Creating A Filesystem image 13. Real-Time Subkernels 6.4. Bootloaders 13.1. RTLinux overview 6.5. U-Boot 13.2. Building RTLinux 6.6. GRUB, Syslinux 13.3. Installing RTLinux 13.4. Programming with RTLinux 7. File Systems 13.5. RTAI characteristics 7.1. Flash Devices 13.6. Building RTAI 7.2. Read-Only File Systems 13.7. Installing RTAI 7.3. CRAMFS 13.8. Programming with RTAI 7.4. Journaling File Systems 7.5. Benchmarking File Systems 14. Preemption 14.1. Preemptibility 8. Programming with Gnu tools 14.2. Low Latency 8.1. gcc 14.3. Preemptible Kernels 8.2. optimization 14.4. Comparing Preemptible Solutions 8.3. linker 14.5. Other Preemptibility Features 8.4. debugging with gdb 15. Benchmarking 9. Cross development 15.1. Performance overview 9.1. Cross compilation 15.2. System loads 9.2. Libraries and tool chains 15.3. Benchmark capabilities 9.3. How to configure the kernel for cross-

2 www.kcomputing.com