主题 : ARM模拟成U盘的问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 126757
精华: 0
发帖: 3
金钱: 15 两
威望: 3 点
贡献值: 0 点
综合积分: 6 分
注册时间: 2016-07-19
最后登录: 2017-05-18
楼主  发表于: 2016-08-08 16:11

 ARM模拟成U盘的问题

最近在做一个实验:
        我将6410ARM开发板的nandflash的mtdblock3(一个分区)通过USB模拟成一个U盘,是开发板的/dev/mtdblock3。
配置好内核make uImage,make modules,然后将/arch/arm/boot/uImage 拷贝到tftp目录下,将drivers/usb/gadget/g_file_storage.ko拷贝到网络文件系统目录下。然后将内核映像uImage烧写到nandflash中,打开开发板电源,启动成功。然后执行insmod g_file_storage.ko file=/dev/mtdblock3 stall=0 removable=1,开发板上出现
g_file_storage gadget: No serial-number string provided!
g_file_storage gadget: File-backed Storage Gadget, version: 1 September 2010
g_file_storage gadget: Number of LUNs=1
g_file_storage gadget-lun0: ro=0, nofua=0, file: /dev/mtdblock3
s3c-hsotg s3c-hsotg: s3c_hsotg_irq: USBRst
s3c-hsotg s3c-hsotg: bound driver g_file_storage

正常!

然后将USB线缆一端接到开发板device的小口,一端接到windows系统的usb口。然后在win上会多出一个盘符,在我的电脑上是I 盘,然后对I盘进行FAT32格式化,就可以在win上打开I盘,并可以在其中创建文件等操作。比如创建一个11.txt,里面写入123内容。在usb线缆插好后,在开发板串口终端(SecureCRT)会出现:
s3c-hsotg s3c-hsotg: new device is full-speed
s3c-hsotg s3c-hsotg: S3C_GINTSTS_USBSusp
s3c-hsotg s3c-hsotg: s3c_hsotg_irq: USBRst
usb 1-2: new full speed USB device number 2 using s3c2410-ohci
s3c-hsotg s3c-hsotg: new device is high-speed
hub 1-0:1.0: unable to enumerate USB device on port 2
s3c-hsotg s3c-hsotg: s3c_hsotg_irq: USBRst
s3c-hsotg s3c-hsotg: new device is high-speed
s3c-hsotg s3c-hsotg: new address 1
g_file_storage gadget: high speed config #1

正常!

然后执行mkdir /mnt/U_Storage,即在/mnt目录下创建U_Storage目录,然后执行mount -t vfat /dev/mtdblock3 /mnt/U_Storage/将/dev/mtdblock3挂载到/mnt/U_Storage目录下。进入/mnt/U_Storage目录,就可以看到刚刚PC机上创建的11.txt。
而且在PC机创建文件,在ARM就可以实时看到内容更新。而在ARM这边创建文件,PC机端就不能实时看到内容更新,得重新插拔USB线才能看到更新的内容。 为什么呢?求大侠们解答!