2016-07-25 13 views
0

Ich versuche, eine Speicherkarte für einen GPIO-Wert zu erstellen. Der gpio-Pin ist dem Speicher/sys/class/gpio/gpio45/value zugeordnet.mmap/sys/Klasse/gpio/gpioX/Wert -> ENODEV

int fd = open(file.c_str(), O_RDWR); 

    if(fd == -1){ 
     return false; 
    } 

    struct stat fileStat; 
    int statRes = fstat(fd, &fileStat); 
    if(statRes == -1){ 
     close(fd); 
     return false; 
    } 

    errno = 0; 
    char* res = (char*)mmap(NULL, static_cast<size_t>(fileStat.st_size), PROT_READ | PROT_WRITE,   MAP_SHARED, fd, 0); 

errno wird auf 19 gesetzt -> ENODEV. die Binärdatei läuft als root.

Ist etwas nicht in Ordnung oder muss ich spezielle Kernel-Funktionen aktivieren? thx für Ihre Hilfe.

Antwort

0

Mit Ausnahme von bin-Dateien sind sysfs-Einträge normalerweise nicht mappbar. Sie müssen read() oder write() ihnen.