飞凌嵌入式ARMCortex-A9S5P4418开发板上能否满足U盘的功能?其实可通过修改内核配置和文件系统相关内容,在OK4418开发板上实现模拟U盘功能,模拟U盘可以帮助我们实现开发板与Windows(目前只在XP系统下做过验证)操作系统之间的数据交换。

开发板脱离WindowsXP时,它运行数据采集程序,把采集到的数据写成文件保存在eMMC中。WindowsXP系统需要读取开发板采集的数据时,只需通过USB线把开发板和WindowsXP电脑连接起来,此时开发板就相当于一个U盘,WindowsXP像访问U盘一样访问开发板上eMMC的数据文件。

本次开发的软硬件环境配置如下:

硬件平台:飞凌OK4418开发板

软件系统: Linux3.4.39

编译器版本:arm-cortex_a9-eabi-4.7-eglibc-2.18  

具体实现操作步骤如下:

1、内核配置:

将配置选项USBGadgetDrivers里的File-backedStorageGadget  配置为模块编译方式

makemenuconfig

DeviceDrivers--->

[*]USBsupport--->

USBGadgetSupport--->

USBGadgetDrivers(AndroidCompositeGadget)--->

下面两个选项任选其一即可

()File-backedStorageGadget(DEPRECATED)——获得模块——》g_file_storage.ko

()MassStorageGadget——获得模块——》g_mass_storage.ko

模块路径为kernel-3.4.39/drivers/usb/gadget

makeuImage生成新的内核

2、准备:

使用新生成的内核烧写系统镜像,并将生成的模块拷贝到开发板文件系统中

在ubuntu虚拟机中生成挂载的镜像文件

ddif=/dev/zeroof=udisk32M.imgbs=1kcount=32768

mkfs.vfatudisk32M.img

将udisk32M.img拷贝到开发板文件系统中

3、使用:

insmodg_file_storage.kofile=udisk32M.imgstall=0removable=1(换成g_mass_storage.ko一样效果)

mknod/dev/loop0b70(此步可不需要)

mount-oloop/home/udisk32M.img/tmp

连接OTG即可

4、验证

1)在开发板上往/tmp目录写mdev.conf文件,命令如下

cp./etc/mdev.conf./tmp

在电脑上重新插拔连接开发板的USB线,在移动硬盘中我们可以看到mdev.conf文件,可以在电脑系统上访问。

从而验证开发板往模拟U盘写文件,XP系统上可以访问该文件。

 

2)电脑系统往模拟U盘写文件,开发板可以访问该文件;

在XP系统上网U盘写wwtARM.txt文件

重新挂载文件系统映像到/tmp目录

#umounttmp

#mount-oloop/home/udisk32M.img/tmp

在开发板上可以在/tmp目录下访问刚才XP系统写到U盘的wwtARM.txt文件。