几个月前买了一块tiny6410的开发板,因为自己有很多SD卡,当时没有再买。哪知买回来自己的SD卡竟然无法识别,插进去一点反应都没有。无奈再买了一块。
在几天前,自己做的另一个项目中,偶然发现了这个问题的原因。
首先,启动开发板,cd /dev/;然后ls。发现其中的猫腻。
这是没有识别的SD卡。其中只有一个mmcblk0。而识别的SD卡是这样的
发现多了一个mmcblk0p1,百度知道这是SD卡的第一个分区,p1即partition 1的意思。
然后我尝试将mmcblk0 mount到sdcard目录下,发现竟然能够看得到里面的文件。那为什么不能够自动挂载呢。
我们知道busybox是通过mdev来实现设备的动态更新的。
当内核支持hotplug的时候,每当有新的设备插入,或者有设备移除,mdev就会查找mdev.config文件,按照这个文件执行相应的操作。
于是我查看了tiny6410的mdev.config。其中有这么一行
可见只有mmcblk0p1才会被自动挂载,而没有的SD卡是不会挂载的。我们可以把此处改为mmcblk0。
当然这样并不是很好的解决办法。
那怎样生成p1分区呢。格式化?经过我的屡次测试。Win下的格式化是不会生成这个分区的。
我采用的是在Linux下通过fdisk进行格式化,当然还有其他的方法,有兴趣的可以百度之。
首先将SD卡插入PC机,并连接到虚拟机上。
然后在虚拟机的/dev目录下查找我们这个设备的节点。
我的是通过USB读卡器,所以是sdb,如果是通过笔记本的读卡器的话是不一样的。这点可以通过mount指令查看
然后输入指令:fdisk sdb
[root@zyt dev]# fdisk sdb
Command (m for help): m 输入m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Command (m for help): p 输入p,查看分区情况
Disk sdb: 4023 MB, 4023386112 bytes
124 heads, 62 sectors/track, 1022 cylinders, total 7858176 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: