Course Objectives
To provide an understanding of the essentials of embedded GNU/Linux, how the bits and pieces fit together. What components are needed to build an embedded GNU/Linux system, where to get them from and how to configure/build/install them? Where to get help from? What about those software licenses? Hands-on exercises provide you with the necessary practical experience to go ahead and develop your own embedded GNU/Linux systems after completing this training successfully.
Description
This five day training class uses hands-on exercises combined with instruction to illustrate the concepts of embedded GNU/Linux. It is designed to bring you quickly up to speed. The philosophy, concepts and commands necessary to make effective use of GNU/Linux are described through a combination of theory and on-the-job training. Don’t reinvent the wheel, but learn from an experienced trainer and take home a working knowledge of GNU/Linux and the ability to use it effectively in your own embedded development project.
See who else we've trained
Prerequisites
- Basic familiarity with using a GNU/Linux system (e.g. Ubuntu) as an end user in user space
- Basic familiarity with a command line shell
- Basic knowledge of user space/application development with GNU/Linux
- Basic knowledge concerning embedded processors and development boards
- Basic C programming knowledge
- …and/or no fear to learn the above…
Who should attend?
Managers, project managers, software-, hardware-, development-, systems engineers, testers, administrators, technicians and other parties interested in the technology, who want to understand as quickly as possible how Embedded GNU/Linux works. You must use GNU/Linux or you have to luxury to decide whether it makes sense to use it or not. Maybe you already tried to use Embedded GNU/Linux, but are not quite sure that you did everything the right way. You currently use a different operating system and want to figure out whether GNU/Linux might be better and/or cheaper.
Delivery Options
All the training material is English, but the presentation of it can be in English or in German, as you wish, worldwide.
- on-site - instructor driven*)
- on-line - instructor driven**)
- on-site/on-line combination - instructor driven*)**)
During the training we’ll provide laptops*), boards*)**), workbooks (in English)*)**), remote access to servers and boards**), screen-sharing**), audio-bridge**).
Check out our training delivery options to see how we can present/customise our material to your specific needs. Feel free to contact us for further inquiries.
Course Outline
Introduction
- History of Unix/Linux
- Licensing
- Standards
- Working with Free Software
- Spelunking
- Unix Philosophy
Host playground
- architecture
- shell
- FHS (file hierarchy standard)
- Devices, Daemon, Booting, Program Sections, Static/Shared Libraries
- permissions
- Access Control, Changing Permissions, umask
- hard/soft links
- real/effective uid/gid
Process/IPC
- Intro
- What's an OS?
- What's a scheduler?
- Linux: scheduler, priorities, scheduling classes
- process/task/thread
- errno
- fork
- Process termination
- Process states
- Zombies
- More about Processes
- IPC simple
- shell redirection, shelling out, tmpfiles
- IPC Generic
- Message passing vs. shared memory
- Advanced IPC
- pipes
- signals
- interrupted system calls
- message queues
- semaphores
- shared memory
- sockets
- select/poll
- IPC techniques to avoid
Embedded Specifics
- Intro
- Portability
- Build
Toolchains
- C-Libraries
- glibc, uclibc, eglibc, others
- reduce shared lib size
Eval Board
- Booting
- How does LInux boot on a PC?
- How is an Embedded System different?
- Booting the target
- Boot sequence, SD card and partitions
Stuff Needed
- Host
- Toolkit
- The Yocto Project
- Install Yocto SDK
- SD card
- screen
- minicom
- tftp server
- Root file systems
- Nfs server
- Target
- U-Boot
- Das U-Boot
- Scripting
- Fancy stuff
- Spash Screen
- U-Boot environment from Linux
- Post mortem
- Automatic SW update
- How to contribute?
- Get/Configure/Build/Install
- Commands
- Flat device tree
- What is a flat device tree?
- Device tree compiler
- Examples/Documentation
- Linux kernel
- Get
- Kbuild
- Multi Platfrom Support
- Configure/Build/Install
- Get/configure/build install
- What is uImage?
- Build fdt
- In-tree kernel modules
Rool File Systems
- Available root file systems
- prepare minimal-dev rootfs
- tftp server
- rootfs on ramdisk
- mtd
- rootfs on jffs2
- mtdparts
- rootfs on cramfs
- rootfs on ro ext2
- build/execute what's applicable from above on the target board
- rootfs comparison
Customizations
- System hangs
- pseudo tty
- getty
- runlevel
- static ip
- mount nfs
- ssh server
User Space Debugging
- Debugging Intro
- What's a bug?
- Types of bugs
- Debugging strategy
- Simple tools
- lsof, ltrace, strace,...
- procfs, top, netstat, syslog,...
- Advanced tools
- What’s a debugger?
- gdb
- host gdb
- target gdb
- gdb remote debugging
- gdb remote debugging with GUI
User Space Profiling/Tracing
- Profiling/Tracing tools
- strace
- system timers
- gprof
- gcov
- code optimization
- oprofile
- perf
- top an friends
- top
- latencytop
- powertop
- powerdebug
- crash
Real-time
- prerequisites
- Kernel vs. User Space
- interrupts
- reentrant code
- Real-time Intro
- What is Real-time
- Determinism
- Real-time Linux
- Hypervison
- Dual kernel
- Fully preemtive kernel
- 0 Vanilla Linux kernel
- 1 explicit preemption points
- 2 implicit preemption points
- 3 real-time preemption patch
- fully preemptive kernel
- hard real-time extensions
- Adeos/Xenomai
- adeos patch
- xenomai
- patch/config/build kernel
- run it on board
- Real-time myths
- must be fast
- rate monotonic
- universal methodology
- scheduling theory
- RTOS vs. Linux
- New hardware
- Dual kernel vs. Preempt-rt
- Future outlook Dual kernel
- Future outlook Preempt-rt
Please fill in this form if you have further questions regarding this or any other training and do not hesitate to contact us if you have any further questions.