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

 

Summer Short Course on Embedded Systems Programming

July 7 to July 18, 2014

Zhejiang University, HangZhou, Zhejiang, China

Sponsored by Intel Education

    

The course was taught in Zhejiang University, Summer 2014. It provided the opportunities for students to learn various fundamental issues as well as practical development skill in the area of embedded systems programming. The goals of the course were to let student

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

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

  • 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.

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

The target development environment used in the course was Intel's Galileo board. The board, with its rich architectural features, was used to investigate embedded software characteristics and IO operations, and to experience system design and development practices.

 

Reference material:

  • Intel® Quark SoC X1000 Core Developer’s Manual
  • Intel® Quark SoC X1000 Datasheet
  • Real-time Systems, by Jane Liu, Prentice Hall; ISBN: 0130996513.
  • The Linux Kernel Module Programming Guide, Peter Jay Salzman, Michael Burian, and Ori Pomerantz, 2007, ver 2.6.4, http://www.tldp.org/LDP/lkmpg/2.6/lkmpg.pdf.
  • Linux Device Drivers (3rd Edition), Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman, 2005
  • Writing Linux Device Drivers: a guide with exercises, Jerry Cooperstein, ISBN: 978-1448672387
  • Debugging Embedded Linux, Christopher Hallinan, 2007

Prerequisites 

1.       Computer organization

2.     Data structures

3.     C/C++ programming

Note that it will be very helpful if you have some knowledge of  Operating Systems and Computer architecture.

Course Schedule: (20minutes/lecture, 4 lectures/day)

Date

Classes (4 20-minutes lectures/day)

Lab and self-study (3 hours/day)

Monday, July 7

Introduction, Linux loadable modules

Exercise: data structures for Linux device drivers

Tuesday, July 8

Linux device driver

Lab: Linux  loadable module

Wednesday, July 9

Quark SOC and Galileo architecture

Exercise: Galileo board design and GPIO programming

Thursday, July 10

Linux ISR and device driver

Exercise: user-level I2C programming

Friday, July 11

Thread and kernel synchronization

Lab: I2C-based EEPROM driver

 

 

 

Monday, July 14

Embedded programming

Exercise: setjmp and longjmp

Tuesday, July 15

Embedded programming

Lab: signal and asynchronous control

Wednesday, July 16

Real-time scheduling and analysis

Self-study: course review

Thursday, July 17

Real-time scheduling and analysis

Lab: real-time task management

Friday, July 18

Real-time scheduling and analysis

Final exam

Lecture slides and videos:

Lecture

Topic

Slide

Video

1

Introduction

ESP-ppt-01

ESP-video-01

2

Trends of Embedded Systems

ESP-ppt-02

ESP-video-02

3

ES Development Environment

ESP-ppt-03

ESP-video-03

4

Linux Kernel Modules

ESP-ppt-04

ESP-video-04

5

Linux Device Driver Basics

ESP-ppt-05

ESP-video-05

6

Basic Data Structures for Device Driver

ESP-ppt-06

ESP-video-06

7

Quark SOC and Galileo

ESP-ppt-07

ESP-video-07

8

x86 Memory and Interrupt

ESP-ppt-08

ESP-video-08

9

x86 System Architecture and PCI Bus

ESP-ppt-09

ESP-video-09

10

PCI Configuration

ESP-ppt-10

ESP-video-10

11

PCIe – An Introduction

ESP-ppt-11

ESP-video-11

12

Quark I2C Interface

ESP-ppt-12

ESP-video-12

13

Linux GPIO & I2C Drivers

ESP-ppt-13

ESP-video-13

14

Interrupt Processing in Linux

ESP-ppt-14

ESP-video-14

15

Linux ISR and Work Queue

ESP-ppt-15

ESP-video-15

16

Work Queue and Input Processing in Linux

ESP-ppt-16

ESP-video-16

17

Input Processing in Linux

ESP-ppt-17

ESP-video-17

18

Task Model

ESP-ppt-18

ESP-video-18

19

pthread Programming

ESP-ppt-19

ESP-video-19

20

Synchronization Mechanisms (1)

ESP-ppt-20

ESP-video-20

21

Synchronization Mechanisms (2)

ESP-ppt-21

ESP-video-21

22

RT Task Model

ESP-ppt-22

ESP-video-22

23

Overrun Management

ESP-ppt-23

ESP-video-23

24

Signaling

ESP-ppt-24

ESP-video-24

25

Kernel Signal Mechanism

ESP-ppt-25

ESP-video-25

26

Synchronous Model

ESP-ppt-26

ESP-video-26

27

Model and Cyclic Scheduling

ESP-ppt-27

ESP-video-27

28

EDF

ESP-ppt-28

ESP-video-28

29

Rate Monotonic Scheduling

ESP-ppt-29

ESP-video-29

30

Response Time Analysis

ESP-ppt-30

ESP-video-30

31

Interrupts and non-RM Tasks

ESP-ppt-31

ESP-video-31

32

Priority Inversion

ESP-ppt-32

ESP-video-32

33

RT Synchronization Protocol (1)

ESP-ppt-33

ESP-video-33

34

RT Synchronization Protocol (2)

ESP-ppt-34

ESP-video-34

35

RT Synchronization Protocol (3)

ESP-ppt-35

ESP-video-35

36

Aperiodic Server

ESP-ppt-36

ESP-video-36

37

A Case Study

ESP-ppt-37

ESP-video-37

38

WCET Analysis (1)

ESP-ppt-38

ESP-video-38

39

WCET Analysis (2)

ESP-ppt-39

ESP-video-39

40

Multicore Embedded Systems

ESP-ppt-40

ESP-video-40

 


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
userIP($remaddr , $msg , $from); ?>