linux-device-driver专题提供linux-device-driver的最新资讯内容,帮你更好的了解linux-device-driver。
我想将一些USB设备连接到我的嵌入式Linux主板上.它是运行嵌入式Linux的TI-ARM处理器,但我想它可能是任何嵌入式Linux板.如果我购买了具有Linux支持/驱动程序的USB设备,是否可以重新编译此驱动程序以使用ARM体系结构? (而不是Windows等).最佳答案是的,通常可以期望USB驱动程序为x86以外的其他体系结构进行编译.当然这假设你的
有没有人知道关于android / linux暂停/恢复的整个过程和代码流程的任何好的阅读(按下手机上的结束键后)?我想了解并阅读相关的代码和文件.或者,也许有人可以指点我看代码......最佳答案我希望我能帮忙. Android is based on Linux, so the base is more or less same as th
我有几年的c编程经验.现在我决定致力于Linux内核模块开发.但是,我甚至无法开始.我在ubuntu中编译了这段代码.#include <linux/module.h> int init_module(void){ printk('<1> hellp'); return 0;} void cleanup_module(void){ p
是否存在直接机制来识别在中断上下文中还是从进程上下文中调用给定函数.这是问题的第一部分.第二部分是:如何同步2个进程,一个处于中断上下文中,另一个处于进程上下文中.如果我的理解是正确的,我们不能在中断上下文中使用互斥锁,因为它不允许睡眠.另一方面,如果我使用自旋锁,则另一个进程将使用CPU周期.同步这两个过程的最佳方法是什么.如果我的理解完全错误,请纠正我.
我正在编写一个简单的Linux字符设备驱动程序,通过I / O端口将数据输出到一个硬件.我有一个函数执行浮点运算来计算硬件的正确输出;不幸的是,这意味着我需要在用户空间中保留此功能,因为Linux内核不能很好地处理浮点运算.这是设置的伪表示(请注意,此代码不执行任何特定操作,它只显示我的代码的相对布局):用户空间功能:char calculate_outpu
我有一个程序可以将GPIO引脚切换为高电平/低电平,并在高电平和低电平之间有延迟(使用udelay),然后对GPIO状态进行一段时间的采样.我需要确保执行代码的这一部分而不会被调度程序或任何可能的中断抢占.我在双核ARM系统上运行代码,所以它应该是SMP. Spin_Lock_IrqSave()是否足够安全用于此目的?我感觉我的代码仍然偶尔会被打断,但还没有
可以在内存中完全创建的不同类型的Linux文件是什么?例如,可能会创建一个管道文件,但是创建文件的位置(或文件路径的文件系统类型)是否会影响是否涉及磁盘访问?如果我在ext3文件系统中创建管道文件,是否可以获得物理磁盘访问结果?最佳答案在我的头顶,没有看任何书:D,我认为它像这样崩溃:MMAP-能够:>文件(当然)>软链接(最终目标,如果它是文件
据我所知,ioctl()用于向用户空间应用程序公开“扩展”系统调用接口. ioctl()不是添加数千个特定驱动程序独有的系统调用,而是用于通过单个系统调用提供可扩展的驱动程序特定功能.这看起来很清楚.但是,我正在尝试编译我的第一个使用ioctl()调用的应用程序,我开始怀疑我的理解.具体来说,我想进行ioctl()调用以“清理”eMMC设备.看一下/usr/
我目前正在基于Raspberry Pi 2运行Raspbian的Kiosk系统,运行 Java应用程序.一切都很好,除了在对象移动时显示的屏幕上的失真.通常这不会是一个问题,但我有一个Java应用程序的列表,这将被用户广泛使用.在此列表上滚动时,失真是可见的. 下面的链接显示了这一点: A GIF showing the distortion 我到目前为止所知道的 This only occurs
我正在研究一个FPGA端点的网络驱动程序,它支持PCIe总线上的多消息MSI中断(不是msix).主处理器是运行在CentOS上的x86 Intel i7 620LM,内核为4.2. FPGA端点在其MSI功能寄存器中正确地通告了多个msi向量(0x101 =总共32个可能的向量). 据我所知,内核4.2中添加了多消息功能.不幸的是,当我打电话给pci_enable_msi_range(pdev,
例如,我们有1个CPU,8个核心. 当一个IP数据包越过Eth0-> TCP / IP->应用程序(不包括应用程序中的处理)时,可以使用多少个最大不同的CPU内核来处理一个IP数据包? 例如,它可能是3个CPU核心: >处理硬件中断 >进程校验和计算 >处理复制内核空间 – >用户空间(其指针已发送到套接字) 这对性能非常重要,因为核之间的每次数据传输都非常昂贵. 一般来说,您将在一个核心上处理中
我试图了解mmap的工作原理. mmap的用户级调用如下所示. void *mmap(void *addr, size_t len, int prot, int flags, int fildes, off_t off); 但特定设备驱动程序的内核级别mmap如下所示: int <device_name>_mmap(struct file*fp, struct vm_area_str
假设我们想在设备驱动程序或模块中维护一个内存池.如何创建该池并可用于多个进程,可以说4个进程,访问此驱动程序/模块. 假设池中有1 MB的内存 当我阅读LDD时,我遇到了api的mempool_create(),但是还有kmalloc. 如果有人做了这样的事情,请分享知识. 我的初始方法是使用kmalloc()分配,然后在打开模块的每个进程的私有对象中维护起始和结束指针. 编辑:谢谢@kikigo
static inline __printf(2, 3) int dev_err(const struct device *dev, const char *fmt, ...) { return 0; } 什么是__printf()正在做什么以及dev_err的第三个arg(…)是什么意思? 我能够想象这个函数是某种通用函数.它有什么作用? 除了__printf(2,3)之外,其他所有内容都非常标
我一直被告知(在书籍和教程中)在将数据从内核空间复制到用户空间时,我们应该使用copy_to_user()并使用memcpy()将导致系统出现问题.最近我错误地使用了memcpy(),它的工作非常好,没有任何问题.为什么我们应该使用copy_to_user而不是memcpy() 我的测试代码(内核模块)是这样的: static ssize_t test_read(struct file *file
我正在设计一个只读取和写入字符缓冲区的设备驱动程序.但是我的问题是关于file_operations结构中的两个函数的读写.我真的不明白什么loff_t * offp真的是.我知道,对于读写操作,* offp是文件偏移量,意味着文件的当前读/写位置,但是我甚至不知道写/读设备文件的意义. 从我收集到的,这是我从我的设备写和阅读我是创建一个代表我的设备的结构,我称之为my_char_struct,如