This course examines the hardware and software technologies behind real-time, embedded computer systems. From smart kitchen appliances to sophisticated flight control for airliners, embedded computers play an important role in our everyday lives. Hardware topics include microcomputers and support devices (e.g., flash, ROM, DMA, timers, clocks, A/D, and D/A), as well as common applications (e.g., servo and stepper motor control, automotive sensors, and voice processing). Software topics focus on unique aspects of embedded programming and include interrupts, real-time control, communication, common design patterns, and special test considerations. The course also explores the unique tools that are used to develop and test embedded systems. Labs, beginning with using Bare Metal and Free RTOS on Arduino for simple devices and culminating with using Linux on Raspberry-Pi for Quad-Copter flight control, are developed.
The goal of this course is to provide both practical and theoretical information about the field of real-time embedded programming.
- Select a microcontroller
- Specify the necessary peripherals
- Choose a compatible software development environment and real-time operating system
- Analyze timing constraints, and Design, Build, and Fly a QuadCopter
When This Course is Typically Offered
This course is offered on-line in the Spring and Fall
- Simon-Hardware Fundamentals
- Simon-Advanced Hardware Fundamentals
- Simon-Software Control with Interrupts
- Simon-Embedded Software Architectures
- Simon-Real Time Operating Systems
- Simon-RTOS Services
- Simon-Basic Design Using a Real-Time Operating System
- Simon-Embedded Dev Tools and Debugging Techniques
- Molloy-Raspberry Pi Basics
- Molloy-Interfacing and Programming
- Molloy-Interfaces to I/O and Buses
- Molloy-Real Time Interfacing using the Arduino
- Molloy-Images, Video, and Audio
- Molloy-Cross Compilation in Eclipse
Student Assessment Criteria
Projects including Requirements, Design, Implementation, and Output are submitted to Blackboard as a single .pdf and demonstrated via providing hyperlink in pdf to a video you record. (PdfCreator is useful)
Each module has a quiz and discussion and there are 10 projects which build to a flying quadcopter
10% off when late and per week late on projects unless medically or otherwise excused, max of 30%
Computer and Technical Requirements
Working knowledge of C/C++, Java or Python or whatever language you select to use to develop
Students decide whether to work on projects alone, in pairs, or groups of three, but as this is an online class you might decide to work alone if you are not geographically near any other student
Textbook information for this course is available online through the MBS Direct Virtual Bookstore.
There are notes for this course.
Final Words from the Instructor
This course teaches how to program Real-Time embedded systems. Students are provided a QuadCopter Kit, Legs, and Camera for the major projects, but students will need to procure an Arduino starter kit which has parts for the initial projects, and a Raspberry PI complete starter kit which has a strong plastic case for flight. For the Arduino and RPi, a starter kit is available from lots of places, but Amazon or AdaFruit are convenient. Term specific material, homework submittal, and grading is on the Blackboard site at blackboard.jhu.edu.
(Last Modified: 01/29/2020 08:49:03 AM)