gpio_watchdog_feed-8.ino
Muestra cómo interactuar con GPIO a través de sysfs para un mecanismo de seguridad simple en la plataforma LoongArch.
Compile con gcc -o watchdog_gpio watchdog_gpio.c. Bajo Loongnix/LxAMP, exporte el GPIO vía /sys/class/gpio/export antes de la ejecución. Este ejemplo usa el bus GPIO de 20 pines. Para una solución robusta, prefiera la interfaz /dev/watchdog soportada por el SoC Loongson 2K1000.
gpio_watchdog_feed-8.ino
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <string.h>
#define GPIO_PATH "/sys/class/gpio/gpio100/" // Exemple à adapter au schéma BPI-5202
#define LED_PATH GPIO_PATH "value"
int main() {
int fd = open(LED_PATH, O_WRONLY);
if (fd < 0) {
perror("Impossible d'ouvrir le GPIO. Vérifiez l'exportation du pin.");
return EXIT_FAILURE;
}
printf("Démarrage de la boucle Watchdog (Toggle GPIO toutes les 2s)...\n");
printf("Note : En production, utilisez /dev/watchdog (SoftDog ou HardDog Loongson).\n");
int state = 0;
while (1) {
if (lseek(fd, 0, SEEK_SET) != 0) {
perror("Lseek error");
break;
}
if (state) {
write(fd, "1\n", 2);
} else {
write(fd, "0\n", 2);
}
state = !state;
// Si le processus meurt, un watchdog matériel externe ou interne
// pourrait détecter l'absence de toggle ou utiliser /dev/watchdog
sleep(2);
// Simulation de travail lourd ou gel ici
}
close(fd);
return EXIT_SUCCESS;
}