1. 程式人生 > >ARM Linux判斷SD卡是否載入成功

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