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.

Assignment Learning Outcomes