將
usb的驅動配置成裝置模式。連線電腦後自動將
sd卡識別成邏輯盤。
核心編譯配置如
usb. txt
內容。在
/etc/init.d/rcs
中加入初始化語句。
insmod musb_hdrc.ko
insmod g_file_storage.ko file=/dev/mmcblk0p1
一開始插上usb以後老是顯示無法初始化硬體,是因為usb小板上將d+和d-畫反了
遇到的問題:
1.在拍照的過程中,拍攝100幅**,第一次將usb插到主機上,會顯示這100幅**的大小都是0;但是在板子上輸入ls
–al /mnt/sdcard看 大小都是15.8k,是正確的。第二次插上usb以後有可能會有一些影象變正確,大小變為15.8k並且可以開啟。其他的一些影象就壞掉了。
2.後來對這個問題進行進一步的研究,在不載入usb驅動的情況下拍攝100幅**,拍攝完成後在串列埠終端上將sd卡上的資料拷貝到nfs上,再從linux虛擬機器下拷貝到windows上,看都是正確的,在串列埠終端上輸入ls
–al /mnt/sdcard看 大小都是15.8k。板子斷電,拔下sd卡,通過讀卡器插到pc機上,在windows下瀏覽,結果也都是正常。但是如果不進行上述的拷貝工作,只有一副**m1.jpeg是正常的(隨機的有可能其他幾個是正常的,但不是所有的都正常),其他的都是0k。將sd卡再插回板子,上電再執行ls
–al /mnt/sdcard,發現只有m1.jpeg是正常的,其他的都是0k。
解決辦法:linux下,向磁碟寫入資料會先將資料快取在記憶體裡,系統在合適的時候再將資料從記憶體中寫到磁碟裡。所以sd卡拔下之前要執行sync命令,保證記憶體中的資料完全寫入磁碟裡
STM32 SD卡實現USB虛擬U盤
之前的文章中介紹過stm32讀寫sd卡和fatfs檔案系統相關的知識。今天將在這基礎上介紹stm32通過usb口虛擬u盤的知識。即插入usb介面後,電腦將sd卡識別為u盤,可以直接讀寫sd卡內的檔案。硬體環境 stm32f407zgt6 軟體環境 stm32cubemx v5.5.0 hal庫版本 ...
linux mdev實現U盤或SD卡的自動掛載
mdev是busybox中的乙個udev管理程式的乙個精簡版,他也可以實現裝置節點的自動建立和裝置的自動掛載,只是在實現的過程中有點差異,在發生熱插拔時間的時候,mdev是被hotplug直接呼叫,這時mdev通過環境變數中的 action 和 devpath,來確定此次熱插拔事件的動作以及影響了 ...
Udev實現U盤或SD卡的自動掛載
linux傳統上使用靜態裝置建立的方法,在dev下建立了大量的節點,而不管這些節點相應的硬體裝置是否存在。採用 udev的方法,系統檢測到裝置才會去建立這些裝置對應的節點。這裡我們簡單的說一下udev的工作原理 udev是依賴於sysfs的,當系統中新增乙個新的裝置後,核心檢測到後就會產生乙個hot...