使用 ubuntu/kubuntu 通过 USB 安装微控制器原型板时,无法将二进制程序传输到该板。使用 MacOS 和 Windows 则没有问题。我发现 Ubuntu 的写入肯定会更改写入的文件。我怀疑写入缓存是问题所在。我该如何禁用它,或者还有什么其他问题。
答案1
请先阅读以下内容:http://groups.google.com/group/linux.kernel/msg/8d1591196c0ae15e?pli=1
我不确定这是不是真的。
您可以尝试使用 hdparm 在运行时将写入缓存功能设置为关闭。(您可能需要在每次启动后或每次移除并重新插入设备后运行此操作)
sudo hdparm -W 0 /dev/devicename
请确保您知道正确的设备名称(sdb
,sdc
等等)。
您可以通过运行以下命令来找出设备名称:
sudo fdisk -l
您还可以编辑/etc/fstab
和添加挂载选项sync,dirsync
,但我不太熟悉/etc/fstab
可移动设备的工作原理。我认为它们需要一个永久挂载点。
答案2
感谢@NightwishFan 使用 hdparm 开关来设置驱动器的写入缓存功能。
请注意,sync
mount 选项会将速度降低一个数量级(超过 10 倍)。mountflush
选项可确保有效写入,且不会影响性能。此外,我在我使用过的所有 FAT 设备(旋转或基于闪存)上使用它已有几年了,没有任何问题:实际上,整个 mount 选项集都是noauto,users,noatime,flush,umask=111,dmask=000
手动设置的,或者在 /etc/fstab 中设置。
答案3
我已将“sync”替换为“noatime,flush”,如@tuk0z 回答中所述。
这导致 USB 软盘驱动器的行为与同步相同,但它写入文件的速度要快得多,就像您期望的正常操作速度一样。
从软盘读取映像文件不会再导致随机伪像。此外,读取 DD 软盘不会在文件名中导致奇怪的字符。
也许“mount”的官方文档对用法的上下文描述有点不幸。
赞!