gpio_blink_riscv.ino

Efinix Sapphire RV64 : SoC RISC-V 64 bits configurable pour FPGA · Fichier : gpio_blink_riscv.ino · Langage : C (RISC-V) · Usage : Faire clignoter une LED via les GPIO configurés dans Efinity.

Exemple minimaliste pour contrôler un GPIO via des accès mémoire directs, idéal pour tester la chaîne de compilation RISC-V.

Configurez un bloc GPIO dans Efinity et notez son adresse de base. Compilez avec riscv64-unknown-elf-gcc. Chargez le binaire sur le FPGA via le JTAG ou le mode bootloader. Vérifiez le comportement sur les LEDs physiques de la carte de développement.

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;
}

← Retour à la fiche