问题标签 [sata]
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.
memory-management - 写入大文件可防止大块 DMA 分配
我正在使用带有运行 linux (3.0.35) 的基于 ARM 的处理器的板。主板有 1GB RAM,并连接到快速 SSD HD 和 5MP 摄像头。
我的目标是捕获高分辨率图像并将其直接写入磁盘。
一切顺利,直到我尝试保存一个很长的视频(超过 1GB 的数据),
保存大文件后,我似乎无法重新加载相机驱动程序 - 它无法为流分配足够大的 DMA 内存块(调用 dma_alloc_coherent() 时)。
我将其缩小到 Linux 启动的场景(当大部分内存可用时),然后我将随机数据写入一个大文件(>1GB),当我尝试加载相机驱动程序时它失败了。
对于我的问题-
当我打开一个文件进行写入,写入大量数据并关闭文件时,用于将数据写入HD的内存不应该被释放吗?
我可以理解为什么在 HD 访问期间内存会变得碎片化,但是当对 HD 的事务完成时 - 为什么内存仍然如此碎片化以至于我无法分配 15MB 的连续 RAM?
谢谢
linux - 如何为应用程序使用 AHCI SATA linux 驱动程序
我有一个正在运行的应用程序,它需要为 linux 使用 SATA AHCI 驱动程序。我有 AHCI.so 可以使用,但我正在寻找一些文件(.h 文件),它将发布我的应用程序可以使用的 api(计划编写胶水层以使用 api 与 .SO 通信)。
任何人都可以帮助我确定将发布 AHCI.SO 的所有 api 的正确文件,或者我必须自己编写这样的文件。
linux - 在 board_ahci_mcp_linux 中 mcp 代表什么?
我正在浏览给定链接http://lxr.free-electrons.com/source/drivers/ata/ahci.c的 ahci 代码,并且经常看到 mcp 术语,但无法破解它。
任何人都可以让我知道这段代码中 mcp 代表什么,它是通用术语吗?
vhdl - 串行 ATA (SATA) 的 CRC 计算
在阅读了很多之后,我才知道没有计算 CRC 的单一方法。我需要专门为串行 ATA (SATA) 计算 CRC 的方法/算法/VHDL 代码
c - 我正在尝试写入寄存器 hi 的某些位以启动电源模式进入睡眠状态
我的问题是我读取了 ADI_DEV_CORE_STATUS 的值,它仍然为 0x2A,即使在我在位 22 上写入断言 1 以启用电源模式请求之后,我在值没有改变后直接打印出该值。
我正在尝试发送一个进入休眠模式的请求,
在 ADI DEV CORE STATUS 寄存器中,
第 26 位定义为电源模式失败(只读),
第 25 位定义为处于睡眠状态的核心(只读),
第 24 位定义为部分休眠(读/写)的电源模式请求,
第 23 位定义为休眠模式(读/写)的电源模式请求,
第 22 位定义为启用主机发起的电源模式请求(读/写),
第 21 位定义为启动发送 COMWAKE Burst 模式以从休眠中唤醒(读/写)
第 5 位被定义为 Phy-Ready(只读),
位 4 定义为复位(读/写),
第 3 位定义为指示设备状态机处于空闲状态(只读),
bits[2:0] 定义为当前接口速度(0h:无连接)(1h:已建立 Gen1 速率)(2:h:已建立 Gen 2 速率)(3h:已建立 Gen3 速率)(为后代保留的其他值)
代码中定义的其他值
我所有的 alt_printf(值是 %x”,读取);打印出 0x2a,我应该在启用电源模式时读取 0x40002a,在启用电源模式时读取 0xC0002a,并且我正在发送休眠模式的电源请求和 0x2000000当核心处于睡眠状态时。
ide - bios将控制权转移到AHCI扩展ROM时的内存模型?
据我所知,AHCI 扩展 ROM 使用 IDP(索引/数据对)来访问 AHCI 寄存器(全局和端口寄存器)。
ahci 规范 v1.3 说:
IDP 机制允许主机软件使用间接 I/O 寻址访问所有 MMIO 寄存器
因此即使ABAR在1MB以上,扩展ROM仍然可以通过这种方式以实模式访问MMIO。
但是我们发现在访问 AHCI MMIO 寄存器时,下面的扩展方式是可以的:
如果上面没问题那么说明现在的内存模型不是实模式(我猜是大实模式,也就是4G下可以访问)
我们的问题是,现在 BIOS 将控制权转移到扩展时的内存模型是否是大实模式(无论如何,不是实模式)?如果是,那么我们总是可以使用内存操作来访问 AHCI 的 MMIO... 对吗?
- 之前使用IDP的原因可能是:那个时候控制权交给扩展还是实模式吧?所以内存模型取决于系统 BIOS,对吗?
c - 写入磁磁盘上的磁道/磁头/柱面
我正在开发一个高性能数据库,我想同时直接写入具有多个磁头的特定磁道/柱面。这是如何在 Linux 中通过 SATA 总线使用 SATA 磁盘完成的?您可以推荐任何文档,示例吗?
java - 如何在 Linux 下使用 Java 检测何时插入了新的 SATA 驱动器?
我目前正在从事一个需要将数据批量导入 Hadoop 集群的项目。需要导入 Hadoop 的数据驻留在 SATA 磁盘上。需要导入的数据是Encase取证磁盘映像(E01)。我创建了一个从这些图像中提取文件并将这些文件导入 Hadoop 的应用程序,这工作正常,但我需要手动启动该过程。
我想通过热交换 SATA 驱动器来自动化该过程并自动启动提取过程。我用 Java 编写了我的程序,由于我用来分析图像的一些外部库,它需要这样。我在互联网上搜索了一个使用 Java 检测新插入的驱动器的解决方案,但我发现的所有库都可以检测 USB 驱动器或使用 udev 规则来启动进程(我可以使用它,但更喜欢 Java 解决方案)
有谁知道我所描述的是否存在?或者有人能指出我正确的方向吗?将不胜感激!
差点忘了...我使用 ubuntu 12.04 服务器版作为我的操作系统。
ide - 如何在旧 PC 上的旧 IDE/SATA 硬盘(连接 USB)上安装 Windows XP?
我有一台旧 PC(Intel Pentium 4/2 GB RAM),Windows XP 崩溃:启动时出现蓝屏。所以我想重新安装XP:问题,我的塔中没有CD/DVD播放器,BIOS无法启动USB...
所以我得到了硬盘 3.5" IDE / SATA 并通过 USB 连接到笔记本电脑,这要归功于 IDE 到 USB 转换器。
==>任务:在这个通过 USB 连接的 IDE 硬盘驱动器上安装 Windows XP SP3(我有 ISO),以便在我在旧的 Intel P4 PC 中设置它时启动它。
==> 怎么有教程或视频?很难找到它,我发现只有安装 USB 的教程......
谢谢您的帮助。
尼科
c - 获取SATA磁盘的WWN
最近我一直在尝试各种硬盘驱动器。现在我被困住了...
我想得到的是硬盘的序列号、型号、版本和 WWN。
对于 scsi,上述所有内容均可通过 scsi 查询获得。对于 SATA 驱动器,我使用 HDIO_GET_IDENTITY ioctl 来获取型号、序列号和修订版,但它不包括 WWN。但是我还没有找到如何获得这些驱动器的 WWN id。有人对这方面有一些了解吗?