Articles of 设备驱动程序

使用驱动程序获取原始MAC地址

Linux:uname -a:2.6.18以及2.6.39 我是非常新的…当驱动程序第一次加载时,ifconfig可以改变MAC地址之前,现有的(永久)MAC地址被存储,可以通过这个ioctl检索。 case ETHTOOL_GPERMADDR: rc = ethtool_get_perm_addr(dev, useraddr); break; 任何人都testing过它? 我可以获得代码或代码的一部分来实现它吗?

整合WiFiencryption狗与Beaglebone黑色问题

我正在尝试整合使用atheros驱动程序的TP链路TL-WN721N Wifi dongle的beaglebone黑色。 我用ti-sitara rootfs使用linux 3.2内核 问题是什么时候键入命令 wpa_supplicant -Dwext -i wlan0 -c /etc/wpa_supplicant.conf 它显示已成功初始化wpa_supplicant 但它卡在那里,我必须给ctrl + c退出,之后,我给了 ifup wlan0 答复是 Sending discover… Sending discover… Sending discover… No lease, failing 在这之后,我重复了这一次wpa_supplicant的步骤也卡住了,当我给了 ifup wlan0 这次它得到了IP,并能够ping ………. 当我试图连接任何其他的无线networking, 即:wpa_supplicant卡住了两次,ifup wlan0的第二次尝试,我只能重复这个循环。 这是我的/etc/wpa_supplicat.conf文件 networking= { ssid="UTStarcom" #psk="123force" psk=44d83e5c96bd39f47b54625d80b80c79d5b14430d424fdf6636365901b01ab14 } 和我的/ etc / network / interfaces auto lo iface lo inet […]

适用于Linux的MMIO / PIO Info

有一个* nix命令会给我所有的MMIO/PIO address space 对于特定设备(或所有设备)?

索尼爱立信连接到USB端口时注册两个设备

我非常好奇,为什么每个索尼爱立信手机(w200i,2660等)通过USB连接到PC时注册两个ttyACM设备? 这也引入了与移动设备接口的复杂性。 有任何人可以解释这个吗? 我和我的同事正在使用Python-Gammu编写短信网关,而且我们正在很难制作一个自动化系统,它将在Udev上进行监听并提供即插即用/热插拔function。 下面是插入手机后的“dmesg”的快照: [ 3335.853330] sd 6:0:0:0: [sdc] Synchronizing SCSI cache [ 3335.853388] sd 6:0:0:0: [sdc] Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK [ 3373.115701] usb 1-1.4: new full speed USB device number 5 using ehci_hcd [ 3373.245499] cdc_acm 1-1.4:1.1: ttyACM0: USB ACM device [ 3373.246619] cdc_acm 1-1.4:1.3: ttyACM1: USB ACM device [ 3373.247459] usbcore: registered new […]

如何设备链接到Linux驱动程序

设备文件链接到驱动程序的主要和次要号码。 那么驱动程序如何链接到设备? 当我们插入一个设备时,内核怎么知道它和哪个模块加载了

为什么我的IOCTL调用与copy_from_user协同工作,而不是与get_user协同工作?

我正在写一个简单的驱动程序。 在这里,我正在学习ioctl调用,它们在copy_to_user和copy_from_user部分完美工作,但不在get_user和put_user部分。 如果我通过这些函数发送一些数据,它是有效的; 问题是当我只需要传递一个整数或字符值时: long ioctl_funcs(struct file *filp,unsigned int cmd, unsigned long arg) { int ret=0; int len=10; char val='d'; char valplusone='d'; switch(cmd) { case IOCTL_HELLO: printk(KERN_INFO "Hello ioctl world"); case READ_IOCTL: copy_to_user((char *)arg, buf, 200); //works fine break; case WRITE_IOCTL: copy_from_user(buf, (char *)arg, len); //works fine buf[6]=' '; buf[7]='t'; buf[8]='o'; buf[9]='o'; buf[10]='\n'; break; case […]

处理来自LPC连接的设备的SERIRQ中断

如何通过由Linux设备驱动程序处理的LPC(低引脚数)总线连接的设备产生SERIRQ中断? 特别是,总线上的一个设备产生的中断与总线上的另一个设备产生的中断有什么区别?

device_create与现有的设备名称

我正在学习如何将字符设备驱动程序编写为Linux的可dynamic加载模块。 通常,我使用以下顺序的函数调用来注册设备,并创build出现在/dev/下的设备文件: alloc_chrdev_region(&first, 0, 1, "myclass"); myclass = class_create(THIS_MODULE, "myclass"); device_create(myclass, NULL, first, NULL, "mydevicefile"); cdev_init(&c_dev, &fops); cdev_add(&c_dev, first, 1); 设备文件然后出现在/dev/mydevicefile ,我可以与它交互。 这让我想知道如果传递一个现有的设备文件名而不是“mydevicefile”会发生什么: device_create(myclass, NULL, first, NULL, "null"); 这导致/dev/null被我的字符设备文件所取代 – 而且更多地涉及到:在我的控制台中,来自期待原始/dev/null守护进程的错误消息的猛击。 甚至不删除我的虚假null模块解决这个问题。 在实践中,不应该有一个与我的模块使用的名称相同的现有设备文件,理论上可能覆盖另一个设备文件仍然困扰着我。 如何防止设备文件已经存在与我打算使用的名称相同的名称? 更新 :我想我真正绑定找出是为什么udev是允许更换。

喂养一个鼠标驱动程序备用数据在Linux中

我正在头脑中寻找更广泛的理解,以便将替代数据馈送到鼠标驱动程序来控制指针而不移动鼠标。 我修改了一个驱动程序(未经testing)来提供随机数据,但我需要能够打开/closures随机鼠标数据,我不认为一个简单的scanf要求“你想这样做吗? 正在工作。 我认为我需要build立一种与驱动程序交互的接口。 有人可以给我任何观点吗? 我对自己需要做的事情一无所知。 谢谢,肖恩·刘易斯

处理多个中断源/向量的Linux设备驱动程序

我正在编写一个设备驱动程序来处理PCIe卡的中断,该PCIe卡当前适用于在IRQ线路上引发的任何中断向量。 但它有几个types可以提出,由Vector寄存器标记。 所以现在我需要读取vector信息,并有点聪明… 我也是 :- 1 /为每个中断types有单独的开发节点/dev/int1 , /dev/int2等,只是doc int1是vectortypesA等? 1.1 /由于每个文件/字符设备将有自己的minor号码,打开时,我会知道哪个是哪个。 我认为。 1.2 / ldd3似乎演示了这种方法。 2 /有一个节点/dev/int (正如我现在所做的),并有多个进程挂在同一个read方法? 听起来更好?! 2.1 /那么只有把正确的过程唤醒…? 2.2 /我使用单独的wait_queue_head_t wait_queue吗? 或不同的flag /testing条件? 在read方法中: – wait_event_interruptible(wait_queue, flag); 在处理程序不是真正的代码! : – int vector = read_vector(); if vector = A then wake_up_interruptible(wait_queue, flag) return IRQ_HANDLED; else return IRQ_NONE/IRQ_RETVAL? 编辑:人民的笔记评论: – 1)我的用户空间代码mmap的所有PCIe固件寄存器 2)用户空间代码有几个线程,每个线程在设备驱动程序设备节点上执行阻塞read ,然后在发生中断时从固件返回数据。 […]