目前,我正在学习Linux设备驱动程序,我觉得自己对设备如何在Linux中实例化产生了根本性的误解。
在Linux模块中,我可以调用alloc_chrdev_region()向内核注册设备。具体来说,这个函数是
int alloc_chrdev_region(dev_t *dev, unsigned int firstminor,
unsigned int count, char *name);
它生成设备编号(主要/次要)并接受设备名称。
成功执行后,将在/proc/devices中创建一个主要编号和设备类型名称的条目。但是,/dev中没有生成任何设备文件。相反,我必须发出一个mknod调
我在看一个关于Linux文件系统和分区的讲座。我们正在学习基于MBR和基于GPT的分区。我们运行命令fdisk xvdf和gdisk xvdf。但是对于xvdf是什么还没有明确的定义。唯一提到的是一开始:
在这里你会注意到我们有xvdf。这是我们的设备,我们将在其上创建分区。
对linux what is "xvdf"的搜索有很多结果,涉及到如何处理涉及xvdf的事情,但没有定义。什么是xvdf?
我在看一个嵌入式x86系统设计文档。一个包含Xilinx的I/O板连接到linux x86 PCI总线。FPGA的实现如下:
• PCI interface core to connect to the x86 PCI bus
• Xilinx MB soft processor
• Xilinx OPB bus (this is a processor bus for the MB)
• PCI <-> OPB interface to allow the PCI bus to access all OPB peripherals
• Interrup
我正在学习linux设备驱动程序的开发,并创建了一个基本内核模块的代码,它创建了一个伪字符设备。该模块也被编译并插入。当我这样做时,结果是这样的
Module Size Used by
modeldriver 2540 0
这个数字显示了什么?模块的大小是什么意思?linux中大大小小数字的最大值是多少?我在哪里可以了解linux内核2.6.37的值?
我一直在学习如何在基于linux的系统中使用IOCTL来控制设备,并阅读了一篇文章。作者说,IOCTL原型在Unix系统调用列表中脱颖而出,因为在编译过程中使用了dots int ioctl(int fd, unsigned long cmd, ...),从而阻止了类型检查。最后一部分是我不太好的地方。我担心的是,不检查类型可能会导致一些控制外围设备的问题?有什么更可靠的方法或最佳做法来监控外围设备呢?谢谢