以交替速度对eMMC进行原始访问

时间:2015-06-11 09:01:23

标签: linux arm embedded embedded-linux

在我的嵌入式Linux系统上,我有大量数据,大约1MB,如果有人拔掉电源线,必须快速保存到eMMC。 到目前为止,我确实尝试过很多东西,例如:

  • fopen / fwrite with sync option
  • 复制后执行同步
  • 使用同步选项
  • 安装特殊分区

所有这些尝试都非常缓慢,在1秒的范围内。

我最终在BusyBox v1.20.2中使用了磁盘转储(dd):

dd if=data1MB of=/dev/mmcblk0p3 bs=1M count=1

我做了一些不同块大小的实验,也就是bs,所有结果都在200ms范围内,大部分都是。

现在我的问题: 我有这种奇怪的行为,写入速度是交替的,所以在第一次写入尝试时速度为5MB / s,第二次是1.5MB / s,下一次是5MB / s,依此类推。如果我在每个dd上更改输入文件,我也有这种行为。

我确实在dds之间没有明显区别。

任何帮助都将不胜感激。

周杰伦

编辑:

我正在使用conv = fsync选项,它会强制将数据写入eMMC,效果相同。所以问题可能不是OS缓冲

EDIT2:

所以一切都指向emmc,我将联系分销商,希望能得到一个结果。 到目前为止,所有人都是。

编辑3:

因此,在与我们的经销商交谈之后,交替速度可能来自我的托管NAND的内部控制器,它可以运行诸如坏块管理和损耗均衡等后台处理。使用我的eMMC,可以向eMMC发送高优先级中断,这将产生eMMC控制器上的所有正在运行的进程。使用该后门程序,我将能够为eMMC实现可预测且持续的访问时间。在这方面,这是非常危险的,因为在产生的过程中处理的数据可能会丢失。

我的经销商正在准备内核补丁,以便从用户空间访问此高优先级中断。我会告诉你的。

感谢您的帮助

0 个答案:

没有答案