前几天,搞了 hid设备,通过usb hid设备和windows进行通信。现在开始搞这个 mass storge

首先说明 环境:linux版本:3.15        使用开发板:SAMa5d3        编译环境:ubuntu 12.04

1、首先配置内核,见下图

进入

Device Drivers  --->

选择进入

[*] USB support  --->

再选择最后一项进入

    USB Gadget Support  --->

选择编译成模块,保存退出。

USB Peripheral Controller  --->

│ │                              USB Gadget Drivers

│ │                              < >     USB functions configurable through configfs

│ │                              < >     Gadget Zero (DEVELOPMENT)

│ │                              < >     Ethernet Gadget (with CDC Ethernet support)

│ │                              < >     Network Control Model (NCM) support

│ │                              < >     Gadget Filesystem

│ │                              < >     Function Filesystem

│ │                              Mass Storage Gadget

会在driver/usb/gadget/目录下生成以下的ko文件:

-rw-rw-r-- 1 a_tu a_tu 11253  2月 10 18:03 drivers/usb/gadget/g_mass_storage.ko

-rw-rw-r-- 1 a_tu a_tu 49265  2月 10 18:03 drivers/usb/gadget/libcomposite.ko

-rw-rw-r-- 1 a_tu a_tu 57658  2月 10 18:03 drivers/usb/gadget/usb_f_mass_storage.ko

如果你是用的2.6.3的内核,内核配置与前面的除了最后一项不同,其余一样。最后一项选择:

File-backed Storage Gadget

则生成的ko文件为:

drivers/usb/gadget/g_file_storage.ko

把这些驱动文件和内核拷贝到开发板中。

2、对开发板的操作

首先建立一个镜像模拟U盘

#dd if=/dev/zero of=vfat.img bs=1M count=20    //制作一个fat格式的镜像文件,在主机上、开发板上做都可以

然后 mkdir vfat_mount_point//创建挂载点

mkfs.vfat    vfat.img//格式化做出的镜像  (如果你的开发板没有mkfs命令,可以将sd卡插入虚拟机,在虚拟机的ubuntu下执行)当然如果这一步,没有做也没有关系,等windows发现新可移动设备的时候,会提示你要格式化设备,这时,会提示你选择格式化的格式,选择默认,格式化就ok了。

最后执行脚本 storage.sh 。把这些命令写成一个脚本很方便,不用一条条的输入,你还可以将这个脚本写的 /etc/init.d/rcS/这个启动文件中,让它每次开机都自己运行。脚本内容如下。提醒,下面命令要按顺序写

losetup /dev/loop0 vfat.img          //将镜像与loop0建立连接

insmod gadgetfs.ko

insmod libcomposite.ko

insmod usb_f_mass_storage.ko

mount /dev/loop0 vfat_mount_point     //挂载挂载点

insmod g_mass_storage.ko  file=/dev/loop0 stall=0 removable=1

执行完脚本之后,内核提示信息g_mass_storage gadget: g_mass_storage ready,说明你已经成功了,插上usb设备。windows会提示你发现新的可移动设备。

一切完成之后,验证是否正确。发现在windows下写入文件或者新建文件夹。在开发板的挂载点的文件夹中能同步到windows的信息。而在开发板中新建的文件或文件夹,需要拔下设备,重连之后才能同步到windows的可移动设备中。

可能还有地方有问题没有发现,希望高手指点更正!!!

linux 开发板模拟u盘,linux 开发板(Linux USB Gadget) 模拟u盘相关推荐

  1. 使用u盘时要与计算机usb接口相连,u盘是通过什么接口与电脑交换数据的?

    目前U盘主要是通过"USB"接口与电脑交换数据的.U盘,全称USB闪存驱动器,是一种使用USB接口的无须物理驱动器的微型高容量移动存储产品,通过USB接口与电脑连接实现即插即用. ...

  2. linux 开发板模拟u盘,ARM-Linux开发 - USB Gadget Storage 制作模拟U盘

    -------------转载-------------- 作者:yimiyangguang1314 来源:CSDN 原文:https://blog.csdn.net/yimiyangguang131 ...

  3. linux 开发板模拟u盘,S5P4418开发板Linux下实现模拟U盘教程飞凌嵌入式

    飞凌嵌入式ARMCortex-A9 S5P4418开发板上能否满足U盘的功能?其实可通过修改内核配置和文件系统相关内容,在OK4418开发板上实现模拟U盘功能,模拟U盘可以帮助我们实现开发板与Wind ...

  4. USB Gadget iMX6UL开发板模拟U盘

    iMX6UL开发板模拟U盘 参考资料: 内核源码内:/{内核目录}/Documentation/usb/目录下 gadget-testing.txt mass-storage.txt 文件 网址:Ba ...

  5. USB Gadget iMX6U LL开发板模拟U盘

    IMX6ULL开发板模拟U盘 Linux版本:4.1.15 使用开发板:IMX6ULL 编译环境:Ubuntu 14.04 步骤如下: 1. 首先配置内核 进入 Device Drivers ---& ...

  6. qt工程在linux系统里颜色显示错误_【飞凌嵌入式RK3399开发板试用体验】+QT开发环境搭建测试(二)...

    作者:飞扬的青春 在拿到开发板之后,已经体验了Android操作系统,接下来就是体验Linux下的开发,本次以QT的一个小案例来测试下. 首先是自己先搭建了一个Ubuntu18.04的虚拟机,使用真机 ...

  7. linux 控制虚拟串口,linux虚拟串口控制器实现-适用于无开发板学习tty driver-好向圈...

    在前面几章,我们介绍了tty子系统的框架.数据结构.tty驱动的注册与注销等内容,本章我们借助 之前学习的内容开发一个虚拟的串口控制器驱动,以便我们理解开发串口驱动的步骤及驱动开发实践. 本次实现的虚 ...

  8. linux下ad数模转换驱动程序设计,iTOP-4412开发板实现3路ADC数模转换驱动例程

    学习下 linux 数模程序驱动的编写,本节我们实现的功能是实现三路 ADC 数模转换. 驱动程序 驱动程序的名字:"itop4412_adc.c". 要想把这个驱动注册到内核,先 ...

  9. 假设linux分配给u盘设备名是,嵌入式linux开发基础试卷-应用物理A答案

    试 卷 考试科目: 嵌入式 linux 开发基础 姓名: 试卷适用专业(班) : 09 应用物理 套别:A 套(√)B 套( ) 五 20 六 七 总计 100 考核方式:开卷( )闭卷(√) 了多达 ...

最新文章

  1. android 自定义ViewGroup和对view进行切图动画实现滑动菜单SlidingMenu[转]
  2. 在Visual Studio中使用命令行参数进行调试
  3. 文件处理之解决使用 feof(c语言)或(fin.eof())出现多读问题
  4. Dell最近的几款显示器看上去还不错的样子
  5. ubuntu 编译php5.6,Ubuntu 16.04 源码编译 PHP5.6
  6. 个人学习进度条------第八周
  7. OpenCV_03 图像的算数操作:图像的加法+图像的混合
  8. Liskov替换原则(LSP)
  9. 移动端的注册登录设计灵感!
  10. 如何决定何时使用Node.js?
  11. CVPR2022 | 利用域自适应思想,北大、字节跳动提出新型弱监督物体定位框架
  12. 错误使用 xlim (line 31) 范围必须为包含递增的日期时间值的 2 元素向量
  13. 以太坊智能合约开发第五篇:字符串拼接—Solidity
  14. tomcat版本号进行隐藏或者删除
  15. JTT 808-2019 道路运输车辆卫星定位系统 终端通讯协议及数据格式.PDF
  16. c++打印心形_c语言如何打印心
  17. python数据类型的性能
  18. c语言电子万年历大作业,C语言实现一个简单的电子万年历
  19. GPRS 中的PDP上下文名词解释
  20. CP56time2a解码

热门文章

  1. 焊接机器人的坡口填充功能_《金属焊接》课后习题参考答案完整版
  2. Windows系统QQ桌面版聊天记录存放位置转移聊天记录
  3. islide软件测试计划
  4. 简单的网络文件传输工具(TCP连接)
  5. 应用统计432考研复试复试提问总结精简版【一】
  6. Orleans 2.0 官方文档中文版 (闫辉)
  7. 【论文代码复现2】Clustered sampling based on sample size
  8. JAVA 版多商家入驻 直播带货 商城系统 B2B2C 商城源码之 B2B2C 产品概述
  9. 3. ackerman函数的递归实现算法用java语言_ackerman递归
  10. Git版本控制中的文件的四种状态