[国嵌攻略][163][linux-usb软件系统架构]
软件系统架构
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软件系统架构]的更多相关文章
- [国嵌攻略][103][Linux内核模块基础]
什么是内核模块 Linux内核的整体结构非常庞大,其中包含的组件也非常多,如何使用这些组件.一种方式是把所有的组件都编译进内核文件,即zImage或bzImage,但这样会导致一个问题,占用内存过多. ...
- [国嵌攻略][119][Linux中断处理程序设计]
裸机中断: 1.中断统一入口. 2.注册中断处理程序. 3.根据中断源编号,调用中断处理程序. Linux中断 1.在entry-armv.S中的_irq_svc是中断统一入口. 2.获取产生中断源的 ...
- [国嵌攻略][108][Linux内核链表]
链表简介 链表是一种常见的数据结构,它通过指针将一系列数据节点连接成一条数据链.相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入 ...
- [国嵌攻略][107][Linux进程管理子系统]
进程与程序 1.程序:存放在磁盘上的一系列代码和数据的可执行映像,是一个静止的实体. 2.进程:是一个执行中的程序,它是一个动态的实体. 进程四要素 1.有一段程序供其执行.这段程序不一定是某个进程所 ...
- [国嵌攻略][106][Linux内存管理子系统]
内存管理子系统 1.虚拟地址与物理地址的映射 2.物理内存的分配 Linux虚拟地址空间分布 设备最后访问的一定是物理地址,但Linux系统中使用的都是虚拟地址.虚拟地址简单的来说就是程序中使用的地址 ...
- [国嵌攻略][104][Linux内核模块设计]
内核模块示例 #inlcude <linux/init.h> #inlcude <linux/module.h> static int hello_init(){ printk ...
- [国嵌攻略][099][Linux内核配置与编译]
为什么要配置内核 基于硬件和软件的需求选出需要的功能,去掉不要的功能. 内核配置的方法 make config:基于文本交互的配置. make menuconfig:基于图形菜单的配置. make m ...
- [国嵌攻略][098][Linux内核简介]
Linux系统架构 1.用户空间:应用程序.C函数库 2.内核空间:系统调用接口.内核.体系结构相关代码 Linux系统利用处理器不同的工作模式,使用其中的两个级别分别来运行Linux内核与应用程序, ...
- [国嵌攻略][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 所属头文件 ...
随机推荐
- 回顾2017系列篇(二):移动端APP设计趋势
移动端APP在2017年经历了诸多的变化, 人工智能.聊天式的界面.响应式设计.虚拟现实(VR)和增强现实(AR)让设计师不断面临新的挑战.研究表明,用户每天耗费在手机和平板上的平均时长为158分钟, ...
- Python学习(二):函数入门
1.函数代码格式: def 函数名(): 函数内容 执行函数:函数名() 2.代码举例: #!/usr/bin/env python #coding=utf-8 #定义函数 def Func1(): ...
- locate 命令详解
locate :http://www.cnblogs.com/peida/archive/2012/11/12/2765750.html 作用:locate命令可以在搜寻数据库时快速找到档案,数据库由 ...
- Concurrency Is Not Parallelism (Rob pike)
Rob pike发表过一个有名的演讲<Concurrency is not parallelism>(https://blog.golang.org/concurrency-is-not- ...
- go generate 生成代码
今后一段时间要研究下go generate,在官网博客上看了Rob Pike写的generating code,花了一些时间翻译了下.有几个句子翻译的是否正确有待考量,欢迎指正. 生成代码 通用计算的 ...
- Appsacn 定期自动化扫描
appscan提供了计划扫描的选项,配合windows的计划任务,可以按需设定. 操作流程如下: 1.打开Appsacn--工具---扫描调度程序---新建 2.新建后显示如下窗口 3.填写好相应的设 ...
- 记录一个从没见过的bug
js的默认启动 $(function(){ )}; 不识别,意思是如果你把js内容放入这个东西里面,它不会执行.必须把它去掉才可以. 包括.tag里的文件也是一样. 这是发生在系统框架迁移发生的事,以 ...
- c#中不同类中变量的引用方法
(1)如果两个类没有继承关系,存取另一个类中变量的方法如下: public class A { // 注意: // Count是静态变量(static),称为类变量.类变量无需实例化即可使用 publ ...
- thinkinginjava学习笔记07_多态
在上一节的学习中,强调继承一般在需要向上转型时才有必要上场,否则都应该谨慎使用: 向上转型和绑定 向上转型是指子类向基类转型,由于子类拥有基类中的所有接口,所以向上转型的过程是安全无损的,所有对基类进 ...
- Head First设计模式之模板方法模式
一.定义 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变算法结构的情况下,重定义该算法中的某些特定步骤. 比较通俗的说法,子类决定如何实现算法中的某些步骤,比如两个一连串 ...