RPI

2016-04-09 10 views
1
içinÇapraz derleyici üzerindeki libwiringPi'yi bir RPI 3 model B'ye sahibim ve aygıtın SPI'sı ile etkileşimde bulunmak için küçük bir program derlemek istiyorum. Programı Linux masaüstümde yazıyorum, böylece programı derlemek istiyorum. Bunun için
buradan çapraz derleyici yüklediniz: http://wiringpi.com/download-and-install/
yazıyorum programı Web'den örneklerinden biridir (sadece emin olmak için: Ben witingPi kitaplığı kullanıyorum https://github.com/raspberrypi/tools
yüzden installaion için bu talimatları takip I) derlemek ve çalıştırabilirsiniz: derleme bölümü iyi çalışır:

RPI

#include <stdint.h> 
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <errno.h> 

#include <wiringPiSPI.h> 

#define CHANNEL 1 

void send3(uint8_t a, uint8_t b, uint8_t c) { 
    uint8_t buf[3]; 

    buf[0] = a; 
    buf[1] = b; 
    buf[2] = c; 
    wiringPiSPIDataRW(CHANNEL, buf, 3); 
} 

int main(int argc, char** argv) { 
    if (wiringPiSPISetup(CHANNEL, 4000000) < 0) { 
    fprintf (stderr, "SPI Setup failed: %s\n", strerror (errno)); 
    exit(errno); 
    } 

    printf("start\n"); 
    send3(0x40, 0x0A, 0x0B); 
    send3(0x41, 0x0A, 0x00); 
    send3(0x40, 0x00, 0xFF); 
    send3(0x40, 0x0C, 0xFF); 
    send3(0x40, 0x13, 0x00); 
    send3(0x40, 0x01, 0x00); 
    send3(0x40, 0x04, 0xFF); 
    printf("done\n"); 
    return 0; 
} 

sorun işe wiringPi kütüphanesi ile bağlantı parçasını alamayan olmasıdır ./arm-linux-gnueabihf-gcc -c /home/guy/main.c -o /home/guy/main.o -I /home/guy/toolchain/wiringPi/wiringPi
/home/guy/toolchain/wiringPi/wiringPi, wiringPi kütüphanelerinin ve başlıklarının yoludur. Derlemenin başarılı olduğundan (wiringPi başlıklarına erişimin başarılı olması) bu durumun iyi çalıştığından eminim.

Sonraki Ben wirinPi kütüphanesi ile kod bağlantı ve yürütülebilir oluşturmak için aşağıdaki komutu denedi: ./arm-linux-gnueabihf-gcc -L/home/guy/toolchain/wiringPi/wiringPi -o "AngleCalculator" /home/guy/main.o -lwiringPi

Bu başarısız oldu ve ben şu mesajı aldım: /home/guy/toolchain/wiringPi/wiringPi/libwiringPi.so: file not recognized: File format not recognized

Bazı mesajlar -static kullanarak önerdi Bağlantı sırasında bayrak ancak hala çalışmadı ve şu iletiyi aldım: /home/guy/toolchain/rpi2/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lwiringPi. Sanırım bu, wiringPi'nin statik bir sürümü olmadığı içindir.

RPI cihazında aynı bağlantı komutunu çalıştırmanın kendisi başarıyla çalışır. Bu hatanın nedenini bilmiyorum. Gcc cross derleyicisinin kullanmam gereken başka bir sürümü var mı? Belki başka bir wiringPi sürümünü kullanmalıyım?

Teşekkür

cevap

1

ilgili ayrıntılı araştırma yapılmış bu benim kötü olduğunu bulduk: wiringPi kütüphanesini indirirken, benim masaüstünün toolchain ile kurmuş
. Bu, pi'nin takım zinciriyle bağlantı kurmaya çalışırken bir hataya neden olan bir dosya yarattı.
Dosyayı pi'den masaüstüme kopyaladım ve her şey iyi çalıştı.