Linux USB U盘热插拔挂载和卸载

一、硬件平台

        1、  控制器:MT7620(A9内核)

        2、  RTC芯片:MCP7940

二、软件平台

       1、开发环境:Ubuntu12.04 

       2、SDK内核包:MT7620 SDK软件开发包(MediaTek_ApSoC_SDK_4320_20150414.tar.bz2)

       3、内核版本:linux-2.6.36.x

三、参考资料

      《MTK_APSoC_SDK_User_Manual.pdf》。

      下载链接:http://download.csdn.net/detail/xhoufei2010/9478004

四、USB U盘驱动简介

        USB Mass Storage是一类USB存储设备,这些设备包括USB磁盘、USB硬盘、USB磁带机、USB光驱、U盘、记忆棒、智能卡和一些USB摄像头等,这类设备由USB协议支持。

       对于USB的U盘驱动,已经非常完善,大家只需要简单地配置一下内核,开启U盘的功能即可。

五、U盘配置

       5.1 取消内核自动挂载功能

        由于Linux 内核包默认会自动挂载,且内核初始化的过程中,挂载出现在创建USB节点之前,经常出现自动挂载导致内核崩溃,故取消内核挂载,自己监听USB的热插拔,然后挂载。

        1.开启设置busybox

        进入到内核开发包目录 cd /home/kernel/source

        输入命令 make menuconfig

        Kernel/Library/Defaults Selection  —>Customize Busybox Settings ,选中该选项,如图5-1所示,设置完成之后,保存退出。

        

Linux USB U盘热插拔挂载和卸载

                                                          图5-1 设置Busybox

       2. 取消USB自动挂载/卸载功能

       在图5-1保存设置之后,会自动跳转到busybox的设置界面,在界面中,进入Linux System Utilities,取消掉Support command execution at device addition/removal 选项,如图5-2所示。

Linux USB U盘热插拔挂载和卸载

                                                       图5-2 取消USB的自动挂载/卸载

       5.2 开启U盘功能

        在linux-2.6.36.x中,输入命令make menuconfig,进入配置

        Linux Kernel Configuration —> Device Drivers  —> USB support ,在配置中,选中USB Mass Storage support,如图5-3所示。

Linux USB U盘热插拔挂载和卸载

                                                         图5-3 开启USB U盘支持

六、监听USB热插拔程序

       6.1 说明

        对于USB的热插拔,实际就是建立一个socket,采用socket监听USB的插拔信息。

        当监听到USB插入信息,且发现在 /dev目录下,存在 sda1或者sdb1分区(有时候分区节点为其他名称,根据实际分区修改分区的名称判断条件)的时候,就挂载USB分区到 /tmp/usb目录下。

        当监听到USB拔出信息,则卸载 /tmp/usb目录。

        6.2 usb控制器头文件,UsbController.h。

       6.3 usb控制器监听热插拔c文件, UsbController.c

来源:xhoufei2010

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年5月21日
下一篇 2022年5月21日

相关推荐