我使用嵌入式Linux作为NIOS II处理器和设备树。 GPIO功能提供一次读取或写入一个位的功能。我有一些固件和PIOS,我想通过一次设置或读取所有32位原子读取或写入。似乎会有一个通用设备驱动程序,如果设备树具有适当的兼容性,则会存在允许打开设备然后读取和写入设备的驱动程序。我搜索了这个功能,但没有找到驱动程序。一个存在于分支机构但被Linus删除。
我的问题是什么是Linux设备树读取和写入通用32位寄存器/ pio的设备?
答案 0 :(得分:1)
你的回答是SCULL
您必须编写带有文件操作的字符设备驱动程序才能打开和关闭设备。读取,写入,复制和复制设备的内容。
static struct file_operations query_fops =
{
.owner = THIS_MODULE,
.open = my_open,
.release = my_close,
.ioctl = my_ioctl
};
使用iomem映射地址,并使用rawread和rawwrite直接读写该地址。按如下所示创建和注册设备,然后可以从用户空间访问它:
register_chrdev (0, DEVICE_NAME, & query_fops);
device_create (dev_class, NULL, MKDEV (dev_major, 0), NULL, DEVICE_NAME);
然后从用户空间访问它,如下所示:
fd = open("/dev/mydevice", O_RDWR);
然后您可以使用ioctl:
从用户空间使用GPIOioctl(fd, SET_STATE);