CSE 237B: Software for Embedded Systems

Professor Rajesh K. Gupta, EBU3B 2120, 858 822-4391, rgupta@ucsd.edu, Office Hours: Wed 2-4

Course Code: 662013 Class meets TuTh 5:00 PM – 6:20 PM, EBU3B-2154


NO CLASS 11/17. WE MEET ON THURSDAY 11/19 AT 4:00 PM IN CSE 2217

Check class webpage on WEBCT.UCSD.EDU for class discussions, recordings, and to submit your homework.

Join Class Page on Facebook at http://www.facebook.com/group.php?gid=146512741243


Course Overview and Goals:
Given the constrained nature of the embedded system designs related to size, timing, power, reliability and mobility issues, software for embedded systems goes beyond traditional programming approaches to building software for embedded real and non-real time systems. A systems design perspective is needed that evaluates software cost-performance tradeoffs subject to various optimization criteria and tools. This course presents architectural design issues, system analysis and CAD tools for use in building systems and application software for use in embedded systems.

The goal of this course is to understand design and implementation of building software for embedded systems, management of design constraints related to size, power, and performance and its formulation into specific optimization problems.

Course Outline:

  • Programming languages for embedded systems: desirable characteristics of programming languages for embedded systems, low-level versus high-level languages, main language implementation issues: control, typing, exception handling, modularity and multi-threading. Major programming languages for embedded systems: Assembly, C/C++, Ada, Java and Esterel.
  • Time and time synchronization, timing characteristics of embedded systems: hard, soft and firm systems; fail-safe and fail-operational systems. Guaranteed-response, best-effort, event and time-triggered systems. Timing constraints in embedded systems.
  • Performance analysis of embedded systems: software timing characterization and analysis methods.
  • Runtime and Operating systems: real-time and non-realtime applications. Task assignment and scheduling: characteristics of tasks, task assignment and multi-tasking. Static and dynamic scheduling under constraints.
  • Memory management and synchronization for embedded software: mutual exclusion, deadlock, starvation and lockouts; priority assignment, inversion; event flags and signals.
  • Software optimization techniques under constraints: size, performance, embeddability metrics.
  • Compilation techniques for embedded software: code generation, retargetability, code optimization.
  • Virtualization in the small
  • Examples of embedded and real-time software systems. Real time databases: transaction handling and consistency management.


Lecture Notes: Tentative

 

  • Software Performance Estimation and Optimization

 

 


Project Area

Project Teams, Documents and Resources

 

Project Title

Project Team

Optimization/Evaluation Criteria

Resources/References

Mixed MOC implementation of skin detector

Matt Jacobsen, Mike Rose

Limited Bandwidth communication between components. Optimize processing to match input datarate.

Xilinx FPGA board with Microblaze, Linux Host

-- Mixed hardware/software implementations, profiling and highlevel partitioning of application codes.

Wireless health monitoring on mPlatform

Kristian Oftedal

Event driven design for maximized battery life. Network topology.

mPlatform (2 MSP430 modules), 1 ARM7 module, heart rate sensor, temperature sensor

Power-efficient compression

Sathyanaryanan Kuppuswamy

Minimize power use through combination of compression and transmission

Stargate platform

Task Scheduler on SHiMmer

Edoardo Regini,

Philippo Seracini

RT scheduling in a energy harvested sensor platform.

Look up PAL OS. Explore Time-Triggered options.

Packet processing on software processors

Erik Rubow

Packet processing rate measured against FPGA resources.

NetFPGA

-- Binary optimizations for FPGAs (Vahid)

Improving localization through assisted GPS

Hayden Gomes

Precision rated against processing/power

Android/G1

Integration of 6LoWPAN monitors on mobile device for power monitoring

Derick Johnson

 

<open, looking for a partner>

Scalability of the monitoring network

Android/G1, electrical power monitoring with wireless interface

Network Booting of an Embedded Device

Jonathan Brackbill

Device response time on the network?

Intel DBPXA272?/mPlatform/PSOC?

Mobile Console to Industrial Control System

Feng Zhang

Dustin Medeiros

Real-time monitoring and response to data from PLC

Android/G1

GPS augmentation?

Ashwini P

 

 

Lighweight Remote Invocation for Sensornets?

Chris Lei

 

 

Discovery and match of pictures with Facebook data

Benjamin Cichy

 

Connect with Jim Fowler

 

Sample projects

  • Tracking on iPhone: augment GPS with IMS data
  • Personal health monitoring using mPlatform
  • Accurate time synchronization
  • Improving real-time geolocation through NTRIPS augmentation
  • Power aware compression using arithmetic coding on the Stargate 2 platform
  • Sound source localization using an embedded microcontroller
  • Location tracker using GPS on DPAC modules
  • DSP coprocessing (using Code Composer Studio)
  • Feature Tracker using camera on iPAQ
  • Lightweight remote invocation for Sensornets
  • 3D acceleration sensing
  • Palm-integrated sensors using Altera FPGA boards
  • Security system using iButton and Kodak DC240
  • Digital camera as a measuring device
  • Hardware/device interface modeling for embedded sensors
  • Architectural modeling of embedded processors in EXPRESSION
  • DSP library functions for Morphosys
  • Timing optimization for DSP applications (Morphosys)
  • Compiler interface to AMRM Board
  • OS/RTOS Services for Energy Minimization (eCOS)
  • Embedded code library for iPaq platform
  • 802.11a MAC-layer implementation for Embedded applications

Here is a pointer to past projects and reports.

 

Pointer to some projects from MIT. Spring 08.


Here is a pointer to project suggestions by Prof. Yoav Freund on his Wiki page. While he looks for FPGA implementations, it is mainly because of reasons for embedding these. Can also be implemented on embedded platforms.

Resources

Here is a partial list of resources available for projects. This is only a starting point, if you need additional parts, allow for enough time to obtain these in your project plans.

Cypress PSOC:
3210 Evaluation Boards
3210 SDCARD Module Evaluation Kit
3214 Capsensing Evaluation Boards
3242 I2C Port Expander Evaluation Ki
3236 Pyroelectric Infrared Motion Sensor Evaluation Kit
3240 I2C-USB Bridge Kit

Intel DBPXA272 Development Stations: this platform is designed for experimenting with embedded wireless multimedia applications.  Your project can also be implemented using PXA27x DVK. We provide the DVK and a PC running windows and Linux. You are responsible for arranging for any other resources you need to complete the project. The tutorial file with instruction about how to configure the board, install the bootloader, operating system and how to execute applications on the board can be found at Mainstore_Setup.pdf.
GPS related hardware : Belkin, Garmin
OpenMoko Development Kit
iButton devices
Lego Mindstorms
Stargate2


 

Recommended Reading: There is no textbook for the course. Material will be drawn from a variety of sources. Lectures notes and selection of readings distributed in the class are your primary source of reference material. In addition, class material is drawn from the following books (listed in no particular order): (updated 10/1)

 

Primary References

1.      Burns and Wellings, "Real-time Systems and Programming Languages", Addison-Wesley, 1997. Primary text related to programming language issues. A more recent version of this book is 2001 that goes into real-time Java.

2.      M. Barr, A. Massa, “Programming Embedded Systems”, Second Edition, O’Reilly 2006. Available online.  Practical tips.

3.      Daniel Lewis, "Fundamentals of Embedded Software", Prentice-Hall, 2001. Practical tips a bit more formal that Barr but not much.

4.      G. C. Buttazzo, Hard Real-Time Computing Systems: Predictable Scheduling Algorithms and Applications, Second Edition, Springer, 2005. A good text on Real-time scheduling (EDF and rate monotonic scheduling, etc).

5.      H. Kopetz, "Real-time Systems," Kluwer, 1997.

6.      S. Allworth, "Introduction to Real-time Software Design," Springer-Verlag, 1984.

 

Secondary References

7.      A. Jantsch, Modeling Embedded Systems and SoCs - Concurrency and Time in Models of Computation: Morgan Kaufmann, 2003. Emphasis on modeling, with various MoCs (synchronous, process networks, FSMs, ...) and discussion of heterogeneous mixtures. Describes ForSyDe, a Ptolemy-like framework for heterogeneous MoCs (timed models, synchronous models and untimed models).

8.      W. Wolf, “Computers as Components: Principles of Embedded Computer Systems Design,” Morgan Kaufman, 2000. Focus on processor architectures.

9.      Gregory Pottie and William Kaiser, Principles of Embedded Networked Systems Design: Cambridge University Press, 2005. Physical layer communications, networking, energy management, databases, etc.

10.  Gomaa, "Software Design Methods for Concurrent and Real-time Systems," Addison-Wesley, 1993. Provides an overview of the software process design. Written from the point of view of a specific software system.

11.  R. Gupta, "Co-synthesis of Hardware and Software for Embedded Systems," Kluwer 1995. My thesis. Written from the pov of a hardware designer.

12.  Peter Marwedel, G. Goosens, "Code Generation for Embedded Processors," Kluwer Academic Publishers, 1995.

13.  C. M. Krishna, K. Shin, "Real-time Systems," Mc-Graw Hill, 1997. 

14.  A. S. Berger, Embedded Systems Design: An Introduction to Processes, Tools, & Techniques: CMP Books, 2002. Low level programming, ICE, JTAG, etc.