embedded and real time systems training and consultancy

Systems and Network Programming for Embedded Linux

Duration: 5 Days

Course Background

Complex Linux projects typically involve a detailed knowledge not only of C programming, data structures and algorithms and of the Posix API but, also the ability to construct complex frameworks and make them accessible through intuitive and well thought out APIs. Complex embedded Linux systems quite commonly provide services for a networked collection of client devices. This is a common pattern used in the development of industrial controls systems for example, and also an increasingly important pattern in the development of Internet of Things (IoT) systems. It is also becoming more common, e.g. in complex robotics systems to have smaller embedded systems e.g. PIC or AVR or ARm Cortex-M based serving as intelligent controllers and sensors and communicating with a more powerful embedded Linux node running a powerful ARM, Intel or PowerPC processor based platform, for example. This course is concerned with ARM platforms, though it can be tailored to other platforms if so required.

Course Prerequisites and Target Audience

A sound basic knowledge of C, preferably in the context of embedded systems application development is assumed, to the level covered e.g. in the Introduction to Embedded Linux C programming and a knowledge of Linux/Unix shell programming, tools and utilities. course.

Course Overview

The course focuses on extending the basics of Posix API programming to cover the design and implementation of more complex frameworks and services. As opposed to implementing complex high performance IT server applications the emphasis here is on embedded systems applications. These applications can range from building and office acess control and HVAC applications through to manufacturing process control applications and advanced robotics applications. The standard version of this course will use C only as the high level programming language. The course can be adapted and tailored to include C++ and to cover topics such as CORBA, ACE + TAO and C++11 multithreading. The course modules include coverage/overviews of

Lab exercises are used to consolidate key concepts.

The course uses PC workstation and Embedded Linux systems (e.g. BeagleBone Black and RaspberryPi) as the platforms for hands-on work and Arduino boards for exploring smart sensor and control applications. [Note: Although the use of Arduino sketches can be included in the course if required, the approach taken here is a "bare bones" programming approach using C code. ]

Course Benefits

Students successfully completing this course will have a deeper understanding of C and Posix API programming that goes beyond the simple examples covered in many basic courses and books. Students will also be exposed to various advanced data structures and algorithms that they may have forgotten or that were not covered thoroughly on various undergraduate and postgraduate courses they may have attended.

Course Outline