csr-reader

0
README.md

RISC-V Performance Counter Access via Custom Syscalls

Данный проект реализует механизм доступа к аппаратным счетчикам производительности RISC-V (

mcycle
,
minstret
) из пространства пользователя через добавление кастомных системных вызовов в ядро Linux.

Структура проекта

  • get_mcycle.c
    - Тестовое приложение (User-space), использующее новые сискаллы.
  • patches/
    - Диффы для автоматической модификации исходников:
    • 01-opensbi-mcycle.patch
      - Разрешение доступа к CSR в OpenSBI.
    • 02-linux-mcycle.patch
      - Добавление сискаллов в таблицу и ядро.
  • scripts/configure.sh
    - Скрипт проверки окружения, клонирования и патчинга.
  • build.sh
    - Полная сборка всех компонентов (OpenSBI, Kernel, App).
  • run_qemu.sh
    - Скрипт запуска эмулятора с собранными бинарниками.

Технические детали

  • Архитектура: RISC-V (64-bit, rv64gc).
  • Системные вызовы:
    • #462
      :
      sys_get_mcycle
      - возвращает значение регистра
      mcycle
      .
    • #463
      :
      sys_get_minstret
      - возвращает значение регистра
      minstret
      .
  • Окружение: QEMU Virt Machine, Linux Kernel v6.8, OpenSBI v1.2.
  • Режим запуска: Static Initramfs (тестовое приложение является единственным процессом
    init
    ).

Инструкция по запуску

1. Подготовка и конфигурация

Скрипт проверит наличие

qemu-system-riscv64
и кросс-компилятора
riscv64-linux-gnu-gcc
, скачает исходники и наложит патчи:

2. Сборка системы

Компиляция всех компонентов:

3. Запуск эмуляцмм