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


 

0 0