arm-linux下usb转串口移植手册

合集下载

ARM开发板嵌入式linux系统与主机PC通过串口传输文件

ARM开发板嵌入式linux系统与主机PC通过串口传输文件

嵌入式linux系统与主机通过串口传输文件
我想如果要从PC机下载东西到开发板的嵌入式linux系统里面,很多人首先会想到用tftpsftp等网络工具从网口下载。

但如果网络用不了,只能通过串口下载怎么办呢?这个时候有两个工具能帮到你:一个是zmrx、zmtx,另外一个是lsz、lrz。

个人觉得zmrx/zmtx没有lsz/lrz 稳定,建议还是用后者。

下面介绍一下lsz/lrz的使用方法。

一、编译lrzsz并下载到开发板上

/download/0007000/6293.sht ml下一个lrzsz的tar包,解压缩后输入./configure,然后进入了src 文件夹中,修改了src文件夹中的Makefile文件,配置为与手机对应的交叉编译器,运行make,ok!得到两个可执行文件sz,rz(或者lsz,lrz),把它们下载到开发板linux系统的/bin目录下。

二、情况1: PC机用windows操作系统
如果PC机用的是windows操作系统,串口通信工具可以用系统自带的超级终端。

下面介绍一下传输文件的方法。

1、开发板-->PC机
在开发板上输入sz filename。

在PC机上点击超级终端的菜单“传送”-> “接收文件”,选择下载的位置和Zmodem与崩溃恢复协议,点击接收即可。

2、PC机-->开发板
在开发板上先进入/tmp目录,然后输入rz。

在PC机上点击超级终端的菜单“传送”-> “发送文件”,选择目标文件和Zmodem与崩溃恢复协议,点击发送即可。

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的支持。

ARM开发教程之ARM Linux系统移植步骤

ARM开发教程之ARM Linux系统移植步骤
千锋3G嵌入式移动互联网技术研发中心 千锋3G嵌入式移动互联网技术研发中心 3G
ARM开发教程之ARM LINUX系统移植步骤 ARM开发教程之ARM LINUX系统移植步骤 开发教程之
ARM简介 Linux简介 系统的制作移植建立交叉编译环境 引导程序 内核 修改内核 内核的配置编译 根文件系统 结束语

千锋3G嵌入式移动互联网技术研发中心 千锋3G嵌入式移动互联网技术研发中心 3G
ARM开发教程之引导程序 引导程序
对于计算机系统来说,从开机上电到操作系统启动需要一个引导程 序。嵌入式linux系统同样离不开引导程序,这个引导程序叫做 Bootloader[1]。通过这段小程序,可以初始化硬件设备、建立内存 空间的映射表,从而建立适当的系统硬件环境,为最终调用操作系 统内核做好准 备。 vivi[4]是韩国MIZI公司为其arm9系列产品而研发的Bootloader, 小而灵巧,这里选用它作为小型Linux系统的Bootloader。 首先要修改vivi源代码中的Flash分区信息,新的分区信息如表1 所示。 根据表1,在vivi源码arch/s3c2410/smdk.c文件中作出相应的 修改。 然后在配置菜单中导入smdk2410的默认配置,编译成功将在 vivi源代码目录下生成所需的Bootloader文件,文件名为vivi。 接着,便可把vivi下载到目标板Flash的相应位置。

千锋3G嵌入式移动互联网技术研发中心 千锋3G嵌入式移动互联网技术研发中心 3G
ARM开发教程之ARM简介
Arm9S3C2410微处理器与Linux的结合越来越紧密,逐 渐在嵌入式领域得到广范的应用。目前,在便携式消 费类电子产品、无线设备、汽车、网络、存储产品等 都可以看到S3C2410与Linux相结合的身影。 S3C2410微处理器是一款由Samsung公司为手持 终端设计的低价格、低功耗、高性能,基于arm920T 核的微处理器。它带有内存管理单元 (MMU),采用 0.18mm工艺和AMBA新型总线结构,主频可达203MHz。 同时,它支持Thumb 16位压缩指令集,从而能以较小 的存储空间获得32位的系统性能。

USB转串口使用手册

USB转串口使用手册

USB转串口单片机通信模块
CP2102是USB到UART的桥接电路,完成USB数据和UART数据的转换,电路连接简单,数据传输可靠,把下位机串行数据转换成USB数据格式,方便实现数据通信,在上位机上通过运行该芯片的驱动程序把USB数据可以按照简单的串口进行读写操作编程简单,操作灵活。

【实物图片】
简要说明:
一、尺寸:全长mm42宽20mm高10mm
二、主芯片:CP2102
三、工作电压:USB供电
四、特点:
1、具有电源指示.
2、输入口直接接电脑USB口。

3、采用波特率范围广。

4、数据传输可靠。

5、操作灵活。

6、需要安装驱动
7、只需三根线直接连接单片机:RXD、TXD、GND即可。

驱动安装:
1、将串口模块与计算机电脑连接,电脑提示;
2、电脑设备管理器出现下图(感叹号);
3、电脑自动弹出硬件安装向导;
4、如上图选择,然后,点击:“下一步”,提示下图,选择安装路
径;
5、点击“下一步,开始安装驱动程序;
6、提示安装完成,点击安装完成USB驱动。

7、系统再次提示安装硬件对话框,如下图操作;
8、如下图操作;
9、系统安装串行通信驱动;
10、完成安装!
串口通信测试
1、查看串口号;
2、打开串口调试工具;
3、选择与设备管理器对应的串口号;
4、将串口模块的输出端TXD、RXD端接,如下图;
5、点击串口工具“手动发送”按钮;
6、如果接收区,显示内容与发送去内容相同,证明串口模块可以
正常使用!。

USB转串口转换器用户手册说明书

USB转串口转换器用户手册说明书

ISOLATED CONVERTER MS USB-TTL SerialUSER MANUALPLOVDIV 2013Document revision 2013-11-05I.ORDER CODEII.SPECIFICSThe converters require drivers to be installed for the corresponding version ofWINDOWSIn cases where the TTL Serial Interface Connector is a USB mini type, theconverter should only be used with devices that use TTL SerialCommunication.In this case, the converter should not be used on standard USB devices onthe USB mini connector side.On the PC side, a standard USB port with USB 2.0 communication is used.Ports USB2.0 and TTL Serial are isolated galvanically.The converter doesn’t require external supply for the TTL Serial interface.III. DESIGNATION AND OPERATION The MS USB-Serial UART converter is designed to convert signals betweenthe USB 2.0 interface into a serial interface with TTL signal levels Rx and Tx. The main application of the LNB is to connect various TTL Serial Interface devices to a computer for programming. An example of such devices are various transmitters and controllers that are tuned or programmed with a computer.Document revision 2013-11-052MS USB-TTL Serial - xVersion1 - connector to the TTL Serial interface is USB mini2 - no connector to the TTL Serial interface3 - connector by requestNameIV. TECHNICAL DATADocument revision 2013-11-053WARRANTY CARDWarranty Card № : .................................................Warranty term: ................................................. monthsFactory number : .................................................The article is bought by : ..................................................................With Invoice № : ............................../...... ....... 20........ y.WARRANTY CONDITIONSThe guarantee consists of free repair of any manufacturing defects that may occur during the warranty period. The repair can be done when this warranty card and the invoice, with which the device is bought, are presented in the repair base. The warranty does not cover failure, caused by bad transport, bad storage, incorrect usage, nature elements, nonobservance of the instruction for operation, and the cases, in which there is an attempt forrepairing by another people. In these cases the defect can be repaired only for payment. The service during the warranty term and settling of the reclamations will be done in accordance with the relevant Union and national legislation in force.REPAIRS MADE IN THE SERVICE BASESeller:................... Customer:.................Bulgaria, 4000 - Plovdiv, 4 “Murgash” Str.Tel. (+359 32) 642 519, 640 446 Fax: (+359 32) 640 446E-mail:******************Document revision 2013-11-054。

arm-linux usb wifi移植

arm-linux usb wifi移植

arm-linuxusbwifi模块的添加与AP的建立一、内核的配置在内核源码的根目录下执行以下命令打开内核配置菜单:$ make ARCH=arm menuconfig根据下面的菜单进行配置:内核配置完成后,重新编译内核,并将编译出来的内核镜像下载到开发板。

如果仅仅是编译驱动,可以不用将系统烧进板子。

二、驱动源码的编译(1)驱动内容的更改:如果不更改驱动代码,在编译时会遇见缺少create_proc_entry,和create_proc_read_entry 这两个函数的问题(原因在于官方的源码适用于内核小于3.9的linux系统,而本系统上使用的系统内核为3.12.10)。

下载文https:///raspberrypi/linux/rpi-.10.y/drivers/net/wireless/rtl8192cu/os_dep/linux/os_intfs.c并替换原文件中的os_intfs.c文件。

参考:/group/topic/347735/和/entry/125504在驱动源文件下的Makefile中添加一行:CONFIG_PLATFORM_ARM_AM437X = y并设置:CONFIG_PLATFORM_I386_PC =n同时添加:ifeq ($(CONFIG_PLATFORM_ARM_AM437X), y)EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIANARCH := armCROSS_COMPILE := arm-linux-gnueabihf- #这是你的交叉编译器KVER := 3.12.10 #系统的版本KSRC := /home/hjiahu/Desktop/CrossFiles/linux-3.12.10 #这是第一步编译后的源码文件夹endif(2)为了使用硬件同时支持AP与STA模式,在源码中的include/autoconf.h中将CONFIG_CONCURRENT_MODE的注释去掉(其他方法可以参考源码中的文档)。

嵌入式LINUX+ARM学习——WIN7超极终端与串口设置

嵌入式LINUX+ARM学习——WIN7超极终端与串口设置

花了大半天时间终于把开发板的超级终端配置好了,由于是自学ARM,很多东西都是自己在摸索,没有人指导,只能依靠网络,但有时在网上了半天资料,也解决不了问题,虽然没有直接找到答案,不过还是会有很多启发,最终把问题给灭掉,下面就把WIN7下超级终端与串口设置中遇到的问题与解决方法同大家分享一下。

首先先说一下我的实验设备,PC是WIN7系统的笔记本电脑,PC上没有串口,买了一个USB转串口线,开发板是GT2440,有一个串口。

实验目的是让开发板一上电后把启动信息通过串口显示到PC机的超级终端上,并与PC进行串口通信。

实验原理是通过USB转串口线把PC的USB端口转换成串口,与开发板串口进行物理连接,然后用超级终端进行软件连接,PC与开发板的串口就连接起来了,这样,开发板就能与PC进行串口通信了。

首先安装超级终端,我的WIN7里没有超级终端,那么什么是超级终端了,网上很多人把超级终端和Telne混淆了,超级终端是一个通用的串行交互软件,很多嵌入式应用的系统有与之交换的相应程序,通过这些程序,可以通过超级终端与嵌入式系统交互,使超级终端成为嵌入式系统的“显示器”。

超级终端的原理是将用户输入随时发向串口(采用TCP协议时是发往网口,这里只说串口的情况),但并不显示输入。

它显示的是从串口接收到的字符。

所以,嵌入式系统的相应程序应该完成的任务便是: 1、将自己的启动信息、过程信息主动发到运行有超级终端的主机; 2、将接收到的字符返回到主机,同时发送需要显示的字符(如命令的响应等)到主机。

而Telnet是远程登录,Telnet协议是TCP/IP 协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。

它为用户提供了在本地计算机上完成远程主机工作的能力。

在终端使用者的电脑上使用telnet程序,用它连接到服务器。

终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行就像直接在服务器的控制台上输入一样。

ARM嵌入式Linux开发——串口设置和开发

ARM嵌入式Linux开发——串口设置和开发

ARM嵌入式Linux开发——串口设置和开发1.串口设置及测试串口是常用的通信接口,在Linux操作系统中还是主要的系统调试和操作接口,早期的UNIX 计算机就是通过串口(附加了调制解调器提供远距离传输能力)连接终端与主机实现多用户操作的,因此继承了UNIX特点的Linux操作系统对于串口的支持非常丰富详细。

串口比网络接口的使用更加简单可靠(不需要复杂的驱动和设置,只需要确定波特率、数据位数、停止位数、校验位模式等几个重要参数即可使用),可用于网络环境尚未搭建完善以及网络出现故障情况下对设备的操作控制,通常交换机等缺乏显示和输入的设备均采用串口作为基本操作手段,此外在控制领域串口也是常用的通信形式。

1.1.物理主机中安装Virtual Serial Port Driver为了便于串口程序开发的调试,可以在物理主机上安装虚拟串口模拟软件,在本机模拟串口,实现脱离真实物理设备的串口通信开发调试,提高开发环境的灵活性和开发效率。

本例中采用Virtual Serial Port Driver软件,简称VSPD,安装在物理主机的Windows操作系统中,可通过端口映射提供给虚拟机使用。

安装过程如下:在Manage ports选项页中,点击“Add pair”按钮,添加一对Virtual ports串口对。

设置成交叉对,即两接口的输入和输出交叉互连,实现自闭环通信。

在物理主机中分别启动串口调试助手软件2次,打开2个软件操作窗口,每个软件窗口分别对应一个串口,即一个软件的串口设置为COM1,另一个软件的串口设置为COM2,并将波特率、校验位、数据位、停止位等参数设置为相同的值,互相发送数据,检查串口间的通信情况,确认其连通正常。

1.2.虚拟机中添加虚拟串口为了使虚拟机中Linux操作系统也能使用物理主机上的虚拟串口,需要进行设置。

在VMWare软件的“虚拟机”菜单中选择“设置”,打开“虚拟机设置”对话框,进入“硬件”页面,点击“添加”按钮添加串行端口,选使用宿主机上的物理串行端口,注意不要选“自动检测”,要明确指定COMx,此处x是物理主机Windows操作系统中的串口编号值。

linux arm移植命令

linux arm移植命令

linux arm移植命令1. 什么是ARMARM(Advanced RISC Machine)是一种基于RISC(Reduced Instruction Set Computer)架构的处理器设计,常被用于嵌入式系统领域。

由于其低功耗、高性能和成本效益等优势,ARM架构广泛应用于移动设备、物联网和家庭娱乐等领域。

2. 为什么需要ARM移植移植指的是将某个操作系统或软件移植到不同的硬件平台上。

ARM移植即将Linux操作系统移植到ARM架构的处理器上。

由于ARM处理器与传统的x86处理器架构有所不同,因此需要对Linux进行移植以在ARM设备上运行。

3. ARM移植命令步骤ARM移植涉及多个步骤,以下是常见的移植命令及其说明:## 3.1. 配置内核源码### 3.1.1. make menuconfig执行`make menuconfig`命令可进入内核配置界面,通过界面可进行内核配置,包括硬件支持、设备驱动等。

### 3.1.2. make oldconfig执行`make oldconfig`命令可根据当前配置文件生成一个新的配置文件,用于更新配置文件中的新选项。

## 3.2. 编译内核执行`make`命令即可进行内核的编译,编译过程可能会持续一段时间。

## 3.3. 生成根文件系统根文件系统是指Linux运行时所需要的文件及目录结构。

可以通过`buildroot`等工具生成根文件系统。

## 3.4. 烧录内核及根文件系统编译完成后,将生成的内核镜像和根文件系统烧录到ARM设备的存储介质中,例如SD卡或eMMC存储器。

## 3.5. 启动ARM设备将存储介质插入到ARM设备中,通过开发板或串口终端连接到设备,随后可以启动ARM设备并进入Linux操作系统。

4. ARM移植的挑战和注意事项ARM移植相对复杂且涉及多方面的技术,以下是一些挑战和注意事项:- 硬件驱动:需要确保所选的硬件能与Linux内核进行良好的兼容性,并确保相关的设备驱动可用。

Linux下USB转串口

Linux下USB转串口
mknod /dev/ttyUSB0 c 188 0
选择串口:在选择菜单中的“Serial port setup”,按回车,再按“A”以设置 “Serial Device”/dev/ttyUSB0(注意其中的USB是大写),按回车返回。
b)设置波特率:按“E”键进入设置“bps/par/Bits”(波特率)界面,如果按“I”以设置波特率为115200,按回车返回。(我使用的是2440的板子)
选择Serial port setup,此时所示光标在"Change which setting"上,键入"A",此时光标移到第A项对应处:串口COM1对应ttyS0,COM2对应ttyS1(注意选择)。
然后对波特率,数据位和停止位进行配置,键入"E",波特率选为115200 8N1(数据位8,奇偶校验无,停止位1),硬/软件流控制分别键入"F"和"G",并且都选No。在确认配置正确之后,可键入回车返回上级配置界面,并将其保存为默认配置(即save setup as dfl)。最后,选择"Exit from Minicom"命令退出。
下载 270kB,耗时 1s (184kB/s)
选中了曾被取消选择的软件包 lrzsz。
(正在读取数据库 ... 系统当前总共安装有 101203 个文件和目录。)
正在解压缩 lrzsz (从 .../lrzsz_0.12.21-4.1_i386.deb) ...
选中了曾被取消选择的软件包 minicom。
| Save setup as dfl |
| Save setup as.. |
| Exit |
+-------------------------+

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源码。

Linux下使用USB模拟ACM串口设备

Linux下使用USB模拟ACM串口设备

Linux下使⽤USB模拟ACM串⼝设备这个想法之前就在脑袋⾥有过,最近公司产品要⽤到,所以多做了些了解。

1. USB 简介USB 是 Universal Serial Bus 的缩写,从字⾯上看,就是通⽤串⾏总线的意思。

从物理上看,其实就是⼀对差分线,连接两台设备后,相互间进⾏数据传输。

加上另外两路供电( 5V 和 GND)线,⼀共是 4 根线。

那么,既然是只有⼀对差分线,那么该如何决定由谁传给谁呢(如果两边同时在线上建⽴电平,线路上的电平会是不确定态的,以致⽆法通信)?这就要说到 USB 传输的⼀个重要基础:“询问-应答” 机制—— Device(slave)设备通常是处在等待状态,只有 HOST 侧设备发起询问、请求,它才会在接下来的时间⽚中使⽤数据线向 HOST 发送数据。

那么,谁是 HOST,谁是 SLAVE ⼜是由什么来决定的呢?答案是硬件。

也就是说,你 USB 后⾯的那块驱动芯⽚如果是 HOST,那么,这个 USB 只能做 HOST ⽤了。

反之,SLAVE 亦然。

⽐如我们经常见到的,PC 上的 USB HOST 连接到 U盘、⿏标、键盘这些 SLAVE 设备。

后来有⼈觉得这样⼀个设备只能是 HOST 或者只能是 SLAVE 太死板了,所以⼜发明了 USB OTG。

USB OTG(on-the-go,⼤意为在使⽤时切换⾝份)是在原来 4 根线的基础上,⼜加了⼀根线,ID。

那块 USB 后⾯的驱动芯⽚,就可以根据这根线,来选择⾃⼰到底该扮演HOST 还是 SLAVE 的⾓⾊。

后⾯我们单独介绍。

另外,因为使⽤⼀对差分线进⾏数据传输,所以,USB ⼜采⽤了基于 HUB 的星形拓扑结构(包括根控制器,最多7 层拓扑,且7层已不具备挂载 HUB 能⼒,只能是功能设备)。

所以,更确切来说,“HOST-SLAVE“ 是在由 HUB ⽀持的物理链路之上的传输机制。

同时,HUB 本⾝也是⼀个 USB SLAVE 设备。

armlinux移植文档

armlinux移植文档

移植文档1、嵌入式linux 简介LINUX 是一个类似UNIX 的操作系统,其代码是完全重新开放的,内核功能强大,实现简洁。

它提供了类似UNIX 的编程接口和系统调用,可以方便的将UNIX系统上的应用程序,移植到Linux上运行。

Linux具有一下特点:1.可移植性:Linux内核源代码是用C语言编写的,可以运行到各种平台。

2.支持多种处理器体系结构:Linux内核能够支持的处理器要求是32位处理器,有没有MMU都可以。

没有MMU的处理器只有uClinux支持。

Linux-2.6内核支持的绝大多数都是带MMU的。

3.开放源代码的优势:Linux内核是开放源代码的,也就是说,用户可以免费获取,修改linux源码。

庞大的linux 社区和内核源代码工程,有很多各种各样的驱动程序和应用程序可以利用。

开发者可以免费得到社区的贡献、支持。

众所周知,Linux在嵌入式系统中的应用已经非常普遍。

为了进一步促进这方面的应用,在Linux 2.6中,引入了很多非常有利于嵌入式应用的功能。

这些新功能包括实时性能的增强、更方便的移植性、对大容量内存的支持、支持微控制器和I/O系统的改进等。

2、linux-2.6内核的新特征1.改进了响应时间在2.6内核以前,要想让Linux获得更好的响应能力,就需要一些特殊的补丁。

通常情况下,需要用户从厂商处购买补丁来改进中断性能和调度反应时间。

如今,2.6内核把这些改进加入到了主流的内核当中,因此无需再对其进行特殊的配置。

2.抢占式内核Linux 2.6内核在一定程度上使用了可抢占的模式。

因此,在一些时效性比较强的事件中,Linux 2.6要比2.4具有更好的响应能力。

当然了,它实际上并不是一个真正的RTOS,但是与以前的内核相比较,“停顿”的感觉要少得多。

3.高效的调度程序在2.6版本中,进程调度经过重新编写,去掉了以前版本中效率不高的算法。

调度程序每次不再扫描所有的任务,而是在一个任务变成就绪状态时将其放到一个名为“当前队列”的队列之中。

ARM-Linux下USB主机驱动程序研究与实现

ARM-Linux下USB主机驱动程序研究与实现

ARM-Linux下USB主机驱动程序研究与实现姚震;阎波【摘要】Linux operating system due to its source open,with cutting characteristics in embedded systems is increasingly applied,and USB interface on the embedded system application also is very extensive,now the embedded system hardware platform is most based on ARM processor.Standard is introduced based on the ARM platform kernel Linux 2.6,embedded USB host device driver development realization.From the USB device driver of the development process,we introduce the USB interface of the general principle and USB communication general process,then USB driver skeleton was analyzed,and finally gives a concrete realization of key driver code.%Linux操作系统由于其源码开放、具有可裁剪等特点在嵌入式系统中得到越来越广泛的应用,而USB接口在嵌入式系统中的应用也十分广泛,现在的嵌入式系统的硬件平台大多数是基于ARM处理器的。

文中介绍基于ARM平台的Linux2.6内核下,嵌入式USB主机设备驱动开发实现。

具体的从USB设备驱动的开发流程出发,介绍了USB接口的一般原理和USB通信的一般过程,然后对USB驱动骨架进行了分析,最后给出了驱动具体实现的关键代码。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

arm-linux下usb转串口移植手册:
讲述在嵌入式平台上,移植usb转串口的步骤:
1、配置Kernel
2、文件系统配置等。

Kernel:在配置内核时:加入usb转串口的支持、加入usb转串口器件的支持。

不同厂家的usb转串口工具需要的驱动可能不一样。

Device Drivers --->
USB support --->
--- USB port drivers
USB Serial Converter support --->
<*> USB Serial Converter support
[*] USB Serial Console device support
[*] USB Generic Serial drivert
< > USB AIRcable Bluetooth Dongle Driver (EXPERIMENTAL)
<*> USB FTDI Single Port Serial Driver (EXPERIMENTAL)
本次实验才用的是FTDI的usb转串口工具
在配置Kernel时,还可以加入对其他厂家的驱动支持。

文件系统:
1、在/dev目录下建立设备文件/dev/ttyUSB0
mknod /dev/ttyUSB0 c 188 0
2、在运行/sbin/getty登陆命令之前要先设置好:usb转串口对应端口的波特率、停止位等。

int usb_to_serial_init(viod)
{
iUSBTORS232 = open( "/dev/ttyUSB0", O_RDWR);
if (iUSBTORS232 iRS232 < 0)
{
printf("Can't open device dev/ttyUSB00");
return -1;
}
set_speed(iUSBTORS232 iRS232,BAUDRA TE);
set_Parity(iUSBTORS232 iRS232,8,1,'n');
close(iRS232);
}
3、在/etc/inittab 加入如下命令。

同时用consel和usb转串口工具登陆。

# Example of how to put a getty on a serial line (for a terminal)
::respawn:/sbin/getty -L ttyS0 115200 vt100
::respawn:/sbin/getty -L ttyUSB0 115200 vt100。

相关文档
最新文档