USB驱动移植教程

合集下载

USB通用驱动安装指南

USB通用驱动安装指南

第一种方法:自动搜索安装
1、先将您的驱动光盘放入光驱,然后将您所购买的USB电缆插入电脑(台式或
笔记本电脑),电脑右下角就会出现正在安装驱动程
序2、
3、这样,自动搜索安装就安装好了。

第二种方式:手动安装
1、先将您的驱动光盘放入光驱,打开光盘里USB2.0_DRIVER
文件夹,点击
安装,即会出来“图片1”所示。

图片1
2. 点击
即可,等到出现以下显示时,恭喜你,你的驱动已安装
成功!
4、 这时返回到你电脑的“设备管理器”里就可以在“端口”里面看到电缆生成
的新串口了。

6、然后你需要在PLC 编程软件里把端口修改成与电缆生成的新串口一至就可
以使用。

USB无线网卡的Linux驱动移植

USB无线网卡的Linux驱动移植
( o -a a i)8 rls x e so s 。 n nh mrdo LWieesE tn in ]
( )增 加 D OP支 持 2 H
操 作 系 统 为 Wid ws Ln x Ma _ 。 n o / iu / c】 ]
1 移 植 要 求
移 植 目 标 是 在 原 有 ARM 监 测 系 统 的 基 础 上 实 现
配置 : ro @ l ah s ts] ma eme u o f o t o lo t e t # c k n c ni g
达 1O Mb s I E 8 2 1 n ; 作 模 式 Ad— Ho 5 p (E E 0 . 1 ) 工 c和
I fa tu te 选 ; 密 特 性 为 6 / 2 nr sr cr 可 加 4 1 8位 W E WP P、 A/
文 件 替 换 完 毕 进 行 内核 编 译 :
ma l ke z mag e
② 修 改 Ma ei 。 k fe l
修 改 第 8行 , 置 可 执 行 文 件 安 装 路 径 : 设
PREF X一 / s/o a/ rls I u r lc lwiees
生 成 内核 zma e 下 载 到 目标 板 。在 内核 编译 的过 I g后 程 中 , 会 出现 许 多 错 误 , 要 是 C O语 法 错 误 、 调 用 还 主 9 所 函 数 数 据 类 型不 匹 配 、 符 号 未 定 义 等 问题 。 主要 的 修 改 段
选 择 [ ei r e]+- ew rigsp ot- [ t D v eD i r- [ t okn u p r] ̄ Ne— c v N - w ri pi s。务 必 选 中“ ak t ok t和 “P: ok got n] n o P c e sc e” I DH—

安柏USB转接盒驱动安装说明

安柏USB转接盒驱动安装说明

安柏USB转接盒驱动安装说明
1、将USB转接盒通过USB通讯线缆与电脑USB口连接,并检查USB转接盒“LINK”灯是
否常亮,如不是,请检查连接线及电脑USB口是否正常。

2、USB转接盒连接好后,电脑会提示发现新硬件,如下图所示。

3、然后电脑会弹出下图所示的硬件更新向导,选择“从列表或指定位置安装”选项,点击
“下一步。

4、进入下图所示的界面后,选择“在这些位置上搜索最佳驱动程序”选项下面的“在搜索
中包括这个位置”选项。

点击上图的“浏览”,选择安柏安装光盘下面的“FTDI Driver”文件夹,点击“确定”,如下图所示。

然后再点击上图的“下一步”。

5、电脑会自动安装驱动文件,安装完成以后,会再弹出一次发现新硬件安装向导,重复上
面步骤安装。

安装完成以后再电脑设备管理器中的“端口(COM和LPT)”一项中会发现多出来一个COM通讯端口,如下图所示,此时USB转接盒驱动已经安装完成。

安卓手机如何手动安装USB驱动连接到电脑

安卓手机如何手动安装USB驱动连接到电脑

安卓手机如何手动安装USB驱动连接到电脑
知道安卓手机手动安装USB驱动连接到电脑是怎么样的吗,该怎么操作呢,那么安卓手机如何手动安装USB驱动连接到电脑的呢?下面是店铺收集整理的安卓手机如何手动安装USB驱动连接到电脑,希望对大家有帮助~~
安卓手机手动安装USB驱动连接到电脑的方法
工具/原料
驱动下载:推荐下载各机型自己的驱动,没有的话可以尝试用万能驱动
方法/步骤
进入“设置”->“应用程序”->“开发”勾选“USB调试程序”。

这样设备才可以通过USB连线时被PC识别到。

将已经开启“USB调试”的手机通过USB线连接PC,下面就要开始手动安装驱动的过程。

右击“我的电脑”选择“属性”就进入“系统设置”页面。

在“硬件”标签页打开“设备管理器”
在“设备管理器”面板我们可以看到其中“Android USB Devices”设备有个黄色的感叹号,表示这个设备还不能正常使用,需要安装驱动。

系统会自动跳出硬件安装向导,如果没有跳出可以通过右击带有黄色感叹号的设备,选择“更新驱动程序”,我们事先需要下载好驱动程序,这里就不选择联网搜索驱动。

选择“从列表或者指定位置安装”
接着通过“浏览”找到下载好的驱动所在的文件夹(这里以Windows XP系统x86芯片为例)。

点击下一步向导就会开始安装驱动,经过十几秒Android驱动即可完成安装。

驱动安装完毕后,就可以看到“设备管理器“中Android USB设备的黄色感叹号已经去掉。

linux-2.6.22下USB驱动移植

linux-2.6.22下USB驱动移植

linux-2.6.22下USB驱动移植一、代码修改修改在arch/arm/mach-s3c2410目录下的mach-smdk2410.c,添加如下内容/**********************add by nick*************************************/static struct s3c2410_hcd_info usb_ljd2410_info = {.port[0] = {.flags = S3C_HCDFLG_USED}};int usb_ljd2410_init(void){unsigned long upllvalue = (0x7812)|(0x024)|(0x03);printk(“USB Control, (c) 2006 sbc2410\n”);s3c_device_usb.dev.platform_data = &usb_ljd2410_info;while(upllvalue!=__raw_readl(S3C2410_UPLLCON)){__raw_writel(upllvalue,S3C2410_UPLLCON);mdelay(1);}return 0;}/***************************end add**********************/同时将usb_ljd2410_init()函数添加到smdk2410_map_io函数里面进行初始化,如下所示:static void __init smdk2410_map_io(void){s3c24xx_init_io(smdk2410_iodesc, ARRAY_SIZE(smdk2410_iodesc));# Linux100中文网/s3c24xx_init_clocks(0);s3c24xx_init_uarts(smdk2410_uartcfgs, ARRAY_SIZE(smdk2410_uartcfgs));usb_ljd2410_init();}//注意,不能忘了添加头文件#include asm/arch/regs-clock.h>#include asm/arch/usb-control.h>#include linux/device.h>#include linux/delay.h>修改后的整个文件如下:#include linux/kernel.h>#include linux/types.h>#include linux/interrupt.h>#include linux/list.h>#include linux/timer.h>#include linux/init.h>#include linux/serial_core.h>#include linux/platform_device.h>#include “asm-arm/arch-s3c2410/regs-cs8900.h”#include asm/mach/arch.h>#include asm/mach/map.h>#include asm/mach/irq.h>#include asm/hardware.h>#include asm/io.h>#include asm/irq.h>#include asm/mach-types.h>#include asm/arch/regs-serial.h>#include asm/arch/fb.h>#include asm/plat-s3c24xx/devs.h>#include asm/plat-s3c24xx/cpu.h>#include asm/plat-s3c24xx/common-smdk.h>#include asm/arch/regs-clock.h>#include asm/arch/usb-control.h>#include linux/device.h>#include linux/delay.h>static struct map_desc smdk2410_iodesc[] __initdata = {/* nothing here yet */{vSMDK2410_ETH_IO,pSMDK2410_ETH_IO,SZ_1M,MT_DEVICE}};#define UCON S3C2410_UCON_DEFAULT#define ULCON S3C2410_LCON_CS8 | S3C2410_LCON_PNONE | S3C2410_LCON_STOPB#define UFCON S3C2410_UFCON_RXTRIG8 | S3C2410_UFCON_FIFOMODEstatic struct s3c2410_uartcfg smdk2410_uartcfgs[] __initdata = {[0] = {.hwport = 0,.flags = 0,.ucon = UCON,.ulcon = ULCON,.ufcon = UFCON,},[1] = {.hwport = 1,.flags = 0,.ucon = UCON,.ulcon = ULCON,.ufcon = UFCON,},[2] = {.hwport = 2,.flags = 0,.ucon = UCON,.ulcon = ULCON,.ufcon = UFCON,}};//nick LCD Driver 2009.3.22/* LCD driver info *//* Configuration for 800*480 */static struct s3c2410fb_mach_info ljd2410_tft_cfg __initdata = {.type = S3C2410_LCDCON1_TFT,.regs = {.lcdcon1 = S3C2410_LCDCON1_TFT16BPP |S3C2410_LCDCON1_TFT |S3C2410_LCDCON1_CLKV AL(0x01),.lcdcon2 = S3C2410_LCDCON2_VBPD(39) |S3C2410_LCDCON2_LINEV AL(479) | /*480*/S3C2410_LCDCON2_VFPD(19) |S3C2410_LCDCON2_VSPW(3),.lcdcon3 = S3C2410_LCDCON3_HBPD(49) |S3C2410_LCDCON3_HOZV AL(799) | /* 800 */S3C2410_LCDCON3_HFPD(19),.lcdcon4 = S3C2410_LCDCON4_MV AL(13) |S3C2410_LCDCON4_HSPW(99),.lcdcon5 = S3C2410_LCDCON5_FRM565 |S3C2410_LCDCON5_INVVLINE |S3C2410_LCDCON5_INVVFRAME |S3C2410_LCDCON5_PWREN |S3C2410_LCDCON5_HWSWP,},.lpcsel = 0x00,.gpccon= 0xaaaaaaaa,.gpccon_mask= 0xffffffff,.gpcup= 0xffffffff,.gpcup_mask= 0xffffffff,.gpdcon= 0xaaaaaaaa,.gpdcon_mask= 0xffffffff,.gpdup= 0xffffffff,.gpdup_mask= 0xffffffff,.width =800,.height = 480,.xres = {.min = 800,.max = 800,.defval = 800,},.yres = {.min = 480,.max = 480,.defval = 480,},.bpp = {.min = 16,.max = 16,.defval = 16,},};//nick LCD/**********************add by nick*************************************/static struct s3c2410_hcd_info usb_ljd2410_info = {.port[0] = {.flags = S3C_HCDFLG_USED}};int usb_ljd2410_init(void){unsigned long upllvalue = (0x7812)|(0x024)|(0x03);printk(“USB Control, (c) 2006 sbc2410\n”);s3c_device_usb.dev.platform_data = &usb_ljd2410_info;while(upllvalue!=__raw_readl(S3C2410_UPLLCON)){__raw_writel(upllvalue,S3C2410_UPLLCON);mdelay(1);}return 0;}/***************************end add**********************/static struct platform_device *smdk2410_devices[] __initdata = {&s3c_device_usb,&s3c_device_lcd,&s3c_device_wdt,&s3c_device_i2c,&s3c_device_iis,};static void __init smdk2410_map_io(void){s3c24xx_init_io(smdk2410_iodesc, ARRAY_SIZE(smdk2410_iodesc));s3c24xx_init_clocks(0);s3c24xx_init_uarts(smdk2410_uartcfgs, ARRAY_SIZE(smdk2410_uartcfgs));usb_ljd2410_init();}static void __init smdk2410_init(void){s3c24xx_fb_set_platdata(&ljd2410_tft_cfg);platform_add_devices(smdk2410_devices, ARRAY_SIZE(smdk2410_devices));smdk_machine_init();}MACHINE_START(SMDK2410, “SMDK2410”) /* @TODO: request a new identifier and switch* to SMDK2410 *//* Maintainer: Jonas Dietsche */.phys_io = S3C2410_PA_UART,.io_pg_offst = (((u32)S3C24XX_V A_UART) >> 18) & 0xfffc,.boot_params = S3C2410_SDRAM_PA + 0x100,.map_io = smdk2410_map_io,.init_irq = s3c24xx_init_irq,.init_machine = smdk2410_init,.timer = &s3c24xx_timer,MACHINE_END下面这个连接有大虾们对USB驱动移植的讨论Device Drivers --->Generic Driver Options --->Hotplug firmware loading supportBlock devices --->Low Performance USB Block driverSCSI device support --->SCSI generic supportProbe all LUNs on each SCSI deviceUSB support --->Support for Host-side USBUSB device filesystemOHCI HCD supportUSB Mass Storage supportUSB Monitor3、加入了MSDOS fs和VFAT fs的支持。

USB摄像头驱动移植

USB摄像头驱动移植

1通过SMB服务将SDK-H264/server目录拷贝到项目目录下
2解压内核到当前目录
命令#cd /home/guoqian/project/h264/server/kernel
#tar zxvf linux.2.6.29.tar.gz
解压完成后的文件为linux2.6.29
3清理中间文件、配置文件命令#cd linux-2.6.29
#make distclean
4选择参考配置文件
命令#cp config-h264 .config
5配置内核
#make menucofing ARCH=arm CROSS_COMPILE=arm-linux-
要使内核支持USB摄像头驱动,内核必须选上以下配置选项Device drivers→multimedia devices→
Video capture adapters→V4L USB devices→
最后保存退出。

配置文件config-h264已配置了上述选项
6编译内核
命令#make ulmage ARCH=arm CROSS_COMPILE=arm-linux-
编译完成后生成的内核映像ulmage位于arch/arm/boot/目录下。

7将ulmage拷贝到tftp服务目录/tftpboot
命令#cp arch/arm/boot/ulmage /tftpboot/ulmage-h264
至此USB摄像头驱动移植的工作就完成了。

Usb摄像头驱动移植流程

Usb摄像头驱动移植流程

cd ../arm_uvccapture cp –r arm_uvccapture /fs
网域时代旗下
嵌入式培训第一品牌
5. 搭建 NFS 6. 将 fs 下文件全部移到板子上 7. cd arm_uvc insmod ko 文件 ./arm_uvccapture, 在当前目录下产生 snap。jpg
网域时代旗下
嵌入式培训第一品牌
mkdir –p bin include lib man/man 1 tar –zxf jpegsrc.v6b.tar.gz cd jpeg-6b ./configure –prefix=/root/arm_libpeg –exec-prefix=/root/arm_libjpeg vim Makefile CC=arm-linux-gcc AR=arm-linux-ar rc AR2 = arm-linux-ranlib make make install

cd ../arm_libjpeg/lib cp * /fs/lib
4. uvccapture tar –vxf uvcapture-0.5.tar.bz2 vim Makefile 修改以下 CC=arm-linux-gcc CPP=arm-linux-g++ PREFIX=/root/arm_uvccapture make make install
网域时代旗下
嵌入式培训第一品牌
Usb 摄像头驱动移植流程 1. 交叉编译 版本 arm-linux-gcc-3.4.1 tar –zxvf arm-linux-gcc-3.4.1.tar.gz cd ./usr/local cp arm/ /usr/local –rf vim /etc/profile 最后加一句 PATH=$PATH:/usr/local/arm/3.4.1.bin reboot 2.uvc 驱动移植 tar –zxf uvcvideo.tar.gz cd uvcvideo vim Makefile 31 行处 KERNELRELEASE:=/root/linux-2.6.18 ARCH=arm CROSS_COMPILE=arm-linuxmake 将产生的 uvcvideo 拷出来 fs 下 3. libjpeg 解码库的移植 mkdir arm_libjpeg cd arm_libjpeg

USB驱动移植教程

USB驱动移植教程

USB驱动移植教程USB驱动移植教程一.USB驱动框架在Linux系统中,提供了主机侧和设备侧视角的USB驱动框架,这里,仅仅讲解主机侧角度看到的USB驱动框架。

从主机侧的角度而言,需要编写的USB驱动程序包括主机控制器驱动和设备驱动两类。

USB主机控制器驱动程序控制插入其中的USB设备,而USB设备驱动程序控制该设备如何作为设备与主机通信。

在USB主机控制器驱动和USB设备驱动之间还有一层叫USB核心层。

USB核心负责USB驱动管理和协议处理工作,它通过定义一些数据结构、宏和功能函数,向上为USB设备驱动提供编程接口,向下为USB主机控制器驱动提供编程接口;通过全局变量维护整个系统的USB设备信息,完成设备热插拔控制、总线数据传输控制等。

说了那么多,无图无真相啊~~Linux USB主机侧驱动总体框架二.USB驱动移植步骤1.S5PV210主机控制驱动的移植USB主机控制器有3种规范,UHCI(Universal Host Controller Interface),这种规范主要是Intel、Via芯片公司提供支持PC主板的;OHCI(Open Host Controller Interface),这种规范是微软提出来的,主要应用在非PC系统上的嵌入式领域上的USB芯片;EHCI(Enhanced Host Controller Interface),这种后来为提高USB速度而提出的规范,它支持最高速度为480Mbps。

在《S5PV210_UM_REV1.1》手册上搜索OHCI关键词,会发现下面一段话这表明S5PV210这款CPU支持一个USB主机接口,同时支持EHCI和OHCI这两种规范,支持USB1.1和USB2.0规范,支持最高的外设传输速率为480Mbps。

注意了,它并不支持USB3.0规范的USB设备,所以做测试的时候,千万不要拿USB3.0规范的USB设备去测试。

2.1移植ohci-s5p驱动打开内核目录:driversusbhost,发现Linux系统提供了大量的主机控制器驱动,找遍所有平台,都没有找到ohci-s5p.c源码。

USB驱动程序编写和安装导入

USB驱动程序编写和安装导入

USB驱动程序编写和安装导入10分钟完成一个USB驱动程序很多写Windows Device Driver的开发人员基本上都是使用Windows DDK进行开发的。

但是,现在也有不少人都开始借助一些辅助工具。

笔者去年开始接触到riverStudio,发现它真的是一个不错的开发工具,不仅写代码的时候思路清晰,而且和DDK的结合很好。

当然,也有很多人觉得用DriverStudio不够正宗,或者说不能很好的理解Windows Device Driver的架构。

我感觉这就有点像MFC 和SDK的关系,关于这个问题在很多地方都有争论,比如在万千新闻组上,就讨论了将近2个月。

每个人都有自己的最爱,都有自己的习惯,只要你能把事情做好,我想用什么方法应该都是一样的。

如果你已经习惯了用DDK开发,那完全还可以继续用下去;如果你觉得DriverStudio不错,那尝试用一个可以给你按照OOP概念来编程的工具有什么不好呢?在驱动开发网上,经常看到有人询问一些关于DriverStudio的使用的问题。

我正好很有幸用它作了几个驱动程序,包括VXD, KMD和WDM,稍微有点心得,因此想写下来给大家作一个小小的参考。

如果其中有错误,欢迎大家给我指出,谢谢。

下面我就介绍一下用DriverStudio开发一个USB驱动程序的过程。

这个USB设备有3个双向端点,每个端点的配置如下:EP 类型地址buffer(Bytes)0 IN/OUT Control 0x80/0x00 16/161 IN/OUT Bulk 0x81/0x01 16/162 IN/OUT Bulk 0x82/0x02 64/64我们的驱动程序需要实现的功能就是控制设备上的LED灯的亮和灭,以及通过Endpoint 2对设备进行读写。

由于DriveStudio由几个部分组成,我们写这个驱动程序只要用到DriverWorks,因此下面我们就简称它为DW。

在这里,我们假定读者已经正确的安装了DW,并且已经编译好了各个库文件。

Android2.2_usb驱动安装说明

Android2.2_usb驱动安装说明

1.机器开启后,连接usb线,桌面会弹出找到新的硬件向导。

点击取消,手动安装。

2.打开设备管理器,如下图所示,我们可以找到新的Qualcomm HSUSB设备。

3.双击Qualcomm HSUSB设备,(或者右键点击Qualcomm HSUSB设备,选择属性),4.选择详细信息,得到设备ID:VID_050C&PID_9025&MI_01.5.选择驱动程序选项卡,点击“更新驱动程序”,选择“从列表或指定位置安装(高级)”6.单击下一步,选择“不要搜索。

我要自己选择要安装的驱动程序”7.单击下一步,选择“从磁盘安装”8.点击浏览,选择USB_ANDROID2.2 所在的文件夹。

这里要用到我们前面获取的设备ID. VID_050C&PID_9025&MI_00: DIAG驱动,位于USB_ANDROID2.2\ usb_func2.2\qcser.inf VID_050C&PID_9025&MI_01: MODEM驱动,位于USB_ANDROID2.2\ usb_func2.2\qcmdm.inf VID_050C&PID_9025&MI_02: GPS驱动,位于USB_ANDROID2.2\ usb_func2.2\ qcser.infVID_050C&PID_9025&MI_04: ADB驱动,位于USB_ANDROID2.2\ adb\ android_usb.inf根据相应的设备id,选择相应的inf文件。

9.点击确定,选择下一步:10.此时弹出硬件安装对话框,点击仍然继续。

11.11.点击完成,该设备安装完成。

12.重复以上步骤,逐步安装各个设备驱动。

USB下载线驱动安装方法

USB下载线驱动安装方法

USB下载线驱动安装方法
1.把USB下载线接到电脑上会自动弹出如下的窗口,选择“从列表或指定位置安装(高级)”项。

2.然后点击“下一步”,出现如下窗口。

选择“在搜索中包括这个位置”。

3.点击“浏览”,出现如下窗口,选择驱动所在的目录。

4.选择之后返回到如下窗口,点击“下一步”。

5.然后出现如下窗口,点击“浏览”。

6.选择驱动文件所在的位置。

7.完成安装。

USB下载线驱动使用方法
PROGISP软件界面如上图所示。

1.在“编程器及接口”栏选择“USBASP”选项。

2.在“选择芯片”栏选择你所使用的芯片类型。

3.点击“芯片识别”栏的“RD”来测试是否检测的到芯片。

如果检测不到会出现如下窗口。

(出现这种情况请找出原因)
4.然后点击“调入flash”,选择你所要烧写的程序。

5.最后点击“自动”。

第8章 USB设备驱动移植 Linux系统移植(第2版) 教学课件

第8章  USB设备驱动移植 Linux系统移植(第2版) 教学课件
第8章 USB设备驱动移植
8.1 USB协议 8.2 USB主机驱动 8.3 USB设备驱动 8.4 USB鼠标键盘驱动 8.5 U盘驱动
8.1.2 总线物理拓扑结构
USB系统中的主机和设备采用的是星形连 接方式。
8.1.3 USB设备、配置、接口、
端点
每个USB设备都提供了不同级别的配置信 息,可以包含一个或多个配置,不同的配 置使设备表现出不同的功能组合(在探测 /连接期间需从其中选定一个);每个配 置则由多个接口组成;接口由多个端点组 成,每个接口代表一个基本的功能,是 USB设备驱动程序控制的对象,一个复杂 的USB设备可以具有多个接口。端点是 USB通信的最基本形式,对主机来说,每 一个USB设备接口就是一组端点的集合。
__u8 bSynchAddress;
} __attribute__((packed));
5.字符串描述符
字符串描述符被定义为 usb_string_descriptor结构体
struct usb_string_descriptor {
__u8 bLength;
//描述符长度
__u8 bDescriptorType; //描述符类型
//描述符长度
__u8 bDescriptorType;
//描述符类型编号
__le16 wTotalLength;
//配置所返回的所有数据的大小
__u8 bNumInterfaces;
//配置所支持的接口数
__u8 bConfigurationValue; //Set_Configuration命令需要的 参数值
__le16 wData[1]; //UTF-16LE 编码
} __attribute__ ((packed));

手机Usb驱动安装指南

手机Usb驱动安装指南

手机Usb驱动安装指南手机Usb驱动安装指南随着智能手机的普及,我们经常会把手机和电脑连接起来,以便在电脑上进行一些操作,比如传输文件、备份数据等等。

在连接手机和电脑时,很多人都会遇到一个问题——电脑无法识别手机。

这时就需要安装手机Usb驱动了。

下面就是一份手机Usb驱动安装指南。

一、确定手机型号首先,我们需要确定我们的手机的型号。

不同的手机品牌和型号的驱动不同,确保下载正确的驱动是第一步。

二、下载对应驱动1.官方网站下载:从手机制造商的官方网站下载最新的Usb驱动程序,这是最安全可靠的方法。

以华为手机为例,我们可以在华为官网上找到最新的Usb驱动戳这里下载。

2.驱动下载站下载:如果在制造商的官方网站上找不到对应的驱动程序,我们可以尝试到其他的驱动下载网站上搜索。

这个时候我们首要要尽量选择知名度高的网站进行下载,以避免下载到病毒或恶意软件。

三、安装Usb驱动1.安装前必须确认:在安装驱动前,我们必须确认Usb数据线正常。

如果数据线损坏就必须换一条才能继续操作。

此外,在安装驱动前,我们还需要关闭手机的USB调试模式,待驱动完成安装后再开启此模式。

2.安装步骤:1)连接手机与电脑:首先,将手机和电脑连接上,连接方式可根据您手机型号的不同来选择(如:普通USB 接口连接或USB Type-C 接口连接等)。

连接后,请确保手机正常开启。

2)解压驱动包:将压缩包解压缩后得到的文件夹中找到.exe 后缀的可执行文件。

3)安装驱动:双击exe 可执行文件,出现安装对话框,请仔细阅读,并根据提示完成安装。

4)检查安装:安装完成后,可通过电脑设备管理器查看设备列表中是否存在手机相关设备。

3.常见问题1)无法连接如果在安装驱动后连接手机仍无法识别,可能是因为我们连接方式不正确或数据线损坏等原因引起的。

此时,可尝试更换数据线或调整连接方式,如改变USB 接口位置等,以便确定问题。

2)驱动安装失败驱动安装失败可能是由于电脑系统或驱动程序上的一些问题导致的。

入门级详细usb移植教程致正在为usb烦恼的朋友

入门级详细usb移植教程致正在为usb烦恼的朋友

入门级详细USB移植教程——致正在为USB烦恼的朋友同上一篇MPU6050一样,我还是写一篇关于USB的帖子,在圈圈等玩USB的大神面前,我掌握的USB知识实在是九牛一毛,所以这篇帖子加上了入门级的修饰语。

写这篇帖子主要是为了那些想快速开发USB的人,至于想深入了解USB协议,可以先学完我这个再去看看别的高级教程可能会好点,虽然我强调自己掌握的USB知识不多,但是对于一般的应用已经足够,我这里主要是学会怎么去用USB 做自己的东西,而且我觉得刚学完一个东西就来教下别人实在是一个一举两得的做法,因为我更清楚学习时的心理和一些小问题,而且我也可以进一步总结。

我有个观点不知道其他大神中不中听,好像圈圈大神就搞了USB几年达到了精通的水平,可能一些几个月达到了很懂的水平,但是这个过程实在是很漫长,对于很多人也没有必要对USB进行彻底的研究,只要会用就好,就像你可能不懂车的高级原理,但是你会开车就好了,^_^。

其他大神不同意的话,写个高级的USB教程让我们学习下吧。

这里其实也是个人学习笔记。

记得一个月前,我想做无线鼠标,开始在网上查找资料,从那个时候开始学习USB,找了圈圈的书将前面足足看了3、4遍,还只是瞎子摸象,不过瞎子摸象很正常啦,学什么东西一开始哪里可能能够弄清全局。

看了3、4编,实在是很煎熬,一直没有什么进展,没有搞出点成果。

就开始上网找资料,让瞎子摸象来得更彻底一点。

如果学过I2C的话,可能对USB理解会更透彻点,两者在某些方面还是有共通之处的,某种意义上来说,STM32的USB跟硬件I2C有点像,89C52的USB介于软件I2C和硬件I2C之间,89C52有了USB芯片的协助后,很多时序不用自己模拟,但是编程使用芯片搞USB这过程就跟软件I2C一样的蛋疼。

首先STM32是有USB的两个数据端口的,首先看上面的这张图,是野火ISO板子USB原理图部分,一个VCC,一个GND连接到USB设备,充电的时候就是这两个起作用,供电的作用。

安卓平板电脑USB驱动安装流程

安卓平板电脑USB驱动安装流程

RK系列平板电脑USB驱动安装流程此方法适用于未在PC上安装过设备的驱动程序。

如果你的电脑是Windows Viata/7请看第一部分即可;如果你的电脑系统是Windows 2000/XP请直接看第二部分。

第一部分:Windows Visa/7 驱动安装流程1.按照要求使用数据线把机器和电脑连接好,会提示未能成功安装驱动程序温馨提示:不同型号的机器连接电脑升级的方法有所区别。

2在桌面或者开始菜单对着计算机/我的电脑点鼠标右键,然后选择管理3,打开管理后,选择设备管理器,这时候可以看到一个未知设备。

4.对着未知设备点击鼠标右键,选择更新驱动软件5.点击选择浏览计算机以查找驱动程序软件。

注意:不能点击自动搜索。

6.点击浏览,然后选择驱动程序的位置7.在升级工具的文件夹下有一个Driver文件夹,根据自己电脑操作系统进行选择如果你的电脑的CPU是X86架构的,请选择X86文件夹,然后再根据你的电脑现在使用的操作系统进行选择:2000表示windows 2000Vista表示windows VistaWin7 表示windows 7XP 表示windows XP如果你的电脑的CPU是64位AMD,请选择AMD64,然后再根据操作系统进行选择。

如果你使用的是Windows XP/2000,,那么只能选择X86目录下的XP。

不区分CPU型号。

8,弹出是否安装在这个设备软件,选择安装。

9.安装完成之后,在设备管理器可以看到RKXXDevice这个驱动。

提示:这时候可以打开升级工具进行升级了。

第二部分:Windows XP/2000 驱动安装流程若PC机未安装过设备的驱动程序,会在桌面的右下角提示发现新硬件有驱动程序不能自动安装完成时,会提示安装向导。

先选择是,仅此一次然后再点下一步,出现下图界面选择从列表或指定位置安装(高级)然后点击下一步,出现下图界面点击在搜索中包括在这个位置然后点击浏览,出现如下图界面找到升级工具里面的Driver文件夹,点击确定会返回到下图界面点击下一步进行安装安装过程点击完成,至此USB驱动已经安装完成。

USB2.0转2xRS232 驱动安装说明

USB2.0转2xRS232 驱动安装说明

USB2.0 转2 x RS232驱动安装说明驱动安装方式有两种
一、exe安装式
1. 点击产品对应驱动目录中即可自动实现驱动安装
2. 弹出安全警告点击运行
3. 点击Extract按钮进行安装
4. 点击下一步按钮
5. 单击完成按钮,插入USB转串口产品,即可正常使用
二、inf式驱动式安装
1. 插入产品,点击我的电脑图标右键选择管理
2. 打开电脑设备管理器
3. 在黄色设备上点击右键更新驱动程序
4. 浏览计算机安装驱动
5. 浏览到光碟里对应的inf驱动包目录即可,点击下一步
6. 完成驱动安装
7. 其他1个黄色未知设备同上的方法一样进行驱动安装,安装完成后如下图。

stm32f070_USB移植步骤

stm32f070_USB移植步骤
现在为实现板子与PC间的串口通信,如,PC通过串口助手发送数据至板子,板子收到数据后回传至PC。代码修改如下:
a、配置串口通信协议。文件usbd_cdc_vcp.c中linecoding对波特率等进行了设置,见代码35-41行。
b、注释掉文件usbd_cdc_vcp.c中对应串口的相关设置,如VCP_Init中对串口2进行了初始化,由于不需要此功能,因此与串口2相关的代码可以直接注释掉或删除。
c、修改文件usbd_cdc_vcp.c中的函数VCP_DataTx,实现发送功能。函数访问权限由本文件改为全局,即去掉static修饰符。
d、修改文件usbd_cdc_vcp.c中的函数VCP_DataRx,实现接收功能。用户层,如usr中需新增变量,以表示是否已收到时钟配置。在usb_bsp.c文件中将80-91行注释掉,即注释掉外部时钟HSE初始化部分。
9、编译工程,应该只有一个警告。下载程序,然后将板子USB插至PC,安装虚拟串口驱动STM32_VCP_Driver.zip。PC设备管理应该能查看相应串口号。
10、修改应用层代码。该Demo是实现USB与串口间的转换,即一边通过USB连接至PC,另一边通过串口连接至设备。
由于STM32F070内部没有48MHz晶振,推荐使用外部晶振。若没有外部晶振,则可以使用内部晶振,通过锁相环PLL倍频至48M,这里直接注释掉内部48M晶振,选择PLL_SOURCE_HSI。
7、使能DP内部上拉电阻。与F103系列不同,F0系列内部集成了上拉电阻,因此外部不能接上拉电阻。在usb_conf.h文件中注释掉40行#ifdef USE_STM32072B_EVAL、43行#endif和50行#define USB_CLOCK_SOURCE_CRS。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

USB驱动移植教程一.USB驱动框架在Linux系统中,提供了主机侧和设备侧视角的USB驱动框架,这里,仅仅讲解主机侧角度看到的USB驱动框架。

从主机侧的角度而言,需要编写的USB驱动程序包括主机控制器驱动和设备驱动两类。

USB主机控制器驱动程序控制插入其中的USB设备,而USB设备驱动程序控制该设备如何作为设备与主机通信。

在USB主机控制器驱动和USB设备驱动之间还有一层叫USB核心层。

USB核心负责USB驱动管理和协议处理工作,它通过定义一些数据结构、宏和功能函数,向上为USB设备驱动提供编程接口,向下为USB主机控制器驱动提供编程接口;通过全局变量维护整个系统的USB设备信息,完成设备热插拔控制、总线数据传输控制等。

说了那么多,无图无真相啊~~Linux USB主机侧驱动总体框架二.USB驱动移植步骤1.S5PV210主机控制驱动的移植USB主机控制器有3种规范,UHCI(Universal Host Controller Interface),这种规范主要是Intel、Via芯片公司提供支持PC主板的;OHCI(Open Host Controller Interface),这种规范是微软提出来的,主要应用在非PC系统上的嵌入式领域上的USB芯片;EHCI(Enhanced Host Controller Interface),这种后来为提高USB速度而提出的规范,它支持最高速度为480Mbps。

在《S5PV210_UM_REV1.1》手册上搜索OHCI关键词,会发现下面一段话这表明S5PV210这款CPU支持一个USB主机接口,同时支持EHCI和OHCI这两种规范,支持USB1.1和USB2.0规范,支持最高的外设传输速率为480Mbps。

注意了,它并不支持USB3.0规范的USB设备,所以做测试的时候,千万不要拿USB3.0规范的USB设备去测试。

2.1移植ohci-s5p驱动打开内核目录:driversusbhost,发现Linux系统提供了大量的主机控制器驱动,找遍所有平台,都没有找到ohci-s5p.c源码。

很遗憾,3.8的内核没有提供S5PV210的USB HOST控制器驱动程序。

最好验证有没有提供的办法就是,烧写网蜂提供的第二版的uImage进去,然后找个U盘、或者鼠标插入Webee210开发板的USB HOST接口,看看串口有没有打印什么信息,结果是不会有任何反应的。

既然没有提供,这就需要我们自己来编写了,这下不好办了吧?不用紧张,仔细再找找,还是能发现一些类似的源码,可供我们移植的。

我们发现,内核虽然没有提供ohci-s5p.c源码,但是有提供ehci-s5p.c源码,还有ohci相关的其他平台的源码,比如ohci-s3c2410.c、ohci-exynos.c供我们移植参考。

2.1.1 ohci-s5p.c程序内核既然没有ohci-s5p.c,那我们使用其他平台的ohci源码,这里我们拷贝driversusbhost目录下的ohci-exynos.c为ohci-s5p.c。

然后将所有exynos字符串替换成s5p,由于有些地方是exynos4,所以还需要将s5p4替换为s5p。

最后还需要修改一下头文件,将#include <linux/platform_data/usb-exynos.h>改为:#include <linux/platform_data/usb-ohci-s5p.h>2.2 usb-ohci-s5p.h程序打开内核目录includelinuxplatform_data,然后拷贝usb-exynos.h为usb-ohci-s5p.h。

将所有的exynos4字符串替换为s5p,将EXYNOS替换为S5P。

最后添加平台数据:static struct s5p_ohci_platdata s5p_ohci_platdata;为了以后支持EHCI还添加echi的平台数据,最后usb-ohci-s5p.h修改为:#ifndef __MACH_S5P_OHCI_H#define __MACH_S5P_OHCI_H/**************Add by Webee*******************/#ifdef CONFIG_S5P_DEV_USB_EHCIstatic struct s5p_ehci_platdata s5p_ehci_platdata;#endifstatic struct s5p_ohci_platdata s5p_ohci_platdata;/**************Add by Webee*******************/struct s5p_ohci_platdata {int (*phy_init)(struct platform_device *pdev, int type);int (*phy_exit)(struct platform_device *pdev, int type);};extern void s5p_ohci_set_platdata(struct s5p_ohci_platdata *pd); #endif /* __MACH_S5P_OHCI_H */2.3 添加s5p_ohci_driver到ohci_hcd.c打开driversusbhostohci-hcd.c,在CONFIG_USB_OHCI_EXYNOS前面添加如下代码:#ifdef CONFIG_USB_OHCI_S5P#include "ohci-s5p.c"#define PLATFORM_DRIVERs5p_ohci_driver#endif因为S5PV210 USB HOST控制器驱动由driversusbhostohci-hcd.c(支持各种SoC下的主机控制器驱动的通用部分)和driversusbhostohci-s5p.c共同完成。

2.4 添加平台设备前面我们移植ohci-s5p.c主要是围绕platform_driver来编程的,这又回到了平台驱动设备模型了。

还记得我们移植gpio-key驱动了吗?里面就添加了平台设备来支持平台驱动。

今天,我们同样需要添加平台设备来支持s5p_ohci_driver这个平台驱动。

怎么添加呢?参考别人怎么写!打开archarmplat-samsungdevs.c,找到s5p_device_ehci这个平台设备,模仿它来修改。

打开archarmmach-s5pv210mach-smdkv210.c,在smdkv210_devices[ ]前,添加如下代码:#include <linux/ioport.h>#include <linux/platform_device.h>#include <linux/dma-mapping.h>#include <linux/platform_data/usb-ehci-s5p.h>#include <linux/platform_data/usb-ohci-s5p.h>#include <linux/platform_data/usb-ohci-s5p.h>static struct resource s5p_ohci_resource[] = {[0] = DEFINE_RES_MEM(0xEC300000, SZ_256),[1] = DEFINE_RES_IRQ(S5P_IRQ_VIC1(23)),};static u64 samsung_device_dma_mask = DMA_BIT_MASK(32);struct platform_device s5p_device_ohci = {.name = "s5p-ohci",.id = -1,.num_resources = ARRAY_SIZE(s5p_ohci_resource),.resource = s5p_ohci_resource,.dev = {.dma_mask = & samsung_device_dma_mask,.coherent_dma_mask = DM A_BIT_MASK(32),}};void __init s5p_ohci_set_platdata(struct s5p_ohci_platdata *pd) {struct s5p_ohci_platdata *npd;npd = s3c_set_platdata(pd, sizeof(struct s5p_ohci_platdata) ,&s5p_device_ohci);if (!npd->phy_init)npd->phy_init = s5p_usb_phy_init;if (!npd->phy_exit)npd->phy_exit = s5p_usb_phy_exit;}怎么确定s5p_ohci_resource里面的内存地址呢?这自然要回到《S5PV210_UM_REV1.1》手册了,在USBHOST这章的寄存器介绍里面有这么一段描述:而IRQ的确定,则是找到下面这段话。

/ * 参考archarmmach-s5pc100includemachirqs.h */#define IRQ_UHOSTS5P_IRQ_VIC1(23)然后将定义设置好的s5p_device_ohci添加到smdkv210_devices[],如:static struct platform_device *smdkv210_devices[] __initdata = {&s5p_device_ohci,/* Add by Webee */……&webee210_button_device,/* Add by Webee */ };最后,在smdkv210_machine_init函数中添加平台数据的设置函数。

#ifdef CONFIG_S5P_DEV_USB_OHCIs5p_ohci_set_platdata(&s5p_ohci_platdata);#endif2.5 修改Kconfig2.5.1 移植driversusbhost目录下的Kconfig打开driversusbhost目录下的Kconfig,在USB_OHCI_EXYNOS前面添加USB_OHCI_S5P的配置支持。

修改后如下:# Add by Webeeconfig USB_OHCI_S5Pboolean "OHCI support for Samsung S5P SoC Series"depends on USB_OHCI_HCD && PLAT_S5Pselect S5P_DEV_USB_OHCIhelpEnable support for the Samsung S5P SOC's on-chip OHCI controller.#Add by Webee2.5.2 移植archarmplat-samsung目录下的Kconfig打开archarmplat-samsung目录下的Kconfig,在S5P_DEV_USB_EHCI后面添加S5P_DEV_USB_OHCI的配置支持,修改后如下:#Add by Webeeconfig S5P_DEV_USB_OHCIboolhelpCompile in platform device definition for USB OHCI#Add by Webee2.5.3 移植driversusb目录下的Kconfig在内核目录下输入make menuconfig配置内核时,搜索S5P_DEV_USB_OHCI发现如下现象,它表明S5P_DEV_USB_OHCI的配置需要先将PLAT_S5P配置上。

相关文档
最新文档