Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Piveline/rv-rtos8

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

132 Commits
132 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RV-RTOS8

Piveline: RV-RTOS8 logo image FreeRTOS porting on 8-stage pipelined RISC-V CPU with HDMI and keyboards

Repository Structure

  • /FPGA : Synthesizable Vivado project files on RV32 / RV64 implementations
  • /Firmware : FreeRTOS Kernel + Shell firmware source codes
  • /RTL : VerilogHDL RTL source codes for iverilog simulation

Current Progress

  • ✅ Rhealstone switch, preempt benchmark
  • 📝 Full function support for FreeRTOS and verification with other 4 Rhealstone benchmarks.

Overview

  • This repository is about implementing FreeRTOS Kernel on 8-stage pipelined bare-metal RISC-V processor from RV-IM100.
    • FreeRTOS:
      An open-source real-time operating system kernel providing preemptive scheduling, software timers, and inter-task communication for resource-constrained embedded systems.
    • RV-IM100:
      Design guidelines and performance analysis for 10 RISC-V 5- to 8-stage pipeline variants based on basic_RV32S and IMA_make_RV64, covering ISA extension scaling, pipeline-depth sweep, and 100 MHz(125) timing closure on Artix-7 FPGA.
  • To make the fully working computing system, we've also implemented HDMI display output interface with PS/2 keyboard input interface.
  • To verify the FreeRTOS implementation, we've benchmarked with Rhealstone within our original shell program.
    • Rhealstone:
      A benchmark suite for evaluating real-time operating system performance, measuring key metrics such as task switching time, preemption time, interrupt latency, semaphore shuffling, message passing, and deadlock breaking.
    • We couldn't fine the original source code of Rhealstone, so we've ported RTEMS Rhealstone to FreeRTOS.

Architecture

Core Architecture

72F8SP_core_architecture RV64IM72F_8SP Core Architecture block diagram
  • IF-IO-ID-EXR-EX-BR-MEM-WB : 8-Stage Pipeline
  • We've revised several modules for FreeRTOS support.
    • trap-exception logic modules for ECALL & timer tick interaction from FreeRTOS.
    • CSR for CLINT support
  • For more information, visit RV-IM100 repository

SoC Architecture

72F8SP_SoC_architecture 72F8SP_SoC Architecture block diagram
  • Designed CLINT module for timer tick interactions
  • Several modules added for UART TX, PS/2 keyboard input, HDMI display output

Environment

  • FPGA board
    • Digilent Nexys Video (AMD Xilinx Artix-7 XC7A200T-1SBG484C)
  • AMD Vivado 2025.2

Benchmarks

  • Rhealstone
    Table: Rhealstone-Derived Benchmark Results (FreeRTOS, 100 MHz)
Sub-benchmark RV32 (cycles/iter) RV64 (cycles/iter) RV64 Overhead
Task Switch 320 439 +37.2%
Task Preempt 1,073 1,264 +17.7%
image

Acknowledgment

Contributors

  • @T410N (Hyunwoo Kang) - Project Lead & Architecture design & Main debugging
  • @iGangs3597 (iGangs) - Shell develop & CSR modification
  • @kim0331-sketch (Jongwon Kim) - Exception/Interrupt Handling (CSR, CLINT) & Architecture block diagram
  • @DBTMDDN (Seungwoo You) - mstatus CSR Implementation & FreeRTOS Trap Logic Extension
  • @ghilmc1019 (ghilmc1019) - CLINT implementation & Trap Controller TIMER_INTERRUPT_IRQ handling logic design & Shell develop

Releases

Packages

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.