gpio_blink_riscv.ino
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;
}