LinuxDays 2026

Podpora interruptů a debuggingu pro výukový VHDL RISC-V procesor
04.10.2026 , 111
Jazyk: Čeština

Dozvíte se, co vše bylo potřeba navrhnout pro přidání zpracování interruptů a zprovoznění source-level debuggingu na výukovém pipelined RISC-V procesoru. Na jednoduchém příkladu v simulaci si také ukážeme, co se během debugování kódu na RISC-V jádře pomocí GDB děje pod pokličkou - od příkazu zadaného v terminálu až po jeho vykonání na samotném procesoru.


Základem pro popisovaný projekt je v jazyce VHDL navržený RISC-V procesor RVapo, který je pokračováním jednoho z úspěšnějších návrhů procesorových jader navrhovaných v rámci domácích úkolů předmětu Pokročilé architektury počítačů vyučovaného na ČVUT FEL. Jádro v jazyce VHDL implementoval Ing. Eduard Lavuš a Ing. Damir Gruncl ho dále rozšířil do podoby použitelné jako koprocesor pro řízení PMSM motorů na systému s čipem AMD/Xilinx Zynq.

V minulém semestru realizovaná práce pak přidává podporu interruptů a CSR registrů podle RISC-V specifikací a dále přidává subsytém pro debugging a krokování simulovaného procesoru. Na ten je možné se napojit z GDB nebo jeho grafických nástaveb a debugovat programy na úrovni assembleru i zdrojového kódu.

Jedná se tak o výukovou pomůcku, která nabízí záznam a následnou analýzu signálů uvnitř procesoru. Je tedy vhodným doplňkem a rozšířením základní výuky se simulátorem QtRvSim, který je více interaktivní, ale nejde do všech detailů.

V přednášce se nejprve zaměříme na to, jak RISC-V specifikace definuje zpracování interruptů a jak bylo v projektu implementováno. Uvidíme, že ve skutečnosti od sebe základní mechanismus pro interrupty a pro debugging nemá zase tak daleko. Posléze si přiblížíme, jaké možnosti podpory debuggingu RISC-V specifikace nabízí, které z nich byly implementovány, a jak připojit GDB ke GHDL simulaci procesoru.

Na jednoduchém praktickém příkladu v terminálu a grafickém frontendu DDD si ukážeme, jak GDB komunikuje s běžící simulací RVapo jádra a co vše se děje na pozadí při běžném debugování.


Obtížnost: Pokročilí

Cybernetics and robotics student at CTU FEE with an interest in low-level computing.

He studied cybernetics and robotics at CTU FEE, where he currently teaches and works on projects using GNU/Linux and other processor technologies. He participates in the design of the firmware and electronics for laboratory and medical devices, and precise servo control at PiKRON.com. He provides consultations to more companies in the field as well.

Tento přednášející je uvedený také u: