gpio_blink_riscv.ino

Efinix Sapphire RV64 : Configurable 64-bit RISC-V SoC for FPGAs · File : gpio_blink_riscv.ino · Language : C (RISC-V) · Use case : Faire clignoter une LED via les GPIO configurés dans Efinity.

Minimalist example to control a GPIO via direct memory access, ideal for testing the RISC-V compilation chain.

Configure a GPIO block in Efinity and note its base address. Compile with riscv64-unknown-elf-gcc. Load the binary onto the FPGA via JTAG or bootloader mode. Verify behavior on the development board's physical LEDs.

gpio_blink_riscv.ino

#include <stdint.h>
#include "platform.h"

// Adresse de base des GPIO (à vérifier dans votre configuration Efinity)
#define GPIO_BASE 0x80000000
#define GPIO_OUT  (*(volatile uint32_t *)(GPIO_BASE + 0x00))
#define GPIO_DIR  (*(volatile uint32_t *)(GPIO_BASE + 0x04))

void delay_ms(uint32_t ms) {
    // Boucle simple de délai (imprécise, à remplacer par un timer pour la prod)
    for (volatile uint32_t i = 0; i < ms * 10000; i++);
}

int main() {
    // Configurer le pin 0 en sortie
    GPIO_DIR |= (1 << 0);
    
    while (1) {
        GPIO_OUT ^= (1 << 0); // Toggle LED
        delay_ms(500);
    }
    return 0;
}

← Back to the board