问题标签 [device-driver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
13 回答
23324 浏览

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

介绍

我听说过一些关于用 Java 编写设备驱动程序的事情(听到的是“用我的耳朵”,而不是来自互联网)并且想知道......我一直认为设备驱动程序在操作系统级别上运行,因此必须用相同的语言编写作为操作系统(因此主要是 CI 假设)

问题

  1. 我通常对这个假设有误吗?(好像是这样)
  2. 如何在操作系统中使用“外星人”语言的驱动程序?
  3. 无论如何,设备驱动程序有什么要求(从编程语言的角度来看)?

谢谢阅读

0 投票
2 回答
1054 浏览

c# - C# 用于创建 Windows 驱动程序?

完全重复: C# 驱动程序开发?

我想知道 C# 是否可以用于创建 Windows 驱动程序?

0 投票
2 回答
231 浏览

x86 - 有人能解释一下我会在内存中找到这个 IDE 控制器寄存器地址映射的开始位置吗?

作为我为期四分之一的项目的一部分,我一直在翻阅文档以开发一个简单的磁盘驱动程序。目前我正在尝试绘制英特尔 82801EB IO 控制器内部实现的各种 atapi 和 IDE 控制器寄存器。

首先,我指的文件:www.intel.com/assets/pdf/datasheet/252516.pdf

在第 415 页,表 154 显示了各种配置寄存器的偏移量。这似乎是一个愚蠢的问题,但是我如何找到它们的偏移?我期待找到为这些寄存器保留的某种固定基址。从那里我将能够使用此表构建我的驱动程序。

例如,在表 154 上,PCI 命令寄存器位于偏移量 04-05h。登记册在第 417 页上有详细说明,我相信我已经理解了。但是,该寄存器位于 4 个字节的基地址在哪里?

更新:现在,在查看我们正在使用的 D865PERL 板的固定 IO 映射后,它说 0000-00ffh 由 B865PERL 保留,请参阅 ICH5 数据表以获取动态寻址信息。我相信它可以用于我上面提到的表 154 中的 IDE 控制器寄存器。在这一点上,我给我的教授发了电子邮件,但我仍在试图弄清楚这些在哪里。

感谢您的关注!

0 投票
1 回答
5110 浏览

device-driver - 访问 PCI 配置空间中寄存器的正确方法

当您需要访问 PCI 配置空间中的寄存器时,您是否只需要使用内置的 BIOS 函数将 DWORD 读/写到配置空间中?

例如,如果我尝试使用 B0:D31:F1 上的 IDE 控制器,我是否继续使用该 BDF 作为 BIOS 函数的参数来读/写配置寄存器?因此,如果我想获取供应商 ID,我会读取给定 BDF 中的第一个 DWORD 吗?

或者我只是离基地很远?

编辑:

在 PCI BIOS 规范中,我一直在查看 BIOS 函数的定义,用于在配置空间中读取和写入字。我相信这意味着我可以在配置空间内的各种偏移量处写入寄存器。我想我的问题是,这是在这个级别访问这些寄存器的正确方法吗?

0 投票
3 回答
8677 浏览

windows-xp - 分页池内存或非分页池内存??(windows驱动开发)

我是 Windows 驱动程序开发的新手。我只想知道,驱动程序中的全局变量将使用分页池内存还是非分页池内存?

谢谢并恭祝安康

纳瓦尼思

0 投票
4 回答
11769 浏览

c - 如何在内核和用户空间之间创建“netlink”?

我想使用 netlink 在应用程序和内核空间之间进行通信。我的Linux内核版本是2.6.28,下面是我的错误代码:

简短的错误消息是:

在文件<linux/netlink.h>中,函数netlink_kernel_create()定义为

我不明白第一个参数使用什么,net. 有人可以解释我应该在这里使用什么吗?

0 投票
4 回答
4059 浏览

localization - Windows 设备管理器和硬件 ID

我很好奇 Windows 设备管理器如何获取设备的硬件 ID,即使尚未为该设备加载任何设备驱动程序。有人知道Windows是如何处理这个问题的吗?

在相关的说明中,我有兴趣支持我们正在编写的软件的语言本地化;设备和/或驱动程序是否可以以本地化方式报告其友好名称和描述?这已经有一个普遍的做法了吗?

谢谢你的时间。

0 投票
3 回答
289 浏览

java - Java 与设备直接通信的本机方式是什么?

Java 与 LPT1、COM1、USB 等设备或端口直接通信的本机方式是什么?

0 投票
2 回答
1872 浏览

operating-system - 如何配置 ATA 硬盘以开始产生中断?

解决

经过一番困惑和挫折,我终于让我的硬盘中断了。:D 这基本上归结为我一直在读取状态寄存器而不是备用状态寄存器。其他一些事情在启动时搞砸了,但关键是我的硬盘驱动程序终于开始成形了。现在,对于其他人,我将离开原来的帖子。

PS为了进一步澄清,我不需要发出任何类型的重置命令。我所做的只是:

  1. 选择设备(不想杀死另一个磁盘上的 Solaris OS)
  2. 清除设备控制寄存器中的 nIEN 位
  3. 发出识别设备命令***

实际上,我不确定是否需要 IDENTIFY DEVICE 命令,因为在没有发出命令的情况下测试代码之前,我很高兴离开了实验室。然而,重点是我需要确保读取备用状态寄存器并清除 nIEN 位而不需要复位。BIOS 显然可以处理大多数事情。


我目前正在尝试为我学校正在开发的爱好操作系统编写磁盘驱动程序。我目前有例程来读取/写入 PCI 配置空间中的数据,还有汇编例程来使用 ATA/ATAPI-7 定义的各种寄存器进行端口 IO。现在,我的问题是,具体来说,我将如何让 IDE 硬盘开始产生中断?我一直在查看所有这些文档,但我并不清楚我做错了什么。

有人可以准确解释导致 IDE 硬盘驱动器开始产生中断的原因吗?我已经准备好测试中断服务例程,但是一开始就很难获得中断。这可以通过 ATA SOFT RESET 完成吗?

谢谢!

更新:好的,通过设置设备控制寄存器中的 SRST 位进行软复位,我能够获得辅助通道,即 ATAPI CDROM 以产生中断。这不适用于主通道上的硬盘。到目前为止我注意到的是,当我为 HDD 设置 SRST 位时,它会设置 BSY 位并保持设置。从那里我不知道该怎么办。

0 投票
3 回答
1999 浏览

driver - 如何让我的驱动程序 WHQL 为 Vista 64 签名?

我有一个驱动程序,我的公司已经为我们的客户使用了几年。在 Vista 64 下无法再安装驱动程序。我认为我需要对驱动程序进行签名,但我不确定如何开始。

  • 最好的起点是什么?
  • 这通常需要多长时间?
  • 我需要向 Microsoft 发送什么?
  • 有第三方愿意为我们做这一切吗?
  • 这个过程(有或没有第三方)通常需要多少费用?