Hallo,
ich habe ein C-Programm geschrieben/kopiert, mit dem ich ein eine andere
Datei schreiben kann. Ich kann das Programm auf mein Zielsystem kopieren
(ein AVR32-Linux-System), dort ausführen und alles läuft soweit super.
Um es auf das Zielsystem (also einen zweiten Linux-Rechner) kopieren und
debugen zu können, verwende ich den gdbserver.
Während ich debuge gelingt es mir eine Nachricht auf der Console
auszugeben. Möchte ich dann jedoch die Datei (mit dem Namen "export")
zum Schreiben öffnen, bekommt mein FilePointer jedesmal den Wert NULL
zurück. Ich hoffe jemand kann mir hier einen Tipp geben, was ich falsch
mache. Auf dem Zielsystem funktioniert es ja schon mal. Sowohl für die
zu öffnende Datei als auch für das erstellte Programm sollten die
Schreib-/Leserechte ok sein:
1 | /home/avr32 # ls -al
|
2 | -rwxr-xr-x 1 avr32 users 46061 Dec 31 23:11 mein_programm.elf
|
3 |
|
4 | /sys/class/gpio # ls -al
|
5 | -rw-r--r-- 1 root root 4096 Dec 31 23:11 export // <-- zu öffnende Datei
|
Dies ist mein Code, bei dem ich (wegen den NULL-Pointer) in die Schleife
zum Programmabruch springe, wenn ich per remote/gdbserver debuge:
1 | FILE *fp;
|
2 |
|
3 | int main(int argc, char** argv)
|
4 | {
|
5 | printf("* Welcome to PIN Blink program *\n");
|
6 |
|
7 | if ((fp = fopen("/sys/class/gpio/export", "ab")) == NULL)
|
8 | {
|
9 | printf("Cannot open export file.\n");
|
10 | exit(1); // im Debug-Modus lande ich hier
|
11 | }
|
12 | ... // beim Starten auf dem System geht es jedoch weiter
|