This course assignment covers the fundamentals of Real-Time Embedded Systems to the implementation of a bare-metal preemptive kernel by developing bare-metal applications for the Raspberry Pi 3. It started with the general introduction of bit manipulation in assignment 1 to the advance concept and implimentation of multitasking using Rate Monotnic Scheduling to Eearliest Deadline First Dynamic scheduling.
Refer the README file of each assignment.
- Raspberry Pi 3 (RPi3) or Raspberry Pi 3B+
- UART connection for
a1p1project (115200 baud, 8N1) - GPIO access for LED control in
a1p2 - SD card for image deployment (FAT32 boot partition)
- Power supply (5V, minimum 2.5A recommended)
- Electronic Components: 270Ω resistor, LED, and breadboard cables
- ARM cross-compilation toolchain (
gcc-arm-none-eabi) - GNU Make utility
- Linux/WSL environment (recommended for build stability)
- Hardware-specific definitions for RPi3 (e.g.,
rpi-gpio.h,rpi-systimer.h)
To install the necessary tools on a Debian-based system (like Ubuntu or WSL), run:
sudo apt update
sudo apt install gcc-arm-none-eabi make- Generate the Image: Run the
makecommand in the project directory to create the.imgfile (e.g.,a1p1.imgora1p2.img). - Transfer: Copy the resulting
.imgfile to the boot partition of your SD card. - Configure: Rename the file to
kernel7.img(the default for RPi3) or update theconfig.txtfile on the SD card by adding the line:kernel=your_file_name.img. - Boot: Insert the SD card into the Raspberry Pi 3 and power on the device.