Online Digital Forensics Courses and Labs
Building a Low-cost and State-of-the-art IoT Security Hands-on Laboratory
Funded by National Science Foundation (NSF)
Funded by Cyber Florida
IoT Design and Implementations
Home
Lecture Notes
Assignment
Lab 1: ARM Assembly Checksum, LED Drivers, ISRs
- Objective: Introduce the students to the MSP432 and the ARM process as well as Thumb; allow students to gain knowledge in C-to-Assembly, Assembly-to-C, communication to peripherals using I2C, MSP432 Interrupts, SYSTICK, and Low Power Mode.
- Tasks:
- Lab Manual: pdf
- Lab Slides: pdf
- Provided Code: zip
Lab 2: G8RTOS Scheduler and Sempahores
- Objective: Introduce the students to the basics of OS and a creation of a simple RTOS integrating sensor inputs and RGB LED outputs with round-robin scheduling to establish a good baseline for later labs exploring more complex types of semaphores, and schedulers.
- Tasks: Incorporate a fletcher-16 checksum with C and Assembly, configure the RGB Driver based on LP3943 and I2C communication, configure the SYSTICK, and enter Low Power Mod. Students need to understand threads, thread control blocks, context switching, scheduler, critical sections, thread addition, and basic semaphores. To show how well their RTOS works, students will create a program with 3 threads reading inputs from an accelerometer, gyroscope, and light sensor. Lab 3 focuses on the improvement of the RTOS created in Lab 2.
- Lab Manual: pdf
- Lab Slides: pdf
- Provided Code: zip
Lab 3: Periodic Threads, Blocking, Sleeping, and FIFOs
- Objective: Introduce the students to more complex semaphores, blocked threads, yielding, sleeping, periodic threads, and FIFO’s. Show students ways to free up CPU time, implement inter-process communication with FIFO’s, and to introduce more peripheral features with TI backpacks.
- Tasks: Improve their semaphores to be implemented with the scheduler, add blocking features to threads, and introduce yielding to the scheduler, implement a sleeping feature to the threads, add periodic threads, and FIFO’s are added to RTOS for more complex thread intercommunication.
- Lab Manual: pdf
- Lab Slides: pdf
- Provided Code: zip
Lab 4: Thread Priority, Dynamic Thread Creation and Destruction, Aperiodic Events, and Interfacing with an LCD
- Objective: Introduce the students to the benefits of a priority scheduler, dynamic creation and deletion of threads, and aperiodic events by allowing them to create a fun game that incorporates the LCD touchscreen, accelerometer, and improved RTOS.
- Tasks: Finishing an LCD touchscreen library, adding functions to dynamically create and destroy threads, incorporate aperiodic event threads, and convert the round-robin scheduler into a priority scheduler.
- Lab Manual: pdf
- Lab Slides: pdf
- Provided Code: zip
Lab 5: Incorporating IoT with an RTOS
- Objective: Introduce the students to WIFI about its capability of their complex RTOS and the design of a two-player pong game which can be run at 30 fps on the LCD screen and played by two students wirelessly.
- Tasks: Utilize the WIFI backpack, create communication functions, add algorithms to complete fast drawing of the pong paddles and balls, add UDP packets for multiplayer functionality, and adding collisions for scoring purposes.
- Lab Manual: pdf
- Lab Slides: pdf
- Provided Code: provided header file
Lab 6: Final Project
- Objective: Examine the students' understanding of the class by exploring the MSP 432 RTOS students have created.
- Tasks: Create something they thought would be impossible at the beginning of the class. It will incorporate all the things learned in the class and build upon all the labs. Final projects include very complex single player games, less complex 2-4 player games, and everything in between.
- Lab Video: Mango project video