问题标签 [ata]

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 投票
0 回答
190 浏览

linux - 什么可能会减慢发送到 Linux 上 HDD 的 ATA 读取验证命令的速度?

我正在编写一个 C 程序来使用 Linux 上的 ATA read-verify(0x40) 命令扫描硬盘驱动器,就像 MHDD 在 DOS 上的扫描一样。

我使用 HDIO_DRIVE_TASK 发出命令,并使用 CLOCK_MONOTONIC 测量 ioctl 的阻塞时间。
我以 root 身份运行该程序,并将其 ionice 设置为实时,但读数总是大于 MHDD 显示的读数。另外,MHDD 的结果变化不大,但我的程序的结果经常变化很大。
我尝试为每个块发出两次命令并测量第二次运行的块时间。这解决了部分问题,但我的结果仍然有很大差异。

哪些因素可能会减慢我的指挥速度?我应该如何避免它们?

PS我有一些不同健康状况的备用驱动器供测试使用。

0 投票
1 回答
825 浏览

ubuntu - 在 Ubuntu 上直接向硬盘发送 ATA 命令

我想将 ATA 命令直接发送到 Ubuntu 上的硬盘。这样做的步骤是什么?或者,是否有命令或 GUI 来执行此操作?

0 投票
0 回答
331 浏览

c++ - 读取 ATA 状态寄存器时为 0xFF

我正在尝试设置对我的硬盘驱动器的简单 PIO 访问,但我在迈向目标的第一步就碰壁了。

使用 ATA 设备的第一步是读取它的状态寄存器并等到它的 BSY (7th) 位为低。我已经让程序这样做了,但是由于某种原因,在读取状态寄存器时它总是给我 0xFF 。这是用 C++ 编写的程序示例:

请您看一下片段并告诉我有什么问题吗?

0 投票
1 回答
215 浏览

c++ - 如何通过 DeviceIoControl 功能使用 ATA 命令读取大磁盘(如 1 ,2 TB)?

我想使用通过 DeviceIoControl() 发送的 ATA 命令读取大容量磁盘。使用结构发送命令ATA_PASS_THROUGH_EX是主要问题。实际上CurrentTaskFile[]UCHAR类型的数组无法发送不大于 16777215 的扇区。


CurrentTaskFile[2] = 0xFF 是扇区号寄存器,
CurrentTaskFile[3] = 0xFF 是气缸低寄存器,
CurrentTaskFile[3] = 0xFF 是气缸高寄存器。

现在如果我想读取不超过 16777215 的扇区(如果我想读取 1 TB 磁盘的最后一个扇区)该怎么办。如何发送不超过 16777215 的扇区。实际上我必须读取容量高达 4 TB 的磁盘。

0 投票
1 回答
70 浏览

linux - 较新版本的 Linux 是否使用与 libata-core.h 不同的包含?

我正在尝试编译一个包含 libata-core.h 的模块,如下所示:

在 debian Jessie 上。编译器说“没有这样的文件或目录”。我安装了内核源代码和头文件,其中一些包括“scripts/Makefile.build”在此编译中找到,所以我认为包含路径是正确的。find 同意没有这样的文件。名字变了吗?该模块使用了许多函数,例如 ata_qc_new_init() ,这些函数在此文件中定义(至少在该文件的 Web 可访问版本中)。这些现在似乎定义在:

那是正确的使用吗?

0 投票
1 回答
1226 浏览

windows - 在 Windows 中发送 ATA 安全解锁 0xF2

我正在尝试应用以下建议:将 ATA 命令直接发送到 Windows 中的设备? 我的目标是将 ATA 0xF2 (security unlock-0xF2) 发送到刚刚通过 USB (usb to SATA) SSD 连接的 SSD,该 SSD 之前已使用已知密码锁定。Linux 中的相同问题已使用 hdparm 实用程序进行了广泛测试,并且运行良好。

我在 Win-7、8、10 上尝试了此代码 - 所有版本都返回错误代码 50(不支持该请求)。出于测试目的,我发出了 0xEC 命令 - 工作正常。

如何将此 0xF2 ATA 命令推送到 SSD?任何提示/想法/帮助将不胜感激。

0 投票
2 回答
1120 浏览

translation - 发送 ATA 命令“读取本机最大地址(0x27,0xF8)未使用 SAT(SCSI ATA 转换)通过 SAS 控制器响应

我想通过 SAS 接口找出 HDD 的本机最大地址。我正在使用带有 SCSI_PASS_THROUGH 的 SAT(scsi ata 翻译)。

但无法从驱动器中找到带有 IOCTL_SCSI_PASS_THROUGH 的 SCSI_PASS_THROUGH 的任何缓冲区或有效感知信息。SCSI_PASS_THROUGH 的 cdb 值 =

但不返回任何缓冲区。请提供准确的 cdb 参数以读取 SAS 机器上的本机最大地址。

0 投票
0 回答
297 浏览

c - ATA IDE 识别

我正在尝试为我的操作系统学习开发 ide ata 驱动程序.. 我面临一个问题,即在发送 IDENTIFY CMD 后系统挂断而没有恐慌..!我正在使用下面的代码

它永远不会达到“Sent identify” .. 有时它会写 Sen 并挂起。

我也在 Virtualbox 和 VMWare 上进行了测试,结果相同。知道它为什么挂断吗?

0 投票
1 回答
166 浏览

assembly - 无法使用 ATAPI 读取 CD

这是我的代码。它用十进制的 65535 填充 ATAPI_RAWDATA 数组。没有错误代码。次要错误寄存器端口用 0 填充。它不会停止,也没有 cpu_triple_fault。当我移除辅助主 CD 设备时,程序会正常停止。代码中的这些循环用于检测 BSY 位或其他内容。我在真实硬件中尝试了 EJECT 程序,因此该代码没有任何问题,但 ATAPIREADSECTOR 程序运行不正常。READCD 命令或其他有什么问题吗?

我的 EJECT 程序运行良好:

0 投票
1 回答
133 浏览

asterisk - 连接到 ATA 适配器的 Asterisk 服务器需要一直开机吗?

我的设置如下所示:

  • 运行 Asterisk Server 的 ubunutu linux pc
  • 连接到 VOIP ATA 适配器的模拟电话
  • 通过以太网连接到 Asterisk Server 的 VOIP ATA 适配器

我只找到了有关在 Asterisk Server 中为 ATA 设置扩展的信息。这里电话的 SIP 帐户是在 Asterisk 中配置的,我很清楚 Asterisk 服务器需要始终打开,否则 ATA 将无法发送/接收任何电话。

我的问题

是否可以让 ATA 适配器存储和管理 SIP 帐户,而 Asterisk 服务器监控传入呼叫(我需要被叫 ID),并且还可以将所需的电话号码发送到 ATA 以发起传出呼叫。这样,即使 Asterisk 服务器断电,用户仍然可以使用模拟电话通过 ATA 适配器拨打/接听电话。如果可能,您能否给我一个参考或提示如何为这种情况设置 Asterisk 扩展?