Embedded systems are omnipresent in our environment, e.g. implementing media players, cell phones, or realizing complex control systems in a car. The majority of embedded systems use one or more microprocessors for control and data processing, which is assisted by some generic or specialized hardware. A successful computer engineer needs to be well versed in both software and hardware aspects to master the design and implementation of such complex embedded systems.
This course (EECE 4534) will introduce you to practical microprocessor-based system design issues, such as system specification, understanding hardware capabilities (e.g. embedded processor organization; addressing modes; memory hierarchy; parallel and serial bus protocols), hardware/software co-design aspects, mastering hardware/software interfaces and the design of device drivers.
The course is tightly integrated with the mandatory laboratory (EECE 4535) in which you have the opportunity to practically realize the theoretic aspects of the lecture. The lab has two parts. The first portion gradually introduces you to embedded systems through a set of ready made exercises (e.g. light dimmer, controlling a servo motor, voice recorder, real-time voice transmission). These exercises require you to design, construct, and debug hardware and software (C and some assembly) that runs on a common embedded platform using the BlackFin BF527 microprocessor. The second portion of the lab allows you to explore a project of your own choosing within a team. Each team will specify, design and implement a complete embedded system, integrating hardware and software.
- Embedded systems characteristics and challenges
- Systematic design process
- From specification to implementation
- System specification (Models of Computation)
- Embedded processor organization
- Addressing modes
- Memory hierarchy
- Communication architecture
- Parallel busses
- Serial busses (RS232, I2C, SPI)
- Hardware/Software Interface
- Interface design
- Electrical characteristics and buffering
- Device drivers
- Interrupt handling
- Exception handling
- Sensors (e.g.D/A, A/D)
- Direct Memory Access (DMA)
- Embedded system programming (C, assembly)
- Real-time processing
- When should I take the course?
My recommendation is to take it before capstone. MANY concepts in the course can be applied to the capstone project. Conversely, if you take it in your last year. You will learn after (hopefully surviving) capstone on how to design an embedded system, run a project and be organized. Considering that the course has a significant project portion, the workload towards the end of the semester can be quite high if taken in concurrently with capstone.
Lab schedule will be determined first week of class based on student preferences. Most likely, two lab schedules will be offered.