1st course in the Advanced Embedded Linux Development​.

Instructor: Dan Walkes

This course provides an overview of System Programming for the Linux operating system, or software which is interfacing directly with the Linux Kernel and C library. The basic components of a Linux Embedded System, including kernel and root filesystem details are discussed. The Buildroot build system is introduced, which students use to build their own custom Embedded Linux system through programming assignments.

Prior knowledge needed: 

  • Knowledge of C Programming and embedded computer architecture.
  • Working knowledge of Linux command line operations, shell programming, Git, makefiles

Learning Outcomes

  • Write shell scripts to automate tasks.
  • Create a cross compile environment using scripts and existing tools.
  • Write C code functions which demonstrate the use of system calls to invoke Linux processes.
  • Design scripts which build a barebones kernel and root filesystem bootable with QEMU.
  • Design a socket server based application which builds and runs natively on a Linux host machine.
  • Incorporate the socket server based application into a Buildroot based QEMU Embedded target build.

Syllabus

Duration: 11 hours

In this module, you will learn about Linux shell scripting and System Programming concepts.  You will also understand the basics of an Embedded Linux toolchain and setup a cross-compiler.

Duration: 10 hours

In this module, you will learn the basics of File IO for Linux.  You will understand the basics of Process Management, process forking, and Linux daemons.  You will build your own Linux kernel and root filesystem, boot and run on QEMU.

Duration: 12 hours

In this module, you will learn the basics of Threading and Multi Thread Synchronization in Linux system programming using POSIX.  You will also learn about the Buildroot build system and build a QEMU Image using Buildroot.

Duration: 12 hours

In this module, you will learn the fundamentals of signal handling and time management in Linux System Programming.  You will learn the basic components of Embedded Linux debugging.  You will implement a socket server application and deploy on a QEMU based Embedded System using Buildroot.

Duration: 3 hours

This module contains materials for the proctored final exam for MS-EE degree students. If you've upgraded to the for-credit version of this course, please make sure you review the additional for-credit materials in the Introductory module and anywhere else they may be found.

To learn about ProctorU's exam proctoring, system test links, and privacy policy, visit www.colorado.edu/ecee/online-masters/current-students/proctoru.

Grading

Assignment
Percentage of Grade

Assignment 1: Bash Scripting Basics

5%

Quiz: Intro to System Programming

5%

Assignment 2: File Operations and Cross Compiler

10%

Q​uiz: File I/O

5%

Q​uiz: Processes

5%

Assignment 3 Part 1

5%

Assignment 3 Part 2 10%
Assignment 4 Part 1 5%
Assignment 4 Part 2 10%
Quiz: Signals 5%
Quiz: Time 5%
Assignment 5 Part 1 5%
Assignment 5 Part 2 10%

Final Exam

15%

Letter Grade Rubric

Letter Grade 
Minimum Percentage

A

93%

A-

90%

B+

87%

B

83%

B-

80%

C+

77%

C

73%

C-

70%

D+ 67%
D 60%

F

0%