感谢大佬们抽空指导指导已哭晕在厕所的小弟~
起因:想在linux下通过脚本方法烧写一个xxx.bin镜像文件到SD卡中,之前一直都可行的,但最近不知道为啥一直烧写不成功。
现象:
[root@localhost  led02]# ./write2sd 
记录了32+0 的读入
记录了32+0 的写出
16384字节(16 kB)已复制,0.000278132 秒,58.9 MB/秒
write2sd中的内容如下所示,这条脚本命令一直都可行的。
#!/bin/sh
sudo dd iflag=dsync oflag=dsync if=210.bin of=/dev/sdb seek=1
这个现象与正常烧录是不太一样,所花费时间太短了,几乎是一瞬间的,无论我的镜像文件是几k还是几M。多番测试和尝试,都无法解决这个问题,太纳闷了,恳请大佬helphelp~
曾做过的测试与现象或结果:
(1)大结论:一下所有测试,在windows下都能正常烧录,而在linux下都不能正常烧录
(2)换了张SD卡,现象不变,不可行,说明SD应该没问题
(3)换了个读卡器,现象不变,说明读卡器应该没坏
(4)换了几个镜像文件(做的是裸机实验,所以应该算是启动镜像),现象不变,说明不是程序的问题
--------------------------------
以下是一些稀奇古怪的测试与现象:
(5)把程序的链接地址改了几次,改成平时多次测试所用的地址,现象没变化。
(6)将虚拟机还原到上一个快照点(这个时候还没做相关裸机实验),第一次烧写镜像,成功!!!(第二次)换了一个镜像文件,烧写,不成功!(第三次,换了张可用的SD卡)重新烧写原本第一次烧写成功的镜像文件,不成功。
(7)SD卡windows下快速格式化,发现里面的镜像文件竟然 还在???(不知道啥原因)
(8)SD卡windows下普通格式化(很慢很慢),linux下依旧烧录不成功。
综上,个人初步定位:问题应该与硬件设备(SD卡,读卡器,开发板)无关,也与程序本身无关,而与虚拟机的某个啥啥不知道的问题有关,当然也可能与“链接地址”有关(链接地址这个概念我半知半解的,所以不太敢排除)。
#(玫瑰) 内容虽然比较长,但也是小弟我力求列出所有可供大佬参考的可能性, 感谢大佬不吝helphelp~

解决方案 »

  1.   

    所用的系统是Centos7
      

  2.   

    痛苦挣扎了几天,结果也还是不知道怎么解决的,突然就好了。最后做的挣扎是:Linux下用dd命令给sd卡全部写0(格式化),但实在太卡了我就没等它完成就强制结束了,然后虚拟机卡死,然后强制关机,windows也强制关机,然后重新开机开虚拟机,虚拟机果不其然地报了点错误,没管它,测试了下,竟然神奇的解决了我SD烧写不了的问题!!!lucky