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 BF527microprocessor. 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 processFrom 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