Summer Short Course on Embedded Systems Programming
来源:互联网 发布:php源码怎么本地测试 编辑:程序博客网 时间:2024/05/29 03:13
本文转载至: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
- Summer Short Course on Embedded Systems Programming
- CSE 438/598 Embedded Systems Programming
- Using ODB on Mobile and Embedded Systems
- 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
- Embedded Systems Architecture programming and design--Chapter 2 Processor and Memory Orgnisation Summary
- 新的学习旅程——从《Programming Embedded Systems in C and C++》开始
- Embedded systems interview questions
- Building Embedded Linux Systems
- Embedded Systems Memory Types
- The Java(TM) Tutorial: A Short Course on the Basics (3rd Edition)
- The Java Tutorial: A Short Course on the Basics, 4th Edition (The Java Series)
- Programming Embedded Systems with C and GNU Development Tools, 2nd Edition (OReilly, 2006)的读书终于完成
- 献给面试学生 关键字const是什么意思 ESP(译者:Embedded Systems Programming) --Dan Saks概括了const的所有用法
- GNU Tools for Embedded Systems
- BusyBox simplifies embedded Linux systems
- Design of Embedded Systems (DES)
- 改变自己,带动激情,让人生更有意义
- Javascript 缓冲运动——逐行分析代码,让你轻松了解缓冲运动的原理
- vc++ 删除二维数组指针
- STL vector中remove()与erase()使用
- Ubuntu下bin文件的安装
- Summer Short Course on Embedded Systems Programming
- B. Painting Pebbles
- JAVA随心笔记
- 用哪个函数创建线程(AfxBeginThread)
- Log Parser 2.2 如何运作
- Activiti入门——轻松解读数据库
- 三层数据库四大法宝之“增”
- Ubuntu下搭建 Eclipse+NDK for Android JNI 的开发环境
- yii2 用命令行操作web下的controller