1. Summary 2. Embedded computing a) Definitions - Exemples - Real-time and embedded computing b) Market and prospect - The embedded rise - Customs and habits - The players c) Embedded system topology d) Hardware architecture - CPU families - Communication bus - Mass storage - I/O - Network e) Software architecture - Reminder about operating systems (OS) - The kernel - Structure of a monolithic OS - Structure of the user space 3. Why GNU/Linux ? a) Technological reasons b) Economic reasons c) Personal reasons d) Other OS e) Licenses f) Limits 4. Solutions a) Types of solutions b) Product oriented platforms c) Base software components - Linux kernel - Real-time extensions - Filesystem for embbeded systems - Conventional filesystems - C library (libc) - Basic tools - Network servers - Databases d) References - Free distributions - Commercial distributions - Product oriented platforms 5. Essentials a) Unix concepts and orthodoxy b) Linux boot process analysis c) Compilation process d) Binary link edition - Static links - Dynamic links - Process of loading an executable dynamically linked - Tools related to shared libraries - Static vs dynamic e) Executables - Common formats - Operations on executables f) µClinux vs Linux - Main differences - Consequences 6. Methods and development tools a) Terminology b) Development method - Online development - Development through removable storage - On target development - Development with prototype c) Cross-compilation - Compilation toolchain - Interdependencies in the toolchain - Making of the cross-compilation toolchain - How to use the cross-compilation toolchain - buildroot - OpenEmbedded d) Optimisation and debug - gdbserver - strace - Profiling - Hardware debug e) Émulation et virtualisation logicielles 7. Case study a) Raspberry Pi b) µCsimm 8. References a) Books b) Portals c) Web d) Hardware 9. The end