Assignment Learning Outcomes
These are the expected learning outcomes for each of the assignments. They are subject to change for future assignments.
As1: Reaction Game (Hello-World)
- Setup host development environment
- Linux skills to configure host for cross-compile
- Linux skills to access target from host (SSH & serial)
- Linux skills to access host's files from target (NFS)
- Efficiently write, compile, deploy and test a C program
- Target customization
- Create script to easily mount NFS
- Change Linux welcome message for SSH
- Change device hostname
- Run program on log-in
- Programming skills and tools
- Write a C program to coordinate hardware inputs, and hardware outputs
- Write a C program to manage time: track time passing, pause for a duration of time
- Write multi-file C program with separation between application and hardware-specific code
- Use CMake to organize and cross-compile a C application
- Embedded system: Access hardware
- Configure target to allow access to GPIO and LEDs
- Read GPIO input pins (joystick) through file access
- Drive LEDs via Linux LED driver through file access
As2: Light Dip (Linux)
- Programming skills and tools
- Create application with modular architecture; provide clear high-level module interfaces which encapsulate implementation details inside cohesive modules
- Write multithreaded application with threadsafe memory access
- Dynamically allocate, use, and free memory with pointers
- Use Valgrind to check for memory leaks, invalid memory access, and unfreed memory on exit
- Use network to support receiving commands and replying to commands
- Correct use of static functions for internally linked functions
- Write clean C code: consistent naming, clear formatting, easy to read logic
- Cross-debugging a simple program using GNU Debugger's command-line
- Embedded system: Analysis and design skills
- Map output pins to display segments
- Analyze real-time data (detect light-dips)
- Analyze timing jitter in different real-time parts of the application
- Understand use of a photoresistor
- Embedded system: Linux
- Configure I2C devices
- Configure A2D devices
- Embedded system: Access hardware
- Read A2D sensors (POT and light intensity)
- Control I2C device (14-seg display)
As3: Beat-box
- Programming skills and tools
- Create modular multithreadded application
- Read and access PCM audio data from file
- Generate low-level audio output to ALSA in real-time by manually mixing PCM data
- Respond to real-time events (time, network, and user input) to trigger events (play sound)
- Modify and serve an embedded Node.js web page to report device status and control device functionality via network interface
- Use Valgrind to check for correct memory access
- Cross-compiling an application to use ALSA
- Embedded system: Analysis and design skills
- Mix PCM sound data to build real-time audio output frames
- Respond to real-time inputs
- Debounce noisy inputs
- Read an I2C part's datasheet to understand how to control it
- Embedded system: Linux
- Configure BBG to load audio drivers
- Use ALSA configurations and programs setup and test audio output
- Embedded system: Access hardware
- Audio output
- Read real-time data from I2C device (accelerometer)
As4: PRU
Details TBA.
As5: Linux Kernel
Details TBA.