ARM Linux判斷SD卡是否載入成功
阿新 • • 發佈:2019-02-17
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函式。
採用第三種方式,檔案存在時,返回成功狀態,否則檔案不存在,簡單明瞭!
3.參考int check_sd() { int file = -1; file = open( "/dev/mmcblk0", O_RDONLY); close(file); return file; }
[1] https://www.cnblogs.com/lidabo/p/5630498.html
[2] http://blog.csdn.net/fybon/article/details/29813685