This repository contains projects for the Real-Time Applications & Embedded Systems course (ENCS4330) at Birzeit University. Each project focuses on different aspects of real-time systems, including multi-processing, multi-threading, inter-process communication (IPC), and synchronization techniques under Linux.
- Description: A multi-processing application that simulates a bungee jumping game involving three teams of players. The simulation uses signals and pipes for coordination between the referee and players. The goal is to manage the energy levels of players and compute scores based on their performance.
- Technologies: Multi-processing, signals, pipes, OpenGL.
- Directory: Project 1 Directory
- README: Project 1 README
- Description: A multi-processing application that simulates the creation, handling, and management of CSV files using IPC techniques. The simulation involves file generators, calculators, movers, and inspectors.
- Technologies: Multi-processing, shared memory, semaphores, OpenGL.
- Directory: Project 2 Directory
- README: Project 2 README
- Description: A multi-processing and multi-threading simulation of a counter espionage agency. The simulation involves resistance groups, civilians, and counter espionage agency members, with the goal of protecting resistance members from enemy spies.
- Technologies: POSIX threads, multi-processing, IPC, OpenGL.
- Directory: Project 3 Directory
- README: Project 3 README
- Description: An interactive memory-based game using a 16F877A PICMicro microcontroller. The game involves 4 color LEDs, 4 push buttons, and a 16x2 character LCD. Players replicate LED light sequences using the push buttons, and the LCD provides instructions and feedback.
- Technologies: 16F877A PICMicro, MPLAB IDE, Assembly language, Proteus for schematic design.
- Directory: Project 4 Directory
- README: Project 4 README
-
Clone the Repository:
git clone https://github.com/qossayrida/RealTimeProject.git
-
Navigate to a Project:
- For example, to access Project 2:
cd RealTimeProject/Project2
- For example, to access Project 2:
-
Build and Run:
- Use the
Makefile
in each project directory to build and run the simulation.make make run
- Use the
-
Clean Up:
- To remove object files and the executable:
make clean
- To remove object files and the executable:
- C Programming: Core implementation language for all projects.
- POSIX Threads (Pthreads): Used for multi-threading in Project 3.
- Inter-Process Communication (IPC): Shared memory, pipes, and semaphores are used for communication and synchronization.
- OpenGL: Used for graphical visualization in Projects 2 and 3.
- Makefile: For building and managing the projects.
- Configuration Files: Each project uses a
config.txt
file to load user-defined settings, avoiding hard-coded values. - Debugging: Use
gdb
for debugging. Compile with the-g
flag to include debugging symbols. - Realism: The simulations are designed to be realistic, with user-defined thresholds and random events.
- Qossay Rida
- Mohammed Fareed
- Ahmad Hamdan