Linux-USB驱动(4)-LinuxUSB系统架构

Linux下的USB系统架构我们分3小节来学习:

1、软件系统架构

2、MassStorage驱动体验,mass storage 是USB协议中的一部分, 是大容量存储器或者海量存储器的意思。我们的U盘就是利用的这个协议开发和制作的。

3、RNDIS驱动体验,rndis既是RemoteNDIS,既是远程网络驱动接口规范。Remote Network Driver Interface Specification,既是RemoteNDIS,既是远程网络驱动接口规范。基于USB实现RNDIS实际上就是TCP/IP over USB,就是在USB设备上跑TCP/IP,让USB设备看上去像一块网卡。

 

软件系统架构

软件的系统架构分为2中,一种是主机架构,就是说运行Linux的设备是一个主机,可以插入U盘等设备

最底部是一个USB主控制器,这是一个硬件,在芯片里面都会带有的。为了让这个主控制器工作起来,Linux需要有一个USB主控制器驱动。

为了方便用户设计USB设备驱动,Linux内核里面实现了一些USB核心,这里面主要是一些Linux协议之类的。

USB设备驱动就是针对插入到Linux主机上的设备来设计的。

 

另一种模型是设备端软件架构,这里运行Linux的设备变成了一个USB设备,它和PC机连接起来。

同样它需要USB控制器硬件。同时需要一个UDC驱动来实现Linux设备作为USB设备。在Linux内核中提供了一些Gadget API来方便用户实现Gadget驱动。Gadget驱动是用来干嘛的呢?它是用来实现把Linux设备变成一个USB网卡、串口的。

Mass Storage驱动体验

首先选择主控制器驱动

 

然后选择设备驱动,选择USB support里面的大容量块设备:

 

需要支持热插拔:

 

设备驱动类型:

 

 

U盘还是一个FLASH设备,需要选择这些:

 

选择支持的文件系统和语言:

 

 

然后编译内核:

#make   uImage ARCH=arm CROSS_COMPILE=arm-linux-

将内核代码下载到开发板并运行后插入U盘,提示如下:

提示生成了一个uba1的设备文件,这个就是U盘的设备文件了,把它挂在到mnt目录下:

#mount  /dev/uba1  /mnt/

查看U盘的内容:

 

这个就是我的U盘里面的内容了,但是很奇怪为什么选择了utf-8,显示中文还是乱码。查了一些资料也没有解决,先放着吧。

rndis驱动体验

选择这里的 Ethernet Gadget (S3C******)

 

然后选择:

由于上上附图选择的是模块,我们需要把模块编译一下:

#make  ARCH=arm  CROSS_COMPILE=arm-linux-

 

把生成的代码拷贝到开发板中:

# cp   drivers/usb/gadget/g_ether.ko

 

然后安装这个模块:

#insmod g_ether.ko

 

然后设置USB的IP地址,执行:

#ifconfig   usb0  192.168.XX.XX

 

接入USB到PC机后设备管理器中会出多出来一个网卡。

更多Linux资料及视频教程点击这里

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值