Training Categories
Click on a link to see more about each course.
Course Outline
Dates Offered (click on the desired date to register):
This course is currently not scheduled for the near future.
Fast Track Embedded Linux
Course Number: LIN9
Course Description:
Designed for those new to Linux, this fast paced, hands on course will get you quickly up to speed creating a Linux Embedded system. In this five day comprehensive course, the participant is taken from the basics to the advanced concepts and topics involved in the creation, implementation and usage of a custom version of Linux for an embedded system and a real time embedded system Topics such as internal structure of Linux, kernel considerations and compilation, device drivers, development tools, GNU Cross-platform Development Toolchain. Root Filesystem setup, real world interfacing, alternatives for file systems, Storage Device manipulation, GUI development, setting up the bootloader, network integration and services, and kernel debugging and tools are covered. Additional topics covered are hardware designs for Linux platforms using serial, parallel, USB, I/O port and I2C interfaces. This course will also explore why Linux is a great choice for an embedded application and what to look for when choosing hardware.
Objectives:
After completing this course, participants will be able to: • Describe and customize the Linux boot sequence • Set up the Bootloader • Build a custom, reduced size Linux kernel • Use the GNU tools for compiling and debugging • Build a complete file system • Create a bootable Linux floppy complete with a Filesystem • Compile, link, and insert kernel modules, including sound and NIC drivers. • Compile, link, and debug programs using gcc, ld and gdb. • Set up, compile and use busybox, a small web server, small libraries and other special software designed for embedded Linux systems • Setup and use real-time solutions such as RTAI, eCos and Linux/RK • Describe many tradeoffs for real-time solutions, including kernel vs. user space, high precision timing, guaranteed maximum interrupt latency times, priority inversion avoidance, preemption, and deterministic scheduling • Explain comparative issues between Embedded QT, and Microwindows • Use the GNU Cross-Plataform Development Toolchain • Install Linux to create a development environment • Use boot loaders for non-Intel architectures • Use DHCP to obtain an IP address automatically • Use kernel debuggers such as kdb and kgdb • Use Flash devices such as DiskOnChip, compact flash cards, etc • Perform safe field upgrades of system software, including the kernel • Use file systems such as ROMfs, Cramfs, RamDIsk, and ReiserFS • Compare small libraries such as uC-Libc and newlib to Glibc. • Develop an application that uses system calls directly, without library wrappers • Write a basic device driver • Explain basic device driver concepts such as how one communicates with a driver, how to register a character driver, and task queues. • Install, list and remove kernel modules • Use the basic and advanced commands and features in Linux • Install and configure your Linux Desktop for Embedded Linux Development
Benefits:
This intense course will get you quickly up to speed developing Embedded Linux. Included with the registration fee is a development board which attendees use for in-class lab exercises and for post class development.
Target Audience:
Linux system developers, software engineers, programmers/developers tasked with learning how to create embedded systems under Linux.
Prerequisites:
• Experience in C and C++ programming • Experience with editors such as vi, emacs
Course Length: 5 days
CourseTopics:
1) Overview of the Project 2) Introduction to Linux and Embedded Linux a) What is Linux? b) What is Embedded Linux? c) What is Real-Time Linux? d) Embedded development differences i) Type of Embedded Linux Systems e) Linux, open source, and the law, re: embedded development and patents f) Installing Linux on your computer for Embedded development: i) How to choose a distribution. i i) What to avoid with a distribution. iii) Tips and Tricks iv) How to find resources v) Utilities and short cuts. vi) Type of Hosts vii) Type of Host/Target Development Setups g) Building your own environment with GNU tools i) GNU software tool sets: Setting up and Using Development Tools, Cross Compiling, Cross Configuration, Debugging, and testing. ii) Type of Host/Target Debug Setups. h) Embedded methods and processes i) Generic Architecture of an Embedded Linux ii) Type of boot configurations i) Cross-compiling i) Compile, link, and insert kernel modules, including sound and NIC drivers ii) Cross compile Linux applications for x86, PowerPC, StrongARM, Hitachi SH7708, NEC VR4300, MIPS and others. j) Remote debugging i) gdb configuration ii) Debug monitors - RedBoot, etc iii) gdbserver iv) Kernel debuggers such as kdb and kgdb k) Remote serial protocol 3) Embedded Linux a) Linux and embedded Linux i) Real-time solutions such as RTAI, RTLinux, eCos and Linux/RK b) Linux kernel source code i) Kernel overview ii) Selecting a Kernel iii) Build a custom, reduced size Linux kernel iv) Configuring the kernel v) Compiling the kernel vi) Compile, link, and insert kernel modules, including sound and NIC drivers vii) File systems such as ROMfs, Cramfs, RamDIsk, JFFS2, TMPFS, and ReiserFS c) Linux code size requirements d) Linux System requirements e) Running Linux on CPUs without an MMU i) uClinux f) Linux initialization procedure i) The Linux boot sequence g) Hacking inittab h) Modifying kernel init i) Initial disk images i) Create a bootable Linux floppy complete with a Filesystem ii) boot loaders for non-Intel architectures 4) Root Filesystem Content a) Selecting a Filesystem b) Basic Root Filesystem Structure c) Libraries d) Kernel Modules e) Kernel Images f) Device Files g) Main System Applications h) System Initialization i) To write a Filesystem image to a flash j) JFFS2 k) Disk Filesystem over RAM Disk 5) Storage Device Manipulation a) MTD-Supported Devices b) Disk Devices i) Flash devices such as DiskOnChip ii) Flash Cards 6) Board Support Issues a) Drivers and loadable kernel modules b) Kernel modules and device I/O i) Basic device driver concepts such as how one communicates with a driver, how to register a character driver, and task queues. ii) Writing a basic device driver c) Kernel module API d) Interrupts e) Board support i) Flash devices such as DiskOnChip 7) Embedded Applications a) Application development methods i) Small libraries such as uC-Libc and newlib to Glibc ii) Develop an application that uses system calls directly, without library wrappers b) Comparative issues between Embedded QT, and Microwindows c) eCOS 8) Setting up the Bootloader a) Bootloaders b) Sever Setup for Network boot c) Using LiLO with Disk and CompackFlash Devices d) Using GRUB with DiskOnChip Devices e) U-Boot 9) Debugging Tools a) The Applications with gdb b) Tracing c) Performance Analysis d) Memory Analysis e) Recovery Processes f) Application crashes g) Linux boot problems 10) An Introduction to Linux Device Drivers a) The Role of the Device Driver b) Splitting the Kernel c) Classes of Devices and Modules d) Security Issues e) Version Numbering 11) Building and Running Modules a) Kernel Modules Versus Applications b) Compiling and Loading c) The Kernel Symbol table d) Initialization and Shutdown e) Using resources f) Automatic and Manual Configuration g) Doing it in User space 12) Linux and Real Time a) What is a real time b) A real-time time line c) User space vs. kernel space d) Issues e) Latencies f) Low latency patch g) Linear scheduling h) Non-preemptive kernels 13) Real-Time Subkernels a) RTAI i) Building RTAI ii) Installing RTAI iii) Programming with RTAI 14) Preemption a) Preemptibility b) Preemptible kernel c) Low latency 15) Resources for Linux Embedded devices