ELF 1开发板除了支持TF卡的读写之外,还提供了USB HOST 接口以支持U盘的读写处理,U盘与开发板的连接如图1所示。
图1 连接U盘
在使用U 盘设备时,是支持热插拔操作的,且要求U 盘为 FAT32 格式的文件系统,而不支持 NTFS 格式。
在插入 U 盘时,会显示相应的信息,参见图2所示。
图2 输出信息
此时,若拔出U 盘会出现图3所示的提示信息。
图3 输出信息
向 U 盘写入文件的指令为:
echo hello > /run/media/sda1/test.txt
其中“hello” 是写入文件的内容,而“test.txt”则是写入文件的名称。
在完成写入后,需进行一次文件同步的处理,其指令为:sync
在文件同步后,即可进行读取测试,其指令为:
cat/run/media/sda1/test.txt
这样就可读取 U 盘中的 test.txt 文件,整个读写测试的操作如图4所示。
图4 读写测试
3.卸载处理
在U 盘使用后,应使用指令“umount /run/media/sda1”来卸载 U 盘,见图5所示。
图5 卸载处理
这样会保证读写操作的有效性,随后即可退出
U 盘挂载路径并拔出 U 盘。
除了对U盘的读写操作,还可使用OTG 接口将ELF1 开发板虚拟成一个 U 盘设备。
在测试前,需将 TF 卡插入对应的卡槽,并通过数据线来连接OTG 接口和电脑,见图6所示。
图6 连接关系
在保证连接良好的情况下,通过加载 g_mass_storage.ko 驱动则可见到虚拟的U盘设备,其具体操作如图7所示。
图7 加载驱动
其中:
指令“insmod
/lib/modules/$(uname-r)/kernel/drivers/usb/gadget/libcompos\ite.ko”的作用是将‘libcompos\
ite.ko’内核模块加载到当前正在运行的内核中。该模块提供了 USB
gadget 框架的实现,它允许 Linux 设备作为 USB
设备来通信,从而实现了各种 USB 设备的模拟。‘insmod’用于将内核模块加载到 Linux 内核中,以扩展内核的功能或者添加新的设备支持。‘/lib/modules/$(uname
-r)/kernel/drivers/usb/gadget/libcomposite.ko’这个路径是内核模块文件所在的目录,其中‘$(uname -r)’表示当前系统正在运行的内核版本号,这样可以确保加载的内核模块和系统内核版本相匹配。
指令“insmod/lib/modules/$(uname-r)/kernel/drivers/usb/gadget/legacy/g_\mass_storage.ko
file=/dev/mmcblk0
removable=1"的作用是将‘g_mass_storage.ko’内核模块加载到当前正在运行的内核中。此模块提供了 USB
大容量存储设备的旧版实现,可以将 Linux
设备模拟成一个大容量存储设备。此外,这个命令还有两个参数:‘file=/dev/mmcblk0’:用于指定模拟存储设备的源文件,该参数指定了源文件的路径为‘/dev/mmcblk0’,通常情况下,这个参数指定的源文件是一个块设备文件。‘removable=1’:用于指定模拟存储设备是否是可移动设备,这里设置为
1,表示模拟的存储设备是可移动设备。
在完成驱动加载后,可见到图8所示的测试效果。
图8 虚拟U盘
在TF 卡挂载到电脑后,就可以对 TF 卡进行读写数据的操作了。
若不再使用,需进行卸载处理,其操作见图9所示。在取出TF卡后,会出现图10的提示信息。
图9 卸载设备
图10 提示信息