| Embedded Trainings Overview |
|
|
|
|
Page 8 of 9 Embedded GNU/Linux Device DriversDescription This 5-day training class uses hands-on exercises combined with instruction to illustrate the concepts of GNU/Linux kernel internals and device driver development. It is desinged to bring you quickly up to speed. We describe processes, concepts and commands necessary to write GNU/Linux device drivers 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 and the ability to use it effectively in your own embedded development project. Prerequisites- Basic familiarity with using a GNU/Linux system as an end user Who should attend?People with interest in or tasked with the development or evaluation of developing GNU/Linux device drivers like software engineers, field engineers, (project) managers, hardware engineers. Course OutlineIntroductionquick history of GNU/Linux, licensing, kernel versioning, release cycle, kernel trees, mainline, kernel vs. user space, mechanism vs. policy, kernel driver alternatives, RTOS vs. Linux Memory ManagementVirtual memory vs. physical memory, memory allocation in kernel, pages, zones, API, slab Kernel Patchlife cycle, git, kernel source, create patch, check patch, fix patch, ship patch, audited code Kernel Moduleget kernel sources, configure, build, install, device drivers (statically linked, loaded at runtime), init, licensing, EXPORT SYMBOL GPL, out of tree makefile, module-init-tools, module in kernel tree, Kconfig, parameter passing, sparse Char Driversarchitecture, user/kernel interface, I/O subsystem, VFS, sysfs (devices, bus, drivers, classes), Advanced Charachter Driver Operationsioctl, unlocked ioctl, compat ioctl, user space API, kernel space API, process lifecycle, sleeping/blocking, sleeping/waking up, wait queue, thundering herd, poll/select Kernel Debuggingbug, debugging, debugging the kernel Tracing* gcov Interruptsinterrupts vs. polling, interrupt, program sections, reentrancy, events, interrupt handler, shared interrupt handler, interrupt flow, interrupt control Deferring Worktop/bottom halves, softirqs, tasklets, work queues Concurrencycritical region/section, atomic, race condition, synchronization, locking, locking solutions, deadlock, contention, what to lock? TimeHZ, Jiffies, big/small delays, kernel timers Hardware I/OI/O Ports, I/O Memory, How to deal with side effects accessing registers? User-Kernel Communicationput(get) user(), copy to(from) user(), Kernel I/O, memory mapping, procfs, sysfs, debugfs, relayfs, netlink, ioctl Portabilityword size, opaque types, signed/unsigned char, data alignment, integral promotion, code reuse, endianess, system tick, page size, instruction ordering, SMP/preemption/high memory |
Upcoming Public Events:
"Busting Bugs" at the Embedded World was the highlight of all talks
I attended your talk and enjoyed it very much
Thank you very much for your very interesting presentation
I received a lot of tips about software development during your presentation
With your technical knowledge you are kind of ambidextrous in your domain
Products & Services
Training
Embedded Systems