Raspberry Pi Zero -> Raspbian

OP #5964210
Nabend,

ich komme nicht weiter :(
Versuche gerade mit dem PI und wiringPi ein paar GPIO´s zum leben zu 
bekommen.

1
/*
2
*       GPIO
3
*/
4
#include <stdio.h>
5
#include <wiringPi.h>
6

7
int main(void)
8
{
9
         if (wiringPiSetup()==-1)
10
         {
11
                 return 1;
12
         }
13
         else
14
         {
15
                printf("\r\nInit_OK");
16
         }
17
//       pinMode(0,INPUT);
18

19
        while(1)
20
        {
21
//              printf("\r\nStart\r\n");
22
        }
23

24
        return 0;
25
}

Sobald ich die Funktion "pinMode(..)" wieder mit einbinde und das 
Programm kompiliere und ausführen will, kommt ein "Segmentation fault" 
zurück.

Ich weiß ehrlich gesagt nicht mehr weiter..

Das ganze wird mit "gcc" wie folgt aufgerufen..
1
gcc -o led led.c -lwiringPi
Dabei entstehen keine Fehler. Beim ausführen jedoch der besagte.
Gast #5964236
Vielleicht helfen ja die Infos von folgender Seite:

http://wiringpi.com/reference/setup/

......
One of the setup functions must be called at the start of your program 
or your program will fail to work correctly. You may experience symptoms 
from it simply not working to segfaults and timing issues.

Note: wiringPi version 1 returned an error code if these functions 
failed for whatever reason. Version 2 returns always returns zero. After 
discussions and inspection of many programs written by users of wiringPi 
and observing that many people don’t bother checking the return code, I 
took the stance that should one of the wiringPi setup functions fail, 
then it would be considered a fatal program fault and the program 
execution will be terminated at that point with an error message printed 
on the terminal.

        If you want to restore the v1 behaviour, then you need to set 
the environment variable: WIRINGPI_CODES (to any value, it just needs to 
exist)
.......
.......
    wiringPiSetup (void) ;

This initialises wiringPi and assumes that the calling program is going 
to be using the wiringPi pin numbering scheme. This is a simplified 
numbering scheme which provides a mapping from virtual pin numbers 0 
through 16 to the real underlying Broadcom GPIO pin numbers. See the 
pins page for a table which maps the wiringPi pin number to the Broadcom 
GPIO pin number to the physical location on the edge connector.

This function needs to be called with root privileges.
............

Welche Version benutzt du? Vermutlich v2 die immer 0 zurückgibt.
Hast du dein Programm als Root gestartet?
Stimmt das Pin Mapping für den Pi Zero?
OP #5964240
Rasputin schrieb:
> Welche Version benutzt du? Vermutlich v2 die immer 0 zurückgibt.
> Hast du dein Programm als Root gestartet?
> Stimmt das Pin Mapping für den Pi Zero?

Moin,
also ich nutzen die neuste Version 2.xx.
Ich habe mein Programm so gestartet:
1
sudo ./led
jedoch mit dem gleichen Problem.

Sollte das Mapping nicht erstmal egal sein?
Gast #5964324
Jan H. schrieb:

> also ich nutzen die neuste Version 2.xx.
Dann wird die Abfrage "if (wiringPiSetup()==-1)" nie wahr werden, wenn 
du nicht die Environment Variable "WIRINGPI_CODES" definierst und ihr 
irgendeinen Wert gibst. Das ist für dein aktuelles Problem aber 
vermutlich egal.

Du solltest aber die Environment Variable "WIRINGPI_DEBUG" definieren 
und ihr irgendeinen Wert zuweisen, dann sollte WiringPi diverse Debug 
Infos ausgeben die dir vielleicht einen Hinweis auf die Problemursache 
geben.
OP #5967489
Rasputin schrieb:
> Jan H. schrieb:
>
>> also ich nutzen die neuste Version 2.xx.
> Dann wird die Abfrage "if (wiringPiSetup()==-1)" nie wahr werden, wenn
> du nicht die Environment Variable "WIRINGPI_CODES" definierst und ihr
> irgendeinen Wert gibst. Das ist für dein aktuelles Problem aber
> vermutlich egal.
>
> Du solltest aber die Environment Variable "WIRINGPI_DEBUG" definieren
> und ihr irgendeinen Wert zuweisen, dann sollte WiringPi diverse Debug
> Infos ausgeben die dir vielleicht einen Hinweis auf die Problemursache
> geben.

Habe ich gemacht. Kommen jedoch keinerlei Meldungen.
Gast #5967973
Also in Deinem Programm ist kein Fehler.
Installiere das Paket wiringPi noch mal neu.
Hast Du GPIO im in config.txt oder setup aktiviert?

Hier das Blinkbeispiel von http://wiringpi.com/examples/blink:

#include <wiringPi.h>
int main (void)
{
  wiringPiSetup () ;
  pinMode (0, OUTPUT) ;
  for (;;)
  {
    digitalWrite (0, HIGH) ; delay (500) ;
    digitalWrite (0,  LOW) ; delay (500) ;
  }
  return 0 ;
}

 then to compile and run, you would enter:

gcc -Wall -o blink blink.c -lwiringPi
sudo ./blink
Moderator Persönliche Seite #5970038
Jan H. schrieb:
> Rasputin schrieb:
> Jan H. schrieb:
>
> also ich nutzen die neuste Version 2.xx.
>
> Dann wird die Abfrage "if (wiringPiSetup()==-1)" nie wahr werden, wenn
> du nicht die Environment Variable "WIRINGPI_CODES" definierst und ihr
> irgendeinen Wert gibst. Das ist für dein aktuelles Problem aber
> vermutlich egal.
> Du solltest aber die Environment Variable "WIRINGPI_DEBUG" definieren
> und ihr irgendeinen Wert zuweisen, dann sollte WiringPi diverse Debug
> Infos ausgeben die dir vielleicht einen Hinweis auf die Problemursache
> geben.
>
> Habe ich gemacht. Kommen jedoch keinerlei Meldungen.

Hast Du die Variable auch exportiert? Sonst kommt die niemals in Deinem 
Programm an.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.