注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
linrui0726的个人空间 https://home.eeworld.com.cn/space-uid-295256.html [收藏] [复制] [分享] [RSS]
日志

关于tiny210连接到PC机上能通过gadget被识别为U盘的问题,已经解决

已有 4497 次阅读2012-8-19 15:53 |个人分类:ARM嵌入式系统|

这几天在做项目,需要实现tiny210经过miniUSB连接到PC机上能通过gadget被识别为U盘或者SD卡,我tiny210上安装的是光盘自带linux系统,不能被PC机识别为U盘。找了很多资料,终于成功了,之前主要是没有配置配置模块g_file_storage.ko。在此分享一下配置过程,希望对大家有用。
1、首先输入如下命令,配置usb gadget
[root@localhost linux-2.6.35.7]# make menuconfig
 
2、进入内核配置界面按回车键进去:Device Drivers -->
 
3、接着回车进入:[*] USB support --->
 
4、再回车进入:<*> USB Gadget Support --->
 
5、选中并按m(“按m”的意思是将其编译成模块):<M> File-backed Storage Gadget
 
6、保存并退出
 
7、在命令行输入如下命令
[root@localhost linux-2.6.35.7]# make modules
CHK include/linux/version.h
CHK include/generated/utsrelease.h
make[1]: “include/generated/mach-types.h”是最新的。
CALL scripts/checksyscalls.sh
CC [M] drivers/usb/gadget/file_storage.o
LD [M] drivers/usb/gadget/g_file_storage.o
Building modules, stage 2.
MODPOST 4 modules
WARNING: modpost: Found 1 section mismatch(es).
To see full details build your kernel with:
'make CONFIG_DEBUG_SECTION_MISMATCH=y'
LD [M] drivers/usb/gadget/g_file_storage.ko
最后一行信息表示在目录drivers/usb/gadget/中已经生成了g_file_storage.ko驱动模块,这个模块支持实现tiny210经过miniUSB连接到PC机上能通过gadget被识别为U盘或者SD卡。
 
8、接着通过sd卡将g_file_storage.ko驱动模块拷贝(当然通过其他方法拷贝也行,本人用的是sd卡来拷贝)到开发板某个目录上(其实这个驱动模块在sd卡内不用拷贝到开发板上也行,只要将sd卡插到tiny210上并能读取卡内文件就行了)
 
9、最后在开发板上安装这个驱动:在超级终端上输入一下命令挂载驱动:
insmod /sdcard/g_file_storage.ko file=/dev/udisk stall=0 removable=1
稍等几秒就能在 windows下看到你插入开发板上的U盘了
当有多个分区的情况时,挂载驱动的命令可以如下:
insmod g_file_storage.ko filefile=/dev/udisk,/dev/sdcard stall=0 removable=1
这里使用了两个分区,分别是一个SD卡,一个U盘。

(特别注意:配置内核时,tiny210配套的光盘中linux文件夹中的linux内核存在这样情况,在make menuconfig的时候无法选成<M>,只能选成<X>。就像这兄弟的情况一样:http://www.arm9home.net/read.php?tid-20378.html。要解决这个问题很简单,直接用android文件夹中的linux内核来编译就行了,这两个内核是一样的,可能linux文件夹中的那个内核存在点问题。)
以上是本人亲自验证过的,欢迎互相转载。。
发表评论 评论 (1 个评论)
回复 sxy02203 2013-7-13 00:48
楼主,我想请教你一些相关问题。我按照你的帖子生成了g_file_storage.ko文件,但是在开发板上加载的时候说insmod: can't insert 'g_file_storage.ko': Device or resource busy
我后来研究了半天发现这可能是由于设备号已经被占用的缘故。论坛上那个帖子是用linux 2.6.35.7的内核,而我买的板子使用的3.0.8的内核。

所以想请教下你这个情况应该怎么处理,如果是要修改设备号的话如何在内核编译的时候修改呢?你那个回帖里面提到一个博客,但是地址已经失效了。。。 我对linux刚刚入门,还是个小白,希望不吝赐教~

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章