IT 441
Catalog Data: (3:2:3) F Prerequisite: IT 344.
Real-time embedded systems development using microprocessors and microcontrollers.
Multitasking, hardware/software interfacing, operating systems, and various CPU
architectures.
Textbook(s):
- Data books for Microchip PIC 18xxx microcontrollers including User’s manual
for chip, User’s manual for MPLAB development environment, User’s and
reference manuals for C compiler.
Online and manufacturer’s documentation for PC104 systems
Reference Book(s):
- On-line reference materials for Linux.
- Documentation (online or CD-ROM) for current Lab version of Linux installed in lab.
Recommended Book(s):
Class website:
http://www.et.byu.edu/groups/it441/start.html
Class Coordinator: RH
Goals:
- Students will gain an understanding of the role of embedded systems as part of the
overall structure of computing systems and ubiquitous computing.
- Design an embedded computer for a multi-part application. Be able to do this for
more than one type of embedded computer. Be able to generalize this to multiple
embedded system architectures.
- Evaluate the trade-offs between commercial, custom and no operating system approaches
to embedded computing
- Understand and be able to design within real-time constraints.
- Learn to use commercially available resources rather than a textbook for designing
new systems (Professional design practice and also life-long learning)
Prerequisites by topic:
- Programming in a modern high-level language, which supports structured programming,
such as C, C++ or Java.
- Design background sufficient to interface digital peripherals to computers with
consideration for protocols, signal types, timing, voltage, current and power levels.
Outcomes
- Describe the characteristics that define embedded systems. Be able to identify embedded
systems in various applications.
- Describe the relative market penetration of embedded vs. desktop computer systems.
Describe the variety of microcontroller architectures, operating systems and development
environments
- Define real-time and IO concepts for embedded systems
- Describe Microcontroller (uC) architectures. Justify the use of architecture features
for specific applications. (eg with/without memory management architecture)
- Analyze and describe at least one CPU, suitable for embedded systems, which includes
memory management features.
- Read and write ASM and C code for at least one leading microcontroller.
- Use software development tools for embedded systems
- Describe and use A/D systems and Sampling principles for A/D. Apply these principles
on at least one embedded platform.
- Describe and use interrupts (1)
- Describe and use serial control (1)
- Be able to use Linux1 (desktop) for normal applications including file-structure,
launching applications, coding and network communications
- Apply an embedded platform with OS to solving embedded applications (lab/project)
- Use basic networking on an embedded platform (with an OS)
- Explain the necessity, and structure of device drivers for embedded systems with
OS. Obtain and install at least one device driver.
- Build a system in which multiple different types of embedded system are communicating
with each other. Use the system to control and monitor IO devices remotely.
- Be able to analyze and categorize multiple embedded architectures such as: PC104,
Intel 8051, StrongARM, Motorola M68HC11, ATMEL RISC, etc.
Note 1: An alternative OS can be substituted for Linux provided it has similar capabilities
and is well accepted for embedded systems applications
Laboratory projects: Build embedded Microcontroller system (no
operating system and a second embedded system which uses a common operating system
(Linux) with real-time I/O constraints.
Use commercially available design documentation (datasheets) rather than a textbook
to solve design problems.
Laboratory topics (topics do not necessarily correspond to individual lab exercises):
- Minimal microcontroller. Build a functioning microcontroller with just power, oscillator,
reset and one input (switch) and one output (LED). Learn to use all the standard
development tools.
- Program a “hello real world” (switch operates LED through software)
- Program digital I/O using Assembly and/or C language. Produce simple patterns on
LEDs using switches as inputs.
- Digital I/O using C language. Control a stepper motor.
- Analog inputs.
- Interrupts
- Serial Communications
- Linux embedded system. (PC 104) Hello PC 104 World / NFS
- (PC 104) Digital Input/Output
- (PC 104) Analog Interface Design
- (PC 104) Ethernet Communications
- Multi-System Data Acquisition (DAQ) Design (3 week exercise)
Laboratory Equipment:
Microchip microcontroller PICDEM2 Development board (2 students per)
CPUs for development board obtained by donation from Microchip.
Oscilloscope, DMM, PSU (5+12V)
PC104 modules with Linux OS, analog and digital IO, Serial and Ethernet comms.
Computer Equipment:
Desktop development platform with
Microchip MPLAB IDE and
Microchip C18 compiler. (runs under Windows)
Linux OS:
Desktop development system running Linux with software development tools (compiler
debugger etc.) and libraries appropriate for the PC104 systems.
Written and oral communication requirements:
Written lab reports for each lab experience.
Reports on development environments used
Math Analysis: None
Library or other Research Projects: Students are required to find
the technical documentation they need from professionally available sources. This
is used and reported on in their labs. They are also required to develop an instruction
sheet for developing code on each embedded system they use in labs.
Life-long learning experiences: This class requires the students
to use commercially available documentation rather than a conventional textbook.
This is part of the course objectives and is intended to educate them both to the
wealth of technical information available to the practicing professional and also
to the techniques to extract useful information from documentation prepared by those
who mostly wish to sell something.
Prepared By: R. Helps
Date Revised: Dec 2004