
Course Objectives
The aim of this crash course is to provide a basic overview of embedded GNU/Linux. What are the components 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 licenses? Hands-on exercises provide you with the necessary practical experience to go ahead and configure/build an embedded GNU/Linux system with mainline components.
Description
This 3-day training class uses hands-on exercises combined with instruction to illustrate some basic concepts of Embedded GNU/Linux. Hands on sessions are performed with Yocto, on a Beagle-Bone Black Rev.C. The whole workshop is designed to bring you quickly up to speed. The concepts and commands necessary to make effective use of Embedded 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 Embedded GNU/Linux and the ability to use it effectively in your own embedded development project.
Prerequisites
- Basic knowledge of how to use Linux (Ubuntu)
- Familiarity with embedded C concepts and programming
- Ability to develop software using C syntax
- Basic knowledge of embedded processor development boards
- ... or no fear to learn the aboveand programming
Who should attend?
Project managers, software, hardware, development and systems engineers, technicians and those interested in technology who want to try to understand as quickly as possible how Embedded GNU/Linux works. You have to use GNU/Linux, or have the luxury to decide whether it makes sense to use it or not. You may already use Embedded GNU/Linux, but you are not quite sure if you do everything right. You currently use another operating system and want to find out whether Linux would maybe be more cost effective. . . .
Course Outline
Introduction
- What is GNU/Linux?
- Licensing
- Standards
- Working with free software
- Spelunking
- The Unix Philosophy
- What is an embedded system?
- What is a real-time operating system
Embedded Specifics
- What’s an Embedded System?
- Embedded vs. Desktop Linux
- Portability
- Build for your Target
- Toolchains
- C-libraries
Eval board
- What is the Beagle?
- Booting
- Booting the Beagle
- Partition/Format SD card
- Populate partitions with given boot-loader, kernel, rootfs
- Configure serial console
- Board booting Linux
Stuff needed
- Install toolchain
- U-boot
- What is U-boot?
- What does it do?
- Fancy Stuff
- Get/configure/build install
- Flat device tree
- What is a flat device tree?
- Linux kernel
- What is uImage?
- Get/configure/build install
- Kernel modules
- Rootfs
- Use rootfs from Yocto
Customizations
- Add network support to board
- U-boot scripting
- Network support in U-boot
- Custom kernel with network support
- Rootfs from nfs
- Nfs server setup/configuration
- Init
- Sys-V
- Upstart
- Initng
- Systemd
- Bootgraph
- Bootchart
Kernel Modules
- Hello Kernel, module-init-tools, Kconfig, Kbuild
- out of tree, in tree
Device Drivers
- Device Nodes
- Registration, Initialization, Open, Release,...
- Miscellaneous Character Drivers
Debugging/Profiling/Tracing
- What is a bug?
- What is debugging?
- Simple debugging tools
- lsof, ltrace, strace, proc, top, netstat, syslog
- Advanced debugging tools
- What’s a debugger?
- gdb
- target gdb
- gdbserver
- kgdb/kdb + agent-proxy
- JTAG
- What is profiling?
- What is tracing?
- Profiling tools
- time, gprof, gcov, oprofile
- Tracing tools
- ftrace, kernelshark, LTTng
- Misc. tools
- top, latencytop, powertop, powerdebug, crash, systemtap
Inquiry
All fields with an asterisk (*) are required.
Public Elin
No events |