【第六章 第一个Linux驱动程序:统计单词个数 心得笔记】教程文章相关的互联网学习教程文章

自定义linux pcie驱动程序MSI中断【代码】

我正在为嵌入式设备编写自定义Linux PCIe驱动程序.为此,我需要启用多个MSI向量.当我使用函数pci_enable_msi(pdev)时,代码正常工作.但是当我使用pci_enable_msi_block(pdev,4)时;该函数返回1表示它只能分配1个中断.如果我使用pci_enable_msi_block(pdev,32);函数返回16,我使用pci_enable_msi_block(pdev,16);但返回值再次为1. 我试图检查所有可能参数的返回值,结果如下:for(i=2;i<33;i++){ret = pci_enable_msi_block(pdev,i);prin...

在Linux设备驱动程序中使用do_mmap()【代码】

我们现在使用的设备需要有一个用户空间虚拟内存地址,我们尝试使用do_mmap(),如下所示:*uvaddr = (void *)do_mmap(0, 0, size, PROT_READ|PROT_WRITE, MAP_ANONYMOUS, 0);但我们得到了以下错误Unable to handle kernel paging request for data at ad8可以在设备驱动程序中使用“do_mmap()”吗?如果没有,任何正确的方法吗?解决方法:do_mmap可能成功,但uvaddr没有指向存储结果的有效位置.要确定这一点,请执行以下操作:void *mmap...

openGL MSAA在带有nouveau驱动程序的linux上不起作用【代码】

最近我尝试在Linux下使用MSAA(多重采样抗锯齿).结果令人惊讶:一切都像Nvidia专有驱动程序的魅力一样,但是有了nouveau驱动程序它不起作用.关于这一点的奇怪之处在于glxingo说支持GLX_ARB_multisample并且我能够获得适当的FBConfig,GLX_SAMPLE_BUFFERS设置为1,GLX_SAMPLES设置为4(或8).但是在渲染时,图片没有应用抗锯齿.我的项目和freeglut都存在这个问题,所以我将提供一个基于过剩的小程序来证明这个问题:/** Test multisampling ...

Linux内核设备驱动程序中的分散 – 收集列表【代码】

我正在开发一个可以访问分散 – 收集列表(sg)元素的设备驱动程序.我可以从中提取数据并使用sg_copy_to_buffer将其存储在已分配的缓冲区中.现在,我的想法是创建一个新的分散列表,并从这个缓冲区复制到我创建的新分散列表中(当然这是后来完成的)并将这个新的分散列表返回给内核.(这是针对性能指标等)我尝试在线搜索文档以使用分散列表等,但无济于事.我通常在做什么:char *buffer = kmalloc (***); struct scatterlist *sglist = kma...

我应该如何构建一个在一个设备中使用多个芯片的Linux驱动程序?

我有一个硬件设备,由I2C总线上的3个独立芯片组成.我想将它们组合在一起,并将它们作为一个逻辑设备公开给用户.用户可以看到/ sys中某个目录所代表的逻辑设备,以及/ sys / class / i2c-adapter / i2c下的I2C芯片节点 – ?/ *. 其中一个芯片是MCP23017,据我所知已经有一个驱动程序(drivers / gpio / gpio-mcp23s08.c),我想重用它.另一个芯片是PCA9685,我想为这个使用include / linux / pwm.h中的PWM系统的芯片贡献一个驱动程序.第三个...

linux – 如何为平台驱动程序正确初始化属性组?【代码】

编辑#4:我发现我不应该将attr_groups分配给struct platform_driver结构的驱动程序字段中的groups字段.寻找评论/ * WRONGO:不应该在这里分配. * /下面. 我还没弄明白我应该把它分配到哪里…… 由于NULL引用,我的平台驱动程序代码在读取sysfs属性时会导致内核“OOPS”.我确信这是一个简单的疏忽在下面的代码,但我看不到它:...static int samples_per_frame = SAMPLE_CHANNEL_COUNT;DEVICE_INT_ATTR(samples_per_frame, S_IRUGO | ...

有PCIe for FPGA的DMA Linux内核驱动程序示例吗?

我想在内核空间中编写一个驱动程序: >在嵌入式系统中通过PCIe连接FPGA(使用powerPC).>它使用DMA将信息从FPGA传输到RAM.>用户程序必须访问此信息. 我需要一些例子来做类似的事情来指导我.有谁知道我在哪里可以找到一些来源?解决方法:Connectal(http://www.connectal.org)是一个开源框架,使用户空间软件能够与Xilinx或Altera FPGA进行通信.实际上,很少有这种通信涉及设备驱动程序. Connectal支持通过内存映射硬件FIFO在软件和硬件之...

如何使用musb_hdrc Linux驱动程序断开特定的USB设备?【代码】

首先,我是Linux USB堆栈的新手,为了达到以下结果,我想更多地了解它:我需要重新连接/断开特定的USB设备,因为有时候,这种设备有时不会很难再响应,唯一的解决方案是物理断开/重新连接USB电缆与设备. 在我的主板(AM33x Sitara)上,有两个usb控制器与musb-hdrc驱动程序绑定到它们: #pwd / sys / bus / platform / drivers / musb-hdrc# ls -lrth total 0 --w------- 1 root root 4.0K Jul 11 10:11 uevent --w------- ...

JAVA:使用GeckoDriver在Linux上运行Selenium测试:驱动程序不可执行【代码】

我目前正在Linux机器上使用Selenium WebDriver进行测试自动化项目. (Ubuntu 16.04.3)测试可以在Windows机器上执行而没有任何错误,因为我试图在Linux VM上运行测试我在初始化GeckoDriver时遇到了严重问题. 这是我的代码的一部分:System.setProperty("webdriver.gecko.driver", _GECKO_DRIVER); WebDriver driver = new FirefoxDriver();变量_GECKO_DRIVER是linux可执行文件的文件路径,我从这个镜像下载:https://github.com/mozill...

Linux USB设备驱动程序未被探测【代码】

我正在研究Linux的设备驱动程序.这是一个USB笔式平板电脑.问题是驱动程序的探测回调永远不会被调用. dmesg只显示:generic-usb: probe of 0003:099A:2620.000F failed with error -22我永远不会连接到设备.看起来系统驱动程序在某种程度上凌驾于我的驱动程序之上? 我的代码正在注册&使用insmod / rmmod正确取消注册:#include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/usb.h> #inclu...

Arduino蓝牙N64控制器 – 编写Linux驱动程序?

我正在研究一个小的Arduino项目,为我的Ubuntu盒子创建一个蓝牙N64操纵杆.我设法找到一个草图,通过串行输出控制器状态,它工作得很好.还发送TX和RX到小CSR蓝牙模块我工作正常. 当我与设备配对时,我必须使用“rfcomm bind”来查看我的dev目录中的设备,并且’cat’ing输出显示所有数据也将通过. 我的问题是,我的下一步是让Linux将这个设备识别为操纵杆 – 即/ dev / js0.如果我知道我需要做些什么来实现这一点,我可以阅读必要的步骤,但...

SPI:Linux驱动程序模型

我是SPI的新手; Linux内核提供了一个API,用于声明SPI总线和设备,并根据标准Linux驱动程序模型对其进行管理. 你可以在这里找到struct spi_master的描述:https://www.kernel.org/doc/htmldocs/device-drivers/API-struct-spi-master.html 上面链接中的描述说“每个设备可以配置为使用不同的时钟速率,因为除非选择芯片,否则忽略这些共享信号”.为了把这句话放在比赛中,我不得不说“设备”是指SPI从设备,而“那些共享信号”是指MOSI,M...

linux – 什么是Docker存储驱动程序

我正在学习Docker存储,我不清楚Docker存储驱动程序. >在外行人的条件下,docker的存储驱动程序是什么?>与docker info命令显示的Backing Filesystem有什么不同?>如果有人想写自己的存储驱动程序?怎么做?解决方法:我建议你去看看其中一个docker开发者的演示文稿:http://www.slideshare.net/Docker/docker-storage-driversWhat is docker’s storage driver in layman’s terms?在Dockerfile中使用FROM命令时,您指的是基本映像.而...

linux键盘驱动程序的源代码

我一直在为linux制作自己的键盘驱动程序.所以我来到这两个链接:usbkbd.c和atkbd.c. 现在我混淆了这些是当前驱动键盘的实际代码.正如我所看到的那样,atkbd.c是非常血腥的并且有转换扫描码到密钥代码.所以它应该是代码,虽然我不确定. 如果atkbd.c是代码,那么其他代码是什么?解决方法:这很容易检查.我们来看看usbkbd.c. 相应的Kconfig(http://lxr.free-electrons.com/source/drivers/hid/usbhid/Kconfig#L50)说:Say Y here only if...

linux – 操作系统如何知道要调用哪个设备驱动程序?

我一直在打开和写入/读取文件/设备文件并一直读取操作系统,但从未理解设备驱动程序不可避免地被调用的流程. 例如,当我们写入stdout时,fd = 1.当我写这篇文章时,我明白操作系统会调用已经打开的特定设备文件的设备驱动程序,但我不明白的是我们如何到达设备驱动程序本身. >甚至首先创建设备文件(即stdout)需要什么?安装?内核模块加载?>(后续[1])因此,如果我有一个外围设备,例如连接到我的计算机的单个LED灯,并且已经安装了LED的正...