LAB PROJECTS


Questions and Communication Regarding the Labs
General discussions & information (goes to entire class): 18-349 at lists.andrew.cmu.edu
Specific queries (goes to instructor and TAs alone): 18349-staff at lists.andrew.cmu.edu

Lab 0 (Warmup): This lab is designed to acquaint you with the hardware and software development platforms that we will be using throughout the course.
Released: September 13, 6am EDT
Due: September 20, 6am EDT

Lab 1 (Optimization): This lab is designed to acquaint you with the assembly-language and high-level language optimizations that are useful in embedded systems.
Released: September 24, 6am EDT
Due: October 5, 6am EDT

Lab 2 Part 1 (ARM Linux Programming): Lab two consists of two parts which covers programming simple C applications, and the full software stack underneath them, down to the interrupt level. This first part focuses on the userspace implementation of this software stack.
Released: October 10, 2007, 1:30pm EDT
Due: October 26, 11:59pm EDT
Update: Due date extended two days to October 26th.

Lab 2 Part 1 Support Code: Support code required for (and to be modified in) Lab 2 Part 1.

GNU Assembler Programming Tips: A collection of tips that may prove useful when writing assembly code for 18-349 labs. This is specifically referenced for use in Lab 2 Part 1.

Lab 2 Part 2 (ARM "Bare-Metal" Programming): Lab two consists of two parts which covers programming simple C applications, and the full software stack underneath them, down to the interrupt level. This second part focuses on the kernel space implementation of this software stack.
Released: October 17, 2007, 3:30pm EDT
Due: October 29, 11:59pm EDT

Lab 2 Part 2 Support Code: Support code required for (and to be modified in) Lab 2 Part 2.
Updated: October 23, 2007 13:05pm EDT

U-Boot Standalone Application (Exports) API: Documentation for the U-Boot 1.1.4 Exports API, which is used for writing standalone applications in Lab 2 Part 2.

Lab 3 Part 1 (AVR Programming and LCD Control): Lab three consists of two parts which cover using multiprocessor communication to implement a two player game played between a person and the gumstix AI. Part one consists of using the Atmel ATmega128 microprocessor to handle timer interrupts, control an LCD/Keypad combo, and communicate using I2C and UART protocols.
Released: November 9, 2007, 3:30pm EST
Due: Novemeber 15, 11:59pm EST

Lab 3 Support Code: Support code to ease students transition to the AVR architecture.

Lab 4 (Task Scheduling and Synchronization): This lab focuses on building a simplified operating system, MyOS, which is a multitasking kernel that can manage a number of tasks and provide for task synchronization. We will provide you with a MyOS skeleton as a guideline to design and implement task scheduling and task synchronization.
Released: November 24, 2007, 1:00am EST
Part I Due: December 3, 11:59pm EST
Part II Due: December 7, 11:59pm EST

Lab 4 Support Code: Support code for the 349 RTOS.