(/) Embedded GNU/Linux Systems Architecture Like 0 Tweet Share Course Objectives To provide an understanding of the essentials of embedded GNU/Linux, how the bits and pieces fit together. What components are 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 those software licenses? Hands-on exercises provide you with the necessary practical experience to go ahead and develop your own embedded GNU/Linux systems after completing this training successfully. Description This five day training class uses hands-on exercises combined with instruction to illustrate the concepts of embedded GNU/Linux. It is designed to bring you quickly up to speed. The philosophy, concepts and commands necessary to make effective use of 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 GNU/Linux and the ability to use it effectively in your own embedded development project. Prerequisites • Basic familiarity with using a GNU/Linux system (e.g. Ubuntu) as an end user in user space • Basic familiarity with a command line shell • Basic knowledge of user space/application development with GNU/Linux • Basic knowledge concerning embedded processors and development boards • Basic C programming knowledge • …and/or no fear to learn the above… Who should attend? Managers, project managers, software-, hardware-, development-, systems engineers, testers, administrators, technicians and other parties interested in the technology, who want to understand as quickly as possible how Embedded GNU/Linux works. You must use GNU/Linux or you have to luxury to decide whether it makes sense to use it or not. Maybe you already tried to use Embedded GNU/Linux, but are not quite sure that you did everything the right way. You currently use a different operating system and want to figure out whether GNU/Linux might be better and/or cheaper. Delivery Options All the training material is English, but the presentation of it can be in English or in German, as you wish, worldwide. • on-site - instructor driven*) • on-line - instructor driven**) • on-site/on-line combination - instructor driven*)**) During the training we’ll provide laptops*), boards*)**), workbooks (in English)*)**), remote access to servers and boards**), screen-sharing**), audio-bridge**). Check out our training delivery options (/index.php/trainings/training-overview) to see how we can present/customise our material to your specific needs. Feel free to contact us (/index.php/trainings/inquiry) for further inquiries. Course Outline Introduction • History of Unix/Linux • Licensing • Standards • Working with Free Software • Spelunking • Unix Philosophy Host playground • architecture • shell • FHS (file hierarchy standard) ◦ Devices, Daemon, Booting, Program Sections, Static/Shared Libraries • permissions ◦ Access Control, Changing Permissions, umask • hard/soft links • real/effective uid/gid Process/IPC • Intro ◦ What's an OS? ◦ What's a scheduler? ◦ Linux: scheduler, priorities, scheduling classes ◦ process/task/thread ◦ errno ◦ fork ◦ Process termination ◦ Process states ◦ Zombies ◦ More about Processes • IPC simple ◦ shell redirection, shelling out, tmpfiles • IPC Generic ◦ Message passing vs. shared memory • Advanced IPC ◦ pipes ◦ signals ◦ interrupted system calls ◦ message queues ◦ semaphores ◦ shared memory ◦ sockets ◦ select/poll • IPC techniques to avoid Embedded Specifics • Intro • Portability • Build ◦ Cross/Native toolchain Toolchains • C-Libraries ◦ glibc, uclibc, eglibc, others ◦ reduce shared lib size Eval Board • Booting ◦ How does LInux boot on a PC? ◦ How is an Embedded System different? • Booting the target ◦ Boot sequence, SD card and partitions Stuff Needed • Host ◦ Toolkit ◾ The Yocto Project ◾ Install Yocto SDK ◦ SD card ◦ screen ◦ minicom ◦ tftp server ◦ Root file systems ◦ Nfs server • Target ◦ U-Boot ◾ Das U-Boot ◾ Scripting ◾ Fancy stuff ◾ Spash Screen ◾ U-Boot environment from Linux ◾ Post mortem ◾ Automatic SW update ◾ How to contribute? ◾ Get/Configure/Build/Install ◾ Commands ◦ Flat device tree ◾ What is a flat device tree? ◾ Device tree compiler ◾ Examples/Documentation ◦ Linux kernel ◾ Get ◾ Kbuild ◾ Multi Platfrom Support ◾ Configure/Build/Install ◾ Get/configure/build install ◾ What is uImage? ◾ Build fdt ◾ In-tree kernel modules Rool File Systems • Available root file systems • prepare minimal-dev rootfs • tftp server • rootfs on ramdisk • mtd • rootfs on jffs2 • mtdparts • rootfs on cramfs • rootfs on ro ext2 • build/execute what's applicable from above on the target board • rootfs comparison Customizations • System hangs • pseudo tty • getty • runlevel • static ip • mount nfs • ssh server User Space Debugging • Debugging Intro ◦ What's a bug? ◦ Types of bugs ◦ Debugging strategy • Simple tools ◦ lsof, ltrace, strace,... ◦ procfs, top, netstat, syslog,... • Advanced tools • What’s a debugger? • gdb ◦ host gdb ◦ target gdb ◦ gdb remote debugging ◦ gdb remote debugging with GUI User Space Profiling/Tracing • Profiling/Tracing tools ◦ strace ◦ system timers ◦ gprof ◦ gcov ◦ code optimization ◦ oprofile ◦ perf • top an friends ◦ top ◦ latencytop ◦ powertop ◦ powerdebug • crash Real-time • prerequisites ◦ Kernel vs. User Space ◦ interrupts ◦ reentrant code • Real-time Intro ◦ What is Real-time ◦ Determinism • Real-time Linux ◦ Hypervison ◦ Dual kernel ◦ Fully preemtive kernel ◦ 0 Vanilla Linux kernel ◦ 1 explicit preemption points ◦ 2 implicit preemption points ◦ 3 real-time preemption patch ◦ fully preemptive kernel ◦ hard real-time extensions • Adeos/Xenomai ◦ adeos patch ◦ xenomai ◦ patch/config/build kernel ◦ run it on board • Real-time myths ◦ must be fast ◦ rate monotonic ◦ universal methodology ◦ scheduling theory ◦ RTOS vs. Linux ◦ New hardware ◦ Dual kernel vs. Preempt-rt ◦ Future outlook Dual kernel ◦ Future outlook Preempt-rt Please fill in this form (/index.php/trainings/inquiry) if you have further questions regarding this or any other training and do not hesitate to contact us (/index.php/misc/contact-us)if you have any further questions. Public EGLiSA Embedded GNU/Linux Systems Architecture (/index.php/component/jevents/eventdetail/118/91|100|103/embeddedgnu-linux-systems-architecture?Itemid=1) public, 5-day training class 04 Jun 2018 Munich/Germany, in German GUARANTEED TO RUN Embedded GNU/Linux Systems Architecture (/index.php/component/jevents/eventdetail/149/91|100|103/embeddedgnu-linux-systems-architecture?Itemid=1) public, 5-day training class 09 Jul 2018 Zurich/Switzerland Pick a Training (/index.php/component/jevents/eventdetail/145/91|100|103/pick-atraining?Itemid=1) public/private, 2 to 5 day training class 23 Jul 2018 Europe, German/English TBD Pick a Training (/index.php/component/jevents/eventdetail/90/91|100|103/pick-atraining?Itemid=1) public/private, 2 to 5 day training class 27 Aug 2018 Europe, German/English TBD You are here: Home (/index.php) / Trainings (/index.php/trainings) / Embedded (/index.php/trainings/embedded-training-overview) / embedded training (/index.php/trainings/embedded-training-overview/85-embeddedtraining) / Embedded GNU/Linux Systems Architecture (http://creativecommons.org/licenses/by-nc-sa/4.0/) This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (http://creativecommons.org/licenses/by-nc-sa/4.0/)