Summer Short Course on Embedded Systems Programming

本文转载至: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


 

嵌入式系统是一种特殊的计算机系统,它通常被设计用来控制、监控或执行特定任务。嵌入式系统由硬件和软件两部分组成,硬件包括微处理器、存储器、输入输出设备和各种传感器/执行器等。软件则是用于控制硬件和执行特定功能的程序。 嵌入式系统广泛应用于各个领域,例如消费电子产品(如智能手机、电视、洗衣机等)、自动驾驶汽车、医疗设备、航空航天等。这些系统需要满足严格的实时响应和可靠性要求,因此嵌入式系统的设计需要考虑到资源限制、功耗、安全性和可维护性等因素。 嵌入式系统的开发需要采用特定的开发工具和编程语言,如C、C++、汇编语言等。开发人员需要对底层硬件有较深入的了解,同时还需要考虑系统的功耗管理、内存管理、通信和数据处理等方面的问题。 随着物联网和人工智能的兴起,嵌入式系统的应用越来越广泛。现代嵌入式系统通常与云计算和大数据分析相结合,以提供更复杂的功能和服务。例如,智能家居系统可以通过嵌入式系统与云端进行通信,实现远程控制和监控。 总而言之,嵌入式系统是一种特殊的计算机系统,它在各个领域发挥着重要作用。它的设计和开发需要考虑到多种因素,包括硬件和软件的配合、实时响应、资源管理以及与其他系统的交互等。随着科技的发展,嵌入式系统的应用前景将更加广阔。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值