ARM Embedded Linux Programming Courses - An overview
Linux, as well as being open source, is a very versatile operating system. What is most impressive about Linux that in can scale from a compact operating system running a half a dozen tasks through to a large server system running hundreds of tasks. For real time behaviour Linux can be built with real time extensions incorporated into it. For hard real time constraints Linux can be combined with a hard real time kernel such as Xenomai, or with a hard real time hypervisor such as Sysgo's PikeOS. Migrating from e.g. an 8 bit microcontroller based application to an embedded Linux based application involves quite a steep learning curve. Firstly the skills involved in simply configuring and administering Linux need to be mastered. This involves learning things such as shell scripting using Bash as well as the various Linux tools and utilities such grep, sed and awk. Then there are issues such as tailoring Linux builds for custom target boards using, for example, a build system such as Yocto. Programming embedded applications to run under Linux also requires knowledge of the Posix API and its use to write networked, multi-threading and multi-tasking applications.
Finally there is the challenging task of learning about the Linux Kernal internals and how to implement device drivers and kernel loadable modules. Often when starting with embedded Linux programming a good idea is to start with a well supported board that is close to the target architecture being envisages. There are many different target boards with processors ranging from simple one core processors through to multi-core processors with added GPU (Graphics Processing Unit), or with extra DSP cores, or ARM Cortex-M cores. Typically our embedded Linux courses are run using boards such as the RaspberryPi or BeagleBone Black. However, courses can be tailored to use other boards if required.
The ARM Embedded Linux programming curriculum courses cover the currently most required topics which include assembly language programming, covers many of the skills needed to become an expert embedded Linux systems application developer. As well as courses which cover Bash shell programming and utilities there are basic and advanced C programming courses, courses on Kernel and Device Driver programming , courses on Real Time Linux application development and also, a course on GUI (Graphical User Interface) application development using Qt. If necessary we can even run courses on low level X-Windows programming and Wayland programming. We have in fact run low level X Windows programming course both for NATO and the Dutch Royal Air Force for technical specialists maintaining NATO air traffic control systems. With the ever expanding use of networking systems we can deliver tailored courses covering IoT (Internet of Things), implementing Linux based edge routers etc.