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
Summer Short Course on Embedded Systems Programming
转载上一篇:淘宝技术发展历程
![](https://ucenter.51cto.com/images/noavatar_middle.gif)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
读书笔记《Building embedded linux systems》Chapter 2
继续努力,开始学习第二章:基本概念。 对于嵌入Linux,需要先熟悉Linux系统,有很多,也将有更多的Linu
linux 读书 嵌入式操作系统 linux内核 网络