Problem mit Code Blocks

  • Hallo zusammen,

    ich habe mir vor ein paar Tagen einen Raspberry Pi zu gelegt. Heute wollte ich mit CodeBlock ein kleines Testprogramm schreiben, welches eine LED zum leuchten bringt.

    Dazu habe ich mir das besagte Programm heruntergeladen und installiert. Als Compiler verwende ich den von GCC, welcher schon als default eingestellt war.

    Um mit den GPIOs zu kommunizieren habe ich die bcm2835.h von dieser Seite: http://www.airspayce.com/mikem/bcm2835/ heruntergeladen. Die header Datei habe ich in der main.c inkludiert.

    Beim builden des der main.c in der das Testprogramm für die LED steht, kam folgende Fehlermeldung:
    main.c undefined reference to 'bcm2835_gpio_fsel'

    Kann mir jemand auf die Sprünge helfen?

    Desweiteren habe ich zum einarbeiten in das Thema Linux bzw. das Programmieren des Raspberrys in der Programmiersprache C nach Büchern gesucht und auch gefunden, gibt es allerdings von euch Empfehlungen für den kauf eines Buches?

    Danke und Gruß
    Steeef


  • Wie sieht denn Dein Code aus?

    So:

    Gruß


  • Und wo ist bitte Dein #include <bcm2835.h> ?

    Oh, das war noch die alte Version.. hier:

  • Hallo Steeef,

    Das hier

    Code
    BCM2835_GPIO_FSEL_OUTP(7, BCM2835_GPIO_FSEL_OUTP); //Setze Pin 7 als Ausgang

    kann nicht stimmen ... BCM2835_GPIO_FSEL_OUTP kann nicht einmal eine Funktion/ein Macro und gleichzeitig eine Konstante sein.

    EDIT:
    Sorry, Code::Blocks Geschichte vergessen:

    Da machst Du einen Rechtsklick auf das Projekt im Projects-Fenster und wählst "Build Options ..."
    Dann den Reiter "Search Directories" öffnen
    Dann "Linker" anwählen und "Add" ... hier dann das Verzeichnis auswählen, in dem die bcm... Lib installiert ist.
    Dann den Reiter links daneben "Linker Settings" öffnen ... add ... die bcm... Lib eintragen.

    Evtl bei den beiden Einstellungen mit dem Button "Copy ... to" die einstellungen in den Release-Zweig übernehmen.

    So, jezt aber ..

    cu,
    -ds-

  • Also ich würd das schon so machen wie es eigentlich vorgesehen ist..

    Code
    wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.26.tar.gz
    
    
    tar xfz bcm2835-1.26.tar.gz && rm bcm2835-1.26.tar.gz
    
    
    cd bcm2835-1.26
    
    
    ./configure && make check && make install

    Nach " make install " sieht man das u.a. bcm2835.h nach /usr/local/include/ kopiert wird

    In /usr/local/include/ liegen einige Header Dateien die über #include eingebunden werden und wo GCC danach suchen würde - die Standard Header liegen in /usr/include/ (zB string.h usw)

    Kompiliert man nun den Code aus Post#5 kommt eine Fehlermeldung:

    Code
    root@raspberrypi:~# gcc -o t t.c          
    t.c: In function 'main':
    t.c:7:23: error: called object '1' is not a function
    root@raspberrypi:~#

    Da aber auch das setzen des Pins als Ausgang falsch ist, korregiert man erstmal den falschen Code..

    Falsch:

    Code
    BCM2835_GPIO_FSEL_OUTP(7, BCM2835_GPIO_FSEL_OUTP);

    Richtig:

    Code
    bcm2835_gpio_fsel(7, BCM2835_GPIO_FSEL_OUTP);

    Korregiert man den Fehler und versucht erneut zu kompilieren, kommt nun eine andere Fehlermeldung:

    Code
    root@raspberrypi:~# gcc -o t t.c         
    /tmp/ccUmYccN.o: In function `main':
    t.c.text+0x10): undefined reference to `bcm2835_gpio_fsel'
    t.c.text+0x1c): undefined reference to `bcm2835_gpio_write'
    t.c.text+0x24): undefined reference to `bcm2835_delay'
    t.c.text+0x30): undefined reference to `bcm2835_gpio_write'
    t.c.text+0x38): undefined reference to `bcm2835_delay'
    collect2: ld returned 1 exit status
    root@raspberrypi:~#

    Aber bevor ich das jetzt weiter vorkau kannst dich erstmal auch selber an folgendem orientieren: http://elinux.org/RPi_Low-level_peripherals#C_3

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!