Real-Time Embedded Systems Lab
School of Computing, Informatics, and Decision Systems Engineering
Ira A. Fulton School of Engineering, Arizona State University
Home Contact us Site Map
Faculty People


CSE 438/598 Embedded Systems Programming

The course provides the opportunities for students to learn various fundamental issues as well as practical developments in the area of embedded systems programming. After completing the course, students will be able to

1.      Understand the design issues of embedded software and gain an in-depth knowledge of development and execution environment on target processors.

2.      Understand the functions and the internal structure of device interfaces, drivers, and real-time operating systems.

3.      Acquire the skill to develop multi-threaded embedded software in target environment, including good quality and coding style for embedded programming, and testing and debugging approaches to verify embedded software operations.

4.      Develop feasible task scheduling and carry out system performance and task schedulability analyses.

A proper target development environment will be adopted for teaching and software development. An embedded platform, with rich architectural features, will be used to investigate embedded software characteristics, DMA and IO operations in high-speed data planes, PCIe, and mmp devices, and to experience system design and development practices.


Textbook Book:

  • Writing Linux Device Drivers: a guide with exercises, Jerry Cooperstein, ISBN: 978-1448672387

Reference material:

Real-time Systems, by Jane Liu, Prentice Hall; ISBN: 0130996513.

Intel IA32 Software developer’s manual, Atom processor and ICH8 Datasheet

The Linux Kernel Module Programming Guide, Peter Jay Salzman, Michael Burian, and Ori Pomerantz, 2007, ver 2.6.4.

Linux Device Drivers (3rd Edition) Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman, 2005

Debugging Embedded Linux, Christopher Hallinan, 2007

Programming PCI-Devices under Linux, Claus Schroeter, Linux-PCI Support

Prerequisites by Topic

1.      CSE 230 Computer Organization

2.      CSE 325 Embedded Microprocessor Systems


Course Content: (75minutes/lecture)
  • Introduction: characteristics of embedded applications, concurrency and timing constraints, embedded system development environment (1 lecture) [Slide_1]
  •  Linux Modules and Device Drivers: Software structure of a device driver, Linux loadable kernel module, user program and kernel interface (3 lectures) [Slide_2]
  • Linux threading and synchronization: Threads in Linux and Vxworks, Task state transitions, Syncronization, Producer/Consumer problem (2 lectures) [Slide_3]
  • Intel Embedded Processor: Current trends, IA32 processor, Memory model, Modes of operation, Protected mode memory management, System memory map, Interrupts and Exceptions, APIC, Interrupt handling, Overview of Architecture: North-bridge and South-bridge, IO controller Hub (4 lectures) [Slide_4]
  • PCI and PCI Express Bus Architecture: Device controllers, programming approaches,  plug and play concept,interconnection architecture and high speed serial buses, PCI express (4 lectures) [Slide_5]
  • I2C driver in Linux: Software structure of an I2C Linux driver  Accessing I2C devices from user space, 'I2C-dev' module (2 lectures) [Slide_6]
  • Linux interrupt processing and kernel threads: Preemptive context switching, Interrupt handling,  Bottom halves: Softirqs, Tasklets, Worqueues (2 lectures) [Slide_7]
  • Linux input systems: Software structure of Input system, Event handling with an example of PS2-mouse,  Threaded Irqs (2 lectures) [Slide_8]
  • Embedded software programming: Task model and specification, deadlocks and distributed deadlock prevention,  imprecise computation, overrun management, asynchronous transfer of control, setjmp and longjmp, exception handling in C and C++ (4 lectures) [Slide_9]
  • Scheduling algorithms and analysis: cyclic scheduling, rate-monotonic scheduling, EDF, resource sharing, priority inheritance, deadlock analysis, and schedulability analysis (6 lectures) [Slide_10]


All design and development projects will be carried out in the real-time embedded systems laboratory which is located in the 2nd floor of Brickyard Building. The lab consists of PCs with Linux and Windows operating systems, and Eclipse IDE. The target boards are Intel Atom mini-ITX boards.

AIMB 212 Atom mini-ITX board



·         Assignment 1 --  A Device Driver for Shared Queues with Timestamping

·         Assignment 2 --  A Nunchuck Driver with Asynchronous SMBus Transfer

·         Assignment 3 --  Mouse Input, Event Handle, and Imprecise Computation

·         Assignment 4 --  Signal and EDF scheduling in vxWorks

·         Assignment 5 --  Real-time Task Model in vxWorks


Project Presentations and Reports (CSE 598):

·          Object-oriented IPC, D-bus and CORBA -- Yu Zhang, Duo Lu                                                                          [Presentation slides]

·          Binary Translation -- Ajey Achutha, Mahesh Kumar                                                                                        [Presentation slides]

·          USB Interface and Driver -- Jubin Mehta, Koshik Samota                                                                                [Presentation slides]

·          Exception Handling -- Dipal Saluja, Nikhil Kulkarni                                                                                         [Presentation slides]

·          Hardware Debugging using GDB, OpenOCD and JTAG --Dheeraj Chidambaranathan, Imtiyaz Hussain       [Presentation slides]

·          Memory Leak Detection -- Rahulkumar Thakkar, Tarun Vyas                                                                         [Presentation slides]

·          LINUX Trace Tools -- Tarun Sharma, Sharath Koday                                                                                        [Presentation slides]

·          Android Architecture and Binder -- Dhinakaran Pandiyan, Saketh Paranjape                                                 [Presentation slides]

·          Performance Monitoring Unit -- Aman Singh, Anup Buchke                                                                            [Presentation slides]

·          Uboot and Redboot - A Comparitive Study -- Jeevan Prasath S, Tejas Krishna                                               [Presentation slides]

·          Event driven Sensor Systems -- Chetan Fegade, Nikhil Mascarenhas                                                            [Presentation slides]



Our Research
Our Goal
We do research on  Real-time Java, Embedded Software and Systems, Smart homes, and so on...
To build reliable real-time embedded system, contribute computer engineering community and make our future better.

 Copyright [2011] [RTES, School of Computing, Informatics, and Decision Systems Engineering. Arizona State University]. All rights reserved