device-driver相关内容

班级和班级装置的用途是什么?

我遵循了一些教程,这些教程解释了如何编写Linux内核模块,我有点困惑。即使看了official "documentation",我对概念的理解也很差。 创建字符设备(register_chrdev)后,我发现使用以下功能组合是很常见的: class_create class_device_create device_create 我不能理解,什么是类、设备和类、设备 ..

I/O完成端口的优缺点

为什么很多人说 I/O 完成端口是又快又好的模型? I/O完成端口的优缺点是什么? 我想知道一些使 IOCP 比其他模型更快的点. 如果能对比其他模型(select、epoll、传统多线程/进程)解释一下就更好了. 解决方案 I/O 完成端口很棒.没有比这更好的词来形容它们了.如果 Windows 中的任何事情都做对了,那就是完成端口. 您可以创建一定数量的线程(实际上 ..
发布时间:2022-01-19 15:50:53 其他开发

如何从 C++ 设置和读取并行端口上的引脚?

我正在帮助一位朋友完成最后一年的项目,他有一个我们想使用 C++ 程序打开和关闭的电路. 我最初认为这很容易,但我未能实施此程序.主要问题是 Windows XP 及更高版本不允许直接访问硬件,因此某些网站都在提示我需要写驱动或者找驱动. 我还查看了一些在线项目,但它们似乎适用于 Windows XP,但不适用于 Windows 7. 另外,大多数项目都是用我不熟悉的 VB 或 C ..
发布时间:2022-01-18 14:36:33 C/C++开发

获取与 COM 端口相关的设备/驱动程序信息?

我在 Windows 设备管理器中有一个带有类似名称设备驱动程序的 Serial-to-USB 设备.这些设备并不总是在系统启动时获取相同的 COM 端口,因此我的程序需要在启动时识别它. 我尝试使用 RXTX 来枚举 COM 端口系统,但这不起作用,因为 CommPortIdentifier.getName() 只返回 COM 名称(例如 COM1、COM2 等).我需要获取驱动程序制造商 ..
发布时间:2022-01-18 14:18:55 Java开发

如何使用 C 程序将 ARM 处理器置于不同的模式?

我正在经历不同模式的 ARM 处理器.我想在不同模式下检查处理器状态(例如:寄存器值). 那么有人可以帮我找出将处理器置于不同模式的示例代码吗? 例如,我找到了未定义模式的代码:asm volatile (".short 0xffff\n"); 解决方案 如果您想从用户空间测试模式,这是一个难题.如果系统中没有 FIQ 外围设备,则可能无法进入 FIQ 模式.您的系统可能根本没 ..
发布时间:2022-01-17 14:05:59 其他开发

内存映射 IO - 它是如何完成的?

我已经了解了端口映射 IO 和内存映射 IO 之间的区别,但我无法弄清楚在现代操作系统(windows 或 linux)中如何实现内存映射 Io 我所知道的是,物理内存的一部分被保留用于与硬件通信,并且有一个 MMIO 单元参与处理总线通信和其他与内存相关的事情 驱动程序如何与底层硬件通信?驱动程序会使用哪些功能?与视频卡通信的地址是固定的,还是在使用它们之前有某种“协议"? 我 ..
发布时间:2022-01-11 23:45:17 其他开发

是否可以用 Java 编写设备驱动程序?

简介 我听说过一些关于用 Java 编写设备驱动程序的消息(听说是“用我的耳朵"而不是从互联网上听到的)并且想知道......我一直认为设备驱动程序是在操作系统级别上运行的,因此必须用与操作系统相同的语言(因此主要是 CI 假设) 问题 我一般是错的吗假设?(好像是这样) “外星人"中的司机如何操作系统中使用的语言? 有什么要求(来自编程语言的观点)无论如何都需要设备 ..
发布时间:2022-01-11 22:56:00 Java开发

平台设备从哪里得到它的名字

我正在阅读围绕总线、设备和驱动程序构建的 Linux 设备模型.我能理解一些设备和驱动程序匹配是如何发生的,但不清楚总线在这里的作用,总线如何与设备匹配. 我对平台设备名称的来源还有一个疑问. “平台总线,只是将每个设备的名称与每个驱动程序的名称进行比较;如果它们相同,则设备匹配驱动程序." 现在我真的不能理解上面的一点.我相信首先在dts文件中定义设备名称,然后在平台驱动程序代 ..
发布时间:2022-01-04 22:49:51 其他开发

无法从 linux 字符设备读取

我正在为加速度计实现 SPI 驱动程序.SPI 部分已完成,但我无法从用户空间读取值. static char charDevMessage[CD_BUFFER_SIZE] = { 0 };...静态 ssize_t char_dev_read(struct file *filep, char *buffer, size_t len, loff_t *position){int error_co ..
发布时间:2022-01-04 22:20:01 其他开发

I/O 完成端口的优缺点

为什么很多人说 I/O 完成端口是快速和漂亮的模型? I/O 完成端口的优缺点是什么? 我想知道一些比其他模型更快的 IOCP. 如果能和其他模型(select、epoll、传统的多线程/进程)进行对比说明就更好了. 解决方案 I/O 完成端口很棒.没有更好的词来形容它们.如果 Windows 中的任何事情都做得对,那就是完成端口. 您可以创建一定数量的线程(实际上并不 ..
发布时间:2022-01-04 08:20:56 其他开发

如何使用 cat 文件安装驱动程序?

我有内核驱动程序.在 32 位系统和 Windows XP 及以下系统上安装时,我没有问题并使用 SetupCopyOEMInf,但需要签名 64 位驱动程序.我已经签署了它,我需要在计算机上的某处复制一个带有驱动程序的 cat 文件,但这种安装方法不起作用.我应该如何安装它? 编辑:澄清问题. 解决方案 在 Windows Vista 和 Windows 7 中有一个用于处理驱动程 ..
发布时间:2021-11-25 06:17:08 C#

如何使用 C 程序将 ARM 处理器置于不同模式?

我正在经历不同模式的 ARM 处理器.我想在不同模式下检查处理器状态(例如:寄存器值). 那么有人可以帮我找出示例代码以将处理器置于不同模式吗? 例如,我找到了未定义模式的代码:asm volatile (".short 0xffff\n"); 解决方案 如果您希望从用户空间测试模式,这是一个难题.如果系统中没有FIQ外围设备,可能无法进入FIQ模式.您的系统可能根本没有使用监 ..
发布时间:2021-11-17 21:53:27 其他开发

在 WinDbg 中定义自定义错误检查代码

有没有办法定义自定义代码(带有消息/描述等),以便在 Windows 的内核模式驱动程序中,我调用 KeBugCheckEx 来发出自定义错误检查代码 WinDbg显示自定义错误检查代码附带的相关消息? 解决方案 关于已知错误检查代码的文本被编译成扩展 DLL 之一.据我所知,这不是可以以任何简单方式扩展的东西(即您不能只是在某个地方向文件添加文本). ..
发布时间:2021-09-25 19:31:46 其他开发

Windows 7 上的代码签名驱动程序失败,错误为 0xC0000428

我签名的驱动程序生成的 Windows(带有 SHA256 修补程序的 Windows 7)无法启动并生成错误代码 0xC0000428(Windows 无法验证此文件的数字签名). 我接手了一个使用 Visual Studio 2010 创建的驱动程序项目,我的第一个任务是更新过期的代码签名证书.最初的数字证书使用 Global Sign,现在使用 Digi Cert.原来的程序员在给我的 ..

如何在非零端点(libusb)上发送 USB 控制事务?

我正在编写代码以了解 Freescale Kinetis 微控制器上的 USB 外设.我已经设法在 Linux 主机上进行了枚举,并且可以发送 &使用 EP0 上的供应商自定义代码接收数据包,并与 libusb 测试程序交互. 看起来我可以在微控制器上配置额外的控制端点(非零端点号),但我没有看到让 libusb 向这些端点发送/接收控制传输的方法.(libusb_control_trans ..

使用端口映射的I/O时是否使用虚拟内存?

如果我有一个内存映射的I/O设备,并且我想写入该设备的寄存器,该寄存器位于地址 0x16D34 ,则实际上 0x16D34 地址是一个虚拟地址,CPU会先将其转换为物理地址,然后将数据写入该物理地址. 但是关于端口映射的I/O设备(例如:串行端口),因此,如果我要写入位于地址 0x3F8 的串行端口的寄存器,则 0x3F8 是物理地址还是虚拟地址? 编辑::我使用的是x86体系结构. ..
发布时间:2021-04-30 19:36:32 服务器开发

检查是否为我的USB设备安装了驱动程序

我使用了 SetupDiGetClassDevs(), SetupDiEnumDeviceInfo()和 SetupDiGetDeviceRegistryProperty()来枚举我的USB设备并检查我的设备是否可用或不是. 如何检查我的设备是否安装了正确的驱动程序? 有没有可用的API可以对此进行检查? 解决方案 您可以获取设备的驱动程序信息,然后根据驱动程序信息进行检查(如果您 ..
发布时间:2021-04-30 19:36:08 其他开发

C ++ 11原子:将它们与内存映射的I/O一起使用是否有意义?

据我了解,C volatile 以及可选的内存防护内联asm已用于在内存映射的I/O之上实现设备驱动程序.在Linux内核中可以找到几个示例. 如果我们忘记了未捕获的异常(如果有的话)的风险,那么用C ++ 11原子替换它们是否有意义?或者,有可能吗? 解决方案 通常,您可以用原子代替内存隔离栅,但不能用 volatile 替换,除非它与专用于隔离栅的一起使用线程间通信. 关于 ..
发布时间:2021-04-12 19:22:46 C/C++开发

在Windows下重命名USB HID设备

我向使用通用HID类与主机PC通信的USB设备编写了固件。 将设备连接到PC时,它会显示我在固件中放入了硬编码的字符串,但是在驱动程序安装结束(使用通用Windows驱动程序)之后,设备的名称更改为通用“ USB输入设备”。 如何重新命名设备? 解决方案 您不能这样做。设备管理器显示由设备驱动程序安装时注册的字符串-在您的情况下,它是通用Windows驱动程序(显然,除了USB ..
发布时间:2020-10-21 19:23:26 其他开发