2016-07-25 1 views
0

gpio 값에 대한 메모리 맵을 생성하려고합니다. gpio 핀은/sys/class/gpio/gpio45/value에 매핑되는 메모리입니다.mmap/sys/class/gpio/gpioX/value -> 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는 19 -> ENODEV로 설정됩니다. 바이너리는 root로 실행됩니다.

잘못된 것이 있습니까? 아니면 특별한 커널 기능을 활성화해야합니까? 도움을 청하는 .

답변

0

bin 파일을 제외하고 sysfs 항목은 일반적으로 mmap '가능하지 않습니다. read() 또는 write()이어야합니다.