mmap /sys/class/gpio/gpioX/value -> ENODEV

mmap /sys/class/gpio/gpioX/value -> ENODEV

我正在尝试为 gpio 值创建内存映射。 gpio 引脚是内存映射到 /sys/class/gpio/gpio45/value。

    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 身份运行。

是不是出了什么问题,还是我必须启用特殊的内核功能? 谢谢你的帮助。

除 bin 文件外,sysfs 条目通常不可映射。你必须 read()write() 他们。