gadget模拟U盘,我使用的是micro2440开发板,1G nandflash,2.6.32.2内核
我的目的是在nandflash 中分一个区,将其模拟u pan插到电脑上,同时在linux下也可以访问它。实现方法如下
在<kernelsrc>/arch/arm/mach-s3c2440/mach-mini2440.c中修改 friendly_arm_default_nand_part参数,使其和你的vivi种分区情况相同
我使用的是
Number of partitions: 4
name : offset size flag
------------------------------------------------------------
vivi : 0x00000000 0x00040000 0
param : 0x00040000 0x00020000 0
kernel : 0x00060000 0x00500000 0
root : 0x00560000 0x10000000 0
insideudisk : 0x10560000 0x2fa80000 0
内核menuconfig时,
确保 跟目录-》system type->s3c2440 machines ->FriendlyARM Mini2440 devlopment board 选型打上星号
跟目录->device drivers -----> [*]usb support ----> <*>usb gadget support ----->做些设置,尤其注意USB preipheral Controller项要点进去选择正确的选项
如果usb gadget support 是配置为*,则需要编译后更新内核
如果配置为M,则需要先加载s3c2410_udc.ko
(s3c2410_udc.ko和g_file_storage.ko在<kernelsrc>/driver/usb/gadget文件夹下)
mtd设置时是打算把insdeudisk作为u盘的,它对应/dev/mtdblock4,
执行命令# insmod g_file_storage.ko file=/dev/mtdblock4 stall=0 removable=1
(g_file_storage.ko的参数在<kernelsrc>/driver/usb/gadget/file_storage.c的开头有说明)
将开发板的usb salve口连到电脑上,则可以看到出现移动存储设备 ,可以在设备管理器-》磁盘管理中对其进行格式化,如格式换为fat32
执行
#mkdir /mnt/insideudisk
#mount -o iocharset=cp936 /dev/mtdblock4 /mnt/insideudisk
可以在linux系统中访问改分区
//end
存在的问题是文件存储读取太慢,存一个2.5M的文件需要接近10分钟,在dmesg中显示配置成了 fulls speed config 1,我怀疑是这方面的问题,单近期不打算深究了,后面几天要开发数据采集卡的usb gadget,也希望有这方面经验的朋友们拿出一起分享啊