本文转载至:http://rts.lab.asu.edu/web_ESP_Summer2014/ESP_Main_page.htm
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