2016-08-30 42 views
0

我使用IP TE4395为完全定制的主板编写了SD主机控制器Linux驱动程序。umount后SD卡数据被破坏


随着我写的驱动程序,

  • 我可以挂载SD卡,读取和写入。
  • 安装时,一旦我umount,下一个mount将失败。
  • 命令mount -o remount /dev/mmcblk0p1工作正常....

# ls /mnt/ 
aaa.txt  lost+found 
# mount -o remount /dev/mmcblk0p1 
EXT4-fs (mmcblk0p1): re-mounted. Opts: block_validity,delalloc,barrier,user_xattr,acl 
# echo adfaf >/mnt/bbb.txt 
# ls /mnt/ 
aaa.txt  bbb.txt  lost+found 
# cat /mnt/bbb.txt 
adfaf 
# sync 
# ls /mnt/ 
aaa.txt  bbb.txt  lost+found 
# umount /mnt/ 
# mount /dev/mmcblk0p1 /mnt 
mount: mounting /dev/mmcblk0p1 on /mnt failed: Invalid argument 
+0

在你的'fstab'中有/ dev/mmcblk0p1吗?如果您尝试明确指定文件系统和选项,会发生什么情况? – mikemaccana

+0

我试过了,结果是一样的'mount/dev/mmcblk0p1/mnt -t ext2'。并且fstab中没有/ dev/mmcblk0p1的条目 – jianing

+0

可以在干净的重新启动后装入它吗? –

回答

0

我知道其中的原因。 驱动程序有问题。我添加了一些调试代码,读驱动程序写入寄存器时读取寄存器。 和Data Port寄存器是特殊的,当访问寄存器时,控制器内的缓冲区指针会自动递增。 调试代码在写入寄存器之前和之后读取,所以访问寄存器3次,但预期只有1次访问(写入)。