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.