Embedded Systems - Educational Objectives
The best way to understand what you will learn in this class is to list the labs you will complete and the example projects we will build.
You will complete each lab on the real MSP432 board.
Introduction to Robotics
Electrical Circuits: Components such as resistors, capacitors, transistors, op amps, voltage regulators, and voltage references. Interfacing digital and analog circuits to the microcontroller.
Measurements of voltage, current, power, and energy.
Microcomputer Architecture: Understanding how the computer stores and manipulates data (characters, integers, and fixed-point numbers), the basic arithmetic and logical operations performed by the computer.
The understanding of embedded systems (a system with the computer hidden inside) using modular design and abstraction.
Software design and testing: Assembly language and C programming: considering both function and style.
Debugging and verification using a simulator and on the microcontroller (embedded systems typically do not have a print function).
Debugging techniques, such as breakpoints, scanpoints, profiles, monitors, voltmeters, oscilloscopes, logic analyzers. Design and implementation of elementary data structures, such as linked lists, stacks and queues.
I/O and I/O Abstraction: How input/output actually happens (the students wire up analog and digital signals to the MSP432 and measure them with a voltmeter),
synchronization, including switches, LEDs, LCDs, DACs, ADCs, and serial ports.
The implementation of an I/O driver (a set of programs that perform input/output).
Motor interfacing: Design of transistor-based motor controllers, and write pulse-width modulation software to adjust power to the motor. Interface tachometers to the microcontroller,
and write software to measure period, and hence determine motor speed.
Analog Interfacing: Analog to digital conversion (ADC), e.g., the students interface IR distance sensors to the ADC and write software that measures the distance from the robot to an object.
Digital to analog conversion (DAC), used to make simple sounds.
Understanding of the Nyquist Theorem and the Central Limit Theorem.
Real-time Motor Control: Interrupt synchronization, real-time sampling of sensor data, multithreaded synchronization and communication, and real-time signal processing.
Design and test of analog and digital filters to improve signal to noise ratio.
Design and test of robot controllers such as finite state machines, incremental controllers, proportional controller, integral controllers, PID controllers and fuzzy logic controllers.
Communication Systems and the Internet of Things: Introduction to communication, e.g., the students interface two microcontrollers together so that data can be sent from one system to another.
Design and implementation of Bluetooth communication with a smart device (cell phone) and Wifi communication that stores robot information to the cloud.
Volume 1 - Introduction to the MSP432 Microcontroller
Microcomputer Architecture: Understanding how the computer stores and manipulates data (characters, integers, and fixed-point numbers), the basic arithmetic and logical operations performed by the computer.
The understanding of embedded systems (a system with the computer hidden inside) using modular design and abstraction.
Programming: Assembly language and C programming: considering both function and style.
Software execution: Understanding how the computer executes instructions (fetch opcode, fetch operand, read data, operate, and write data).
Microcontroller fundamentals: The use of a microcontroller (strategic use of RAM ROM and I/O) Microcontrollers typically have a little RAM and a lot of ROM. Globals, locals and the heap go in RAM. Constants and programs go in ROM.
Debugging: Debugging and verification using a simulator and on the microcontroller (embedded systems typically do not have a print function). Debugging techniques, such as breakpoints, scanpoints, profiles, monitors, voltmeters, oscilloscopes, logic analyzers.
I/O: How input/output actually happens (the students wire up analog and digital signals to the MSP432 and measure them with a voltmeter), synchronization, including switches, LEDs, LCDs, DACs, ADCs, and serial ports.
I/O Abstraction: The implementation of an I/O driver (a set of programs that perform input/output).
Variables: Understanding, from an architecture standpoint, how local variables and parameters work (e.g., space on the stack is dynamically created, the local variable is accessed using stack-pointer relative addressing, then the space is deallocated).
Analog inputs: Analog to digital conversion (ADC), e.g., the students interface a slide potentiometer to the ADC and write software that measures the position of the slide, creating a display like “1.234 cm”.
Real-time processing: Interrupt synchronization, real-time ADC sampling (periodic timer interrupts), introduction to multithreaded programming.
Analog outputs: Digital to analog conversion (DAC), used to make simple sounds.
Communication Systems: Introduction to communication, e.g., the students interface two microcontrollers together so that data can be sent from one system to another.
Data Structures: Design and implementation of elementary data structures, such as linked lists, stacks and queues.
Volume 2 - Real-Time Interfacing to the MSP432 Microcontroller
Microcomputer Architecture ( review of Volume 1):
An introduction to the microcomputer, architecture, The Cortex M4 Instruction Set, Cortex M4 Addressing Modes, I/O and Memory Organization,
The memory map of the TM4C123 and TM4C1294.
Software Design: Data structures in C (arrays, tables, linked lists,
stacks, and fifo queues), writing quality programs in C, passing parameters
(conceptual and implementation levels), modular programming, verification and
testing, documentation.
Microcomputer Interfacing: Digital hardware, modules and signals, drivers,
registers, voltage/current/capacitance/inductance, voltage level conversion,
timing equations, and timing diagrams.
Parallel and Serial Input-Output: Parallel I/O devices, device driver
software, buffered input and output, table and linked list interpreters,
synchronous and asynchronous serial input-output, synchronization in
I/O devices, blind-cycle synchronization, busy-wait synchronization, interrupt
synchronization, polled interrupts, vectored interrupts, interrupt priority,
interthread communication, critical sections.
Component-level Interfacing: Keyboards, key debouncing, keyboard scanning techniques,
LED scanning techniques, LCD interfacing, graphics drivers, microphones,
speakers, compasses, accellerometers, GPS, ZigBee, and Wifi.
Data Acquisition Systems: Bridge circuits, op amps, low pass filters, instrumentation amplifiers, DAC, ADC, audio amplifiers.
Motor interfacing: Stepper motors, DC motors, pulse-width modulation, tachometers.
System-level Design: Requirements documents, Power sources, clock generation, PCB layout, low-power design, tolerance, testing, and ethics.
Internet of Things: Networks, wifi, smart objects, domain name system, TCP, UDP, sockets, and server/client.
Volume 3 - Real-Time Operating Systems for ARM Cortex-M Microcontrollers
Microcomputer Architecture and Interfacing ( review of Volumes 1 and 2):
An introduction to the microcomputer, architecture, The Cortex M4 Instruction Set, Cortex M4 Addressing Modes, I/O and Memory Organization,
Input/output on the TM4C123 TM4C1294, and MSP432 microcontrollers. Abstraction of I/O using a board support package (BSP)
High speed interfacing: Use DMA to implement high speed data transfer.
Thread Management: Thread control blocks, creating threads, switching threads, suspending threads, sleeping threads, and killing threads. Executing periodic real-time tasks.
Thread Communication and Synchronization: Semaphores, mailbox, FIFOs, Kahn Process Networks, monitors, path expression and deadlocks.
Thread Scheduling: Round robin, cooperative, priority, multilevel feedback queue, and shortest job first.
Memory and Process Management: Heap, process management, and dynamic linking/loading.
File Systems: Metrics, allocation, solid state disks, and examples.
Communication Systems: CAN, Ethernet, and the internet
Internet of Things: Bluetooth, network processor abstraction, CoAP, and MQTT
Real-Time Signal Processing: Interfacing, sampling, and the design and implementation of digital filters.
Robotic Systems: Actuators, sensors, odometry, PID controllers and fuzzy logic controllers.