gpio_blink_riscv.ino
Ejemplo minimalista para controlar un GPIO mediante acceso directo a memoria, ideal para probar la cadena de compilación RISC-V.
Configure un bloque GPIO en Efinity y anote su dirección base. Compile con riscv64-unknown-elf-gcc. Cargue el binario en el FPGA mediante JTAG o modo bootloader. Verifique el comportamiento en los LEDs físicos de la placa de desarrollo.
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;
}