"Our tailored course provided a well rounded introduction and also covered some intermediate level topics that we needed to know. Clive gave us some best practice ideas and tips to take away. Fast paced but the instructor never lost any of the delegates"
Brian Leek, Data Analyst, May 2022
The performance and stability of a system ultimate depends on how well you use the resources of the underlying operating system. This course focuses on the interface between applications and the Linux kernel and the POSIX specification in particular. Attendees will learn about multi-threaded programming, memory management, signals and interprocess communication, including IPC using local sockets.
It is intended for engineers working on embedded Linux devices, and hence there is an emphasis throughout on robust design, efficient use of resources and real-time behaviour. All lab exercises are cross-compiled and tested on a typical embedded development board. Attendees will learn how to set up the Eclipse IDE for cross development, remote debugging and remote target management.
Printed copies of the presentations and lab notes plus electronic copies of the cross development tools, sample code and worked solutions for the labs.
An essential part of the training are the lab sessions, which take approximately 50% of the time.
We normally work in pairs using a modern development board such as the Beagleboard. Each group will also need a laptop or desktop to run the system development tools. We will provide a bootable USB memory stick with an appropriate version of Linux and cross tool-chain so there is no need to install Linux beforehand
• The tool-chain: choosing, installing and testing
• The Linux kernel: customising and cross-compiling
• The bootloader and root file system: the final steps to having a working target board
• Embedded development using Eclipse for cross-compiling and remote debug
• Application program interfaces: the POSIX standard
• Open source licenses: GPL/LGPL, BSD, etc
• Files and file-related API: waiting for several things to happen with select() and poll()
• Devices: everything is a file. Interfacing with a simple device driver. Using the ioctl()
function to access device-specific operations
• Interacting with the kernel through /proc and /sys: an example using gpiolib
• Process life cycle: fork(), exit() and exec()
• Scheduling: real-time and non-real-time policies; setting priority and niceness
• Virtual memory and its consequences
• Allocating from the heap and stack
• Mapping memory using mmap
• Standard and real-time signals
• Writing robust signal handlers
• Signal masks and how to handle signals synchronously
• Pipes
• Shared memory
• Semaphores
• Message queues
• Sockets: internet and UNIX (local). Stream and datagram connections
• Thread life cycle: pthread_create(), pthread_exit(), pthread_join()
• Scheduling threads: real-time and non-real-time
• The thread stack and how to set the stack size
• Synchronisation using mutexes; priority inversion and priority inheritance
• Condition variables: producer and consumer threads
• Thread cancellation and clean-up operators
• Signals and threads
• Timer accuracy: high-resolution timers, POSIX clocks and timers
• Measuring time
• Periodic tasks
"Our tailored course provided a well rounded introduction and also covered some intermediate level topics that we needed to know. Clive gave us some best practice ideas and tips to take away. Fast paced but the instructor never lost any of the delegates"
Brian Leek, Data Analyst, May 2022
“JBI did a great job of customizing their syllabus to suit our business needs and also bringing our team up to speed on the current best practices. Our teams varied widely in terms of experience and the Instructor handled this particularly well - very impressive”
Brian F, Team Lead, RBS, Data Analysis Course, 20 April 2022
Sign up for the JBI Training newsletter to stay updated with world-class technology training opportunities, including Analytics, AI, ML, DevOps, Web, Backend and Security. Our Power BI Training Course is especially popular. Gain new skills, useful tips, and validate your expertise with an industry-leading organisation, all tailored to your schedule and learning preferences.
This Embedded Linux course focuses on the interface between applications and the Linux kernel and the POSIX specification in particular. The performance and stability of a system ultimate depends on how well you use the resources of the underlying operating system. Attendees will learn about multi-threaded programming, memory management, signals and interprocess communication, including IPC using local sockets.
It is intended for engineers working on embedded Linux devices, and hence there is an emphasis throughout on robust design, efficient use of resources and real-time behaviour. All lab exercises are cross-compiled and tested on a typical embedded development board. Attendees will learn how to set up the Eclipse IDE for cross development, remote debugging and remote target management.
CONTACT
+44 (0)20 8446 7555
Copyright © 2024 JBI Training. All Rights Reserved.
JB International Training Ltd - Company Registration Number: 08458005
Registered Address: Wohl Enterprise Hub, 2B Redbourne Avenue, London, N3 2BS
Modern Slavery Statement & Corporate Policies | Terms & Conditions | Contact Us