软件系统架构

1.主机端软件架构

USB设备驱动->USB核心->USB主控制器驱动->USB主控制器

2.设备端软件架构

Gadget驱动->Gadget API->UDC驱动->USB控制器

MassStrorage驱动体验(host 接口)

可以让主机挂载大容量存储器

1.主控器驱动配置

make menuconfig ARCH=arm

device drivers->usb support->[*]support for host-side usb-><*>ohci hcd support

2.配置设备驱动

device drivers->usb support->[*]support for host-side usb->

usb mass storage support

3.配置热插拔

general setup->[*]configure standard kernel features(for small systems)

->[*]support for hot-pluggable devices

4.配置块设备

device drivers->[*]block devices-><*>low performance usb block driver

device drivers->scsi device support-><*>scsi device support

device drivers->scsi device support-><*>scsi disk suppport

device drivers->scsi device support-><*>scsi generic support

5.配置文件系统

file systems->dos/fat/nt filesystems-><*>msdos fs support

file systems->dos/fat/nt filesystems-><*>vfat(windows-95)fs support

file systems->dos/fat/nt filesystems->(936)default codepage for fat

file systems->dos/fat/nt filesystems->(cp936)default iocharset for fat

file systems->partition types->[*]advance partition selection->

[*]pc bios(msdos partition tables) support

file systems->native language support->

<*>simplified chinese charset(cp936,gb2312)

file systems->native language support-><*>NLS UTF8

5.编译内核

make uImage ARCH=arm CROSS_COMPILE=arm-linux-

6.挂载块设备

mount /dev/uba /mnt

RNDIS驱动体验(salve 接口)

可以使USB端口模拟成网卡使用

1.配置控制器驱动

make menuconfig ARCH=arm

device drivers->usb support-><*>usb gadget support->

usb peripheral controller(s3c2410 usb device controller)

2.配置gadget驱动

device drivers->usb support-><*>usb gadget support->[M]usb gadget drivers

device drivers->usb support-><*>usb gadget support->

[M]ethernet gadget(with cdc ethernet support)->[*]rndis support

3.编译内核

make uImage ARCH=arm CROSS_COMPILE=arm-linux-

4.编译模块

make modules ARCH=arm CROSS_COMPILE=arm-linux-

cp drivers/usb/gadget/g_ether.ko .../rootfs

5.安装模块

insmod g_ether.ko

6.启动usb网卡

ifconfig usb0 192.168.30.1

7.安装usb网卡驱动

打开Windows设备管理器->更新驱动程序软件->从计算机的设备驱动程序表中选择->网络适配器->Microsoft Corporation->Remote NDIS Compatible Device

8.设置usb网卡地址

9.测试usb网卡

ping 192.168.30.1

[国嵌攻略][163][linux-usb软件系统架构]的更多相关文章

  1. [国嵌攻略][103][Linux内核模块基础]

    什么是内核模块 Linux内核的整体结构非常庞大,其中包含的组件也非常多,如何使用这些组件.一种方式是把所有的组件都编译进内核文件,即zImage或bzImage,但这样会导致一个问题,占用内存过多. ...

  2. [国嵌攻略][119][Linux中断处理程序设计]

    裸机中断: 1.中断统一入口. 2.注册中断处理程序. 3.根据中断源编号,调用中断处理程序. Linux中断 1.在entry-armv.S中的_irq_svc是中断统一入口. 2.获取产生中断源的 ...

  3. [国嵌攻略][108][Linux内核链表]

    链表简介 链表是一种常见的数据结构,它通过指针将一系列数据节点连接成一条数据链.相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入 ...

  4. [国嵌攻略][107][Linux进程管理子系统]

    进程与程序 1.程序:存放在磁盘上的一系列代码和数据的可执行映像,是一个静止的实体. 2.进程:是一个执行中的程序,它是一个动态的实体. 进程四要素 1.有一段程序供其执行.这段程序不一定是某个进程所 ...

  5. [国嵌攻略][106][Linux内存管理子系统]

    内存管理子系统 1.虚拟地址与物理地址的映射 2.物理内存的分配 Linux虚拟地址空间分布 设备最后访问的一定是物理地址,但Linux系统中使用的都是虚拟地址.虚拟地址简单的来说就是程序中使用的地址 ...

  6. [国嵌攻略][104][Linux内核模块设计]

    内核模块示例 #inlcude <linux/init.h> #inlcude <linux/module.h> static int hello_init(){ printk ...

  7. [国嵌攻略][099][Linux内核配置与编译]

    为什么要配置内核 基于硬件和软件的需求选出需要的功能,去掉不要的功能. 内核配置的方法 make config:基于文本交互的配置. make menuconfig:基于图形菜单的配置. make m ...

  8. [国嵌攻略][098][Linux内核简介]

    Linux系统架构 1.用户空间:应用程序.C函数库 2.内核空间:系统调用接口.内核.体系结构相关代码 Linux系统利用处理器不同的工作模式,使用其中的两个级别分别来运行Linux内核与应用程序, ...

  9. [国嵌攻略][070-095][Linux编程函数手册]

    第1类 时间编程类 1.1 获取日历时间 1.1.1 函数名 time 1.1.2 函数原形 time_t time(time_t *t) 1.1.3 函数功能 返回日历时间 1.1.4 所属头文件 ...

随机推荐

  1. 搭建eclipse+tomcat开发环境

    JDK 1.6 Eclipse IDE For JEE Version Tomcat 6.0 tomcatPluginV33  //eclipse平台上的插件,但它并不是tomcat本身,需要安装独立 ...

  2. Linux(CentOS6.5)下编译Popt报错”GNU gettext is required. The latest version”(gettext已经编译安装,但是没有安装在默认目录)的解决方案

    本文地址http://comexchan.cnblogs.com/,作者Comex Chan,尊重知识产权,转载请注明出处,谢谢!   背景: 编译popt的时候出现下述报错. 直接vi查看confi ...

  3. linux下新建svn项目

    1.新建项目svnadmin create /mnt/fbdisk/svn/newproject 2.会在svn下面建立newproject目录total 24drwxr-xr-x 2 root ro ...

  4. js把通过图片路径生成base64

    主要思想: 使用canvas.toDataURL()方法将图片的绝对路径转换为base64编码. 一.图片在本地服务器: var imgSrc = "img/1.jpg";//本地 ...

  5. 删除redis 失效节点

    cluster forget命令 cluster forget nodeid

  6. Sql 两个表left join 查左表最时间最大的一条记录显示

    http://bbs.csdn.net/topics/350135010 参考 select *  from a aa left join b bb on aa.id=bb.cid and bb.ad ...

  7. strace命令详解

    转自: http://www.cnblogs.com/ahuo/p/4150623.html 备注: 这篇博文学到的不仅仅是 strace 这个命令,还有前辈的排错思路,致敬! strace 命令是一 ...

  8. Python 词云分析周杰伦《晴天》

    一.前言满天星辰的夜晚,他们相遇了...夏天的时候,她慢慢的接近他,关心他,为他付出一切:秋天的时候,两个人终於如愿的在一起,分享一切快乐的时光但终究是快乐时光短暂,因为杰伦必须出国深造,两人面临了要 ...

  9. golang 多维数组

    具体的题目如下:(就是将多维数组的行列互换) A multi-dimensional array is an array of arrays. 2-dimensional arrays are the ...

  10. PE文件详解(四)

    本文转自小甲鱼的PE文件详解系列原文传送门 到此为止,小甲鱼和大家已经学了许多关于 DOS header 和 PE header 的知识.接下来就该轮到SectionTable (区块表,也成节表). ...