Skip to Content

Linux is rapidly emerging as the leading platform for embedded devices

using high-performance 32-bit and 64-bit processors. A March 2015 market study suggests that “open source, freely and/or publicly available” Linux will grow from 56.2 percent share of embedded unit shipments in 2012 to 64.7 percent in 2017. To remain relevant in the embedded computing world, you must know Linux.
This advanced course is designed to give you practical, hands-on experience in writing and debugging Linux-based application programs on real target hardware. You will install a cross-development environment and set up the Network File System to support rapid turnaround in the edit-compile-debug cycle. Development and debugging are a breeze with the Eclipse Integrated Development Environment.
Course Highlights:

  • Understanding the Host and Target environments and how they interact
  • Application development and debugging using the Eclipse IDE
  • Multi-threaded and network programming
  • Patching, configuring, and building the Linux Kernel
  • Device Drivers

Course Learning Outcomes:

  • Ability to set up and use a cross-development environment
  • Configure and implement the network file system to remotely mount a file system on a target board
  • Access peripheral hardware with or without device drivers
  • Gain experience with the Eclipse integrated development environment
  • Configure and build the Linux Kernel 

Software: Most required software is supplied with the Embedded Linux Learning Kit. You will also need to install a Linux Distribution (“distro” for short). The recommended distro is CentOS 7.2. ISO image files are available here:

Hardware: Students are expected to have the Embedded Linux Learning Kit from Intellimetrix for completing programming assignments. The kit is a fairly typical ARM-based single board computer (SBC) that might be used in an embedded device. It is offered at a substantial discount to UCSD students. There are no required textbooks required for this course.   

Course Typically Offered: Online in Fall and Spring quarters.

Prerequisites: This advanced course is intended for engineers and programmers involved in developing embedded computing systems and devices using the Linux Operating System. Students unfamiliar with Linux operating system are strongly advised to complete the course CSE-41333 Linux Operating System Fundamentals prior to enrolling in this course. Students must have solid knowledge of the material covered in CSE-40476 C/C++ Programming II: Dynamic Memory and File I/O Concepts and ECE-40291 Embedded Controller Programming with Embedded C

Students who possess proficient knowledge of these prerequisite courses as well as the bullet points below may enroll in this course. (no formal department waiver for the prerequisites is needed)

  • Fluency in C Programming
  • Some familiarity with basic digital hardware components such as network and serial ports
  • Some experience using Linux both from a command shell and a graphical desktop environment
  • Some experience debugging application code is helpful

Next Step: After completing this course, consider taking other courses in the Embedded Systems Engineering or Linux System Administration certificate programs.

Contact: For more information about this course, please email

Course Number: ECE-40105
Credit: 3.00 unit(s)
Related Certificate Programs: Embedded Systems Engineering