Hello,
I've tried to use recent 6.3 version with linuxgpio programmer enabled
and have failed with it with messages like "Can't export GPIO 31,
already exported/busy?: Device or resource busy". But it have turned
out, that the problem is with the typo in format string used in
"snprintf()" calls to create gpio pin filename: it specifies "%ud" for
unsigned integer value instead of just "%u", that's why we have likes
"31d" names, which "/sys/class/gpio/export" refuses to export.
The patch is applied. Hope it's helpful.
Best regards,
Alexey Chernov
diff -urB avrdude-6.3/linuxgpio.c avrdude-6.3-patched/linuxgpio.c
--- avrdude-6.3/linuxgpio.c 2016-02-15 23:16:32.0 +0300
+++ avrdude-6.3-patched/linuxgpio.c 2016-10-10 00:59:28.0 +0300
@@ -66,7 +66,7 @@
return fd;
}
- len = snprintf(buf, sizeof(buf), "%ud", gpio);
+ len = snprintf(buf, sizeof(buf), "%u", gpio);
r = write(fd, buf, len);
close(fd);
@@ -84,7 +84,7 @@
return fd;
}
- len = snprintf(buf, sizeof(buf), "%ud", gpio);
+ len = snprintf(buf, sizeof(buf), "%u", gpio);
r = write(fd, buf, len);
close(fd);
@@ -95,7 +95,7 @@
{
char filepath[60];
- snprintf(filepath, sizeof(filepath), "/sys/class/gpio/gpio%ud/value", gpio);
+ snprintf(filepath, sizeof(filepath), "/sys/class/gpio/gpio%u/value", gpio);
return (open(filepath, O_RDWR));
}
@@ -104,7 +104,7 @@
int fd, r;
char buf[60];
- snprintf(buf, sizeof(buf), "/sys/class/gpio/gpio%ud/direction", gpio);
+ snprintf(buf, sizeof(buf), "/sys/class/gpio/gpio%u/direction", gpio);
fd = open(buf, O_WRONLY);
if (fd < 0) {
___
avrdude-dev mailing list
avrdude-dev@nongnu.org
https://lists.nongnu.org/mailman/listinfo/avrdude-dev