Summer Short Course on Embedded Systems Programming
2015-02-03 10:33
477 查看
本文转载至: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
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
相关文章推荐
- Important Programming Concepts (Even on Embedded Systems) Part V: State Machines
- The Java Tutorial: A Short Course on the Basics, 4th Edition (The Java Series)
- Using ODB on Mobile and Embedded Systems
- CSE 438/598 Embedded Systems Programming
- 献给面试学生 关键字const是什么意思 ESP(译者:Embedded Systems Programming) --Dan Saks概括了const的所有用法
- Blitz: a collection of software designed to support a university-level course on Operating Systems
- (updated on Mar 1th)Programming Mobile Applications for Android Handheld Systems by Dr. Adam Porter
- Programming Embedded Systems with C and GNU Development Tools, 2nd Edition (OReilly, 2006)的读书终于完成
- Projects:GTK on DirectFB for Embedded Systems
- Embedded Systems Architecture programming and design--Chapter 1 Summary
- Programming Embedded Systems: With C and Gnu Development Tools
- 献给面试学生 关键字const是什么意思 ESP(译者:Embedded Systems Programming) --Dan Saks概括了const的所有用法
- The Java(TM) Tutorial: A Short Course on the Basics (3rd Edition)
- Socket Programming on Android
- CS Install double Systems on PC (Win7 & linux)
- RecSys’16 Workshop on Deep Learning for Recommender Systems (DLRS)
- UNIX Systems Programming Programs
- Everything You Need To Know To Start Programming 64-Bit Windows Systems
- Device drivers on SMP systems
- Machine Learning week 9 quiz: programming assignment-Anomaly Detection and Recommender Systems