ARM Linux判断SD卡是否加载成功

1.写在前面

ARM-Linux在访问SD卡数据时,严格的步骤,第一步应该是检查SD卡是否被系统成功加载。当然,缺少这一步也不影响,从后面应用层访问操作的返回值也可知道操作状态,但如果在第一部就有检查时,出现问题可以立刻发现。

2.判断SD卡加载状态

1)通过“sdcard”文件夹

Linux下如果加载SD卡成功,在根目录下会生成一个“sdcard”文件夹,SD卡的内容,及用户访问数据,都通过这个文件夹。因此用户可以扫描根目录下,“sdcard”文件夹是否存在,来判断SD卡是否加载成功。但,也会有个别情况,比如有时候SD卡已经卸载了,应用层端未及时响应(这个有可能是我这么Linux系统移植的问题),此时“sdcard”文件夹仍然存在,但可以肯定的是,访问该文件夹会导致异常。

2)通过SD卡设备

另外一种可靠的办法是,检查SD卡设备。Linux的思维是“一切皆文件”,外设驱动成功加载时,会在设备驱动文件夹(“/dev”)下生成相应的设备文件,如我这边的Linux成功加载SD卡时,在“/dev”下识别为“mmcblk0”设备。


这样通过“mmcblk0”设备是否存在即可实现我们的目的。

“检查文件是否存在”是我们的目的,至于实现方式有很多种:

—shell脚本;

—c语言用access函数;

—c语言用open函数。

采用第三种方式,文件存在时,返回成功状态,否则文件不存在,简单明了!

int check_sd()
{
    int file = -1;
    file = open( "/dev/mmcblk0", O_RDONLY);
    close(file);
    return file;
}
3.参考

[1]  https://www.cnblogs.com/lidabo/p/5630498.html

[2]  http://blog.csdn.net/fybon/article/details/29813685


你可能感兴趣的:(C++,Linux编程,C,Linux编程)