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()
他们。
我正在尝试为 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()
他们。