您的位置:笔笔发 技术资料 嵌入式操作系统 Android 正文
内容搜索
笔笔发:技术产业信息平台----成就有识之士创业梦想的殿堂
热门内容
推荐内容
Linux USB gadget设备驱动解析(4)--编写一个gadget驱动

本文章共33105字,分21页,当前第1页,快速翻页:
 

作者:刘洪涛,华清远见嵌入式学院讲师。

一、编写计划

通过前面几节的基础,本节计划编写一个简单的gadget驱动。重在让大家快速了解gadget驱动结构。

上节中简单介绍了zero.c程序。这个程序考虑到了多配置、高速传输、USB OTG等因素。应该说写的比较清楚,是我们了解gadget驱动架构的一个非常好的途径。但把这些东西都放在一起,对很多初学人员来说还是不能快速理解。那就再把它简化一些,针对S3C2410平台,只实现一个配置、一个接口、一个端点,不考虑高速及OTG的情况。只完成单向从host端接收数据的功能,但要把字符设备驱动结合在里面。这需要有一个host端的驱动,来完成向device端发送数据。关于在主机端编写一个简单的USB设备驱动程序,有很多的资料。相信大家很快就会完成的。

二、功能展示

1、PC端编写了一个usbtransfer.ko,能够向device端发送数据

2、对目标平台编写一个gadget驱动,名称是g_zero.ko

3、测试步骤

在目标平台(基于S3C2410)上加载gadget驱动

# insmod g_zero.ko 
        name=ep1-bulk
        smdk2410_udc: Pull-up enable
        # mknod /dev/usb_rcv c 251 0
        #

在PC主机上加载驱动usbtransfer.ko

#insmod usbtransfer.ko
        #mknod /dev/usbtransfer c 266 0

连接设备,目标平台的终端显示:

connected

目标平台读取数据

# cat /dev/usb_rcv

PC端发送数据

#echo “12345” > /dev/usbtransfer
        #echo “abcd” > /dev/usbtransfer

设备端会显示收到的数据

# cat /dev/usb_rcv
        
12345
        
abcd

三、代码分析

下面的代码是在原有的zero.c基础上做了精简、修改的。一些结构的名称还是保留以前的,但含义有所变化。如:loopback_config,不再表示loopback,而只是单向的接收数据。
/*

* zero.c -- Gadget Zero, for simple USB development
        * lht@farsight.com.cn
        * All rights reserved.*/
        /* #define VERBOSE_DEBUG */

#include <linux/kernel.h>
        #include <linux/utsname.h>
        #include <linux/device.h>
        #include <linux/usb/ch9.h>
        #include <linux/usb/gadget.h>
        #include "gadget_chips.h"
        #include <linux/slab.h>
        #include <linux/module.h>
        #include <linux/init.h>
        #include <linux/usb/input.h>
        #include <linux/cdev.h>
        #include <asm/uaccess.h>
        #include <linux/fs.h>
 

 
点这里复制本页地址发送给您QQ/MSN上的好友

相关文章

USB gadget设备驱动解析(3)——驱动结构分
Linux USB gadget设备驱动解析(2)---驱动
USB gadget设备驱动解析(1)——功能体验
面对不断升级的内核,如何学习linux设备驱动
RT73 wifi无线网卡驱动移植过程
实例解析linux内核I2C体系结构(1)
Android HAL实例解析
进一步分析Android HAL
让你定制的Launcher成为系统中唯一的Launch
创建android sdk(包含emulator)
linux-2.6.26内核中ARM中断实现详解(1)
linux-2.6.26内核中ARM中断实现详解(2)
在Android中使用OpenCv
android2.3源码下载编译全过程
[Android算法] Activity的四种加载模式(转
Android2.2平台上支持多camera
edittext 插入表情(基于socket方式)
Android用户的一些误区——关于进程管理

相关评论


本文章所属分类:首页 技术资料 嵌入式操作系统 Android


反馈意见和建议