使用stm32-uclinux下的SD卡驱动

时间:2024-03-18 14:08:51

       之所以说是使用是因为这个sd卡驱动本来stm32-Uclinux内核中就有,现成的,而我现在使用的stm32的存储空间十分匮乏,能使用这个sd卡驱动,想想凭白无故的多了十几G 空间的SD卡存储,简直对我来说是个福音,这酸爽、嘿嘿!

       而要想深入理解linux下的SD卡驱动,还要研究SD驱动的host、card、core层,网上的资料很多,有点难弄清,这里只是简单记录一下我的设置步骤:

1、首先在内核设置(make menuconfig)下 勾选Device Drivers -> MMC/SD/SDIO card support


使用stm32-uclinux下的SD卡驱动

2、然后在勾选System Type -> STM32 I/O interfaces菜单下的使能SD卡接口和SD卡DMA通道


使用stm32-uclinux下的SD卡驱动

3、 再在File systems -> DOS/FAT/NT Filesystems下勾选下图选项,因为sd卡里面挂载的是fat文件系统,而要想linux能够识别、读写sd卡则这些选项是必选的


使用stm32-uclinux下的SD卡驱动

       额外两图的选项也要选上,没敢选支持中文编码的项,编译起来内核占用空间大,有条件的可以选上支持中文编码的选项。


使用stm32-uclinux下的SD卡驱动


使用stm32-uclinux下的SD卡驱动

5、编译内核,会发现有mmci-pl18x mmci-pl18x: mmc0: MMCI rev 4 cfg 10 at 0x0000000040012c00 irq 49,-1等信息,证明SD卡驱动已经添加进内核了。


使用stm32-uclinux下的SD卡驱动

6、插入sd卡后,终端会显示

mmc0: host does not support reading read-only switch. assuming write-enable.
mmc0: new SDHC card at address 59b4
mmcblk0: mmc0:59b4 USD00 7.41 GiB
mmcblk0: p1

       证明检测到sd卡插入,然后输入指令mount /dev/mmcblk0p1 /mnt,使sd卡挂载到mnt目录下,这样就可以正常读写到sd卡里面的文件,对sd卡进行操作了。


使用stm32-uclinux下的SD卡驱动