linux-2.6.38到tiny6410的移植手册(连载4)__USB设备(U盘,摄像头,wifi)

发布者:Blissful444最新更新时间:2024-10-15 来源: cnblogs关键字:linux-2  6  tiny6410  USB设备 手机看文章 扫描二维码
随时随地手机看文章

今天来讲讲一些USB设备(U盘,摄像头,wifi)的驱动吧,它的特点是内核已经带非常完善的驱动了,
我们需要的就是配置而已,和很少的修改而已。

一、首先是U盘得支持。

1、vi arch/arm/mach-s3c64xx/mach-mini6410.c
124行增加

/* Initializes OTG Phy. to output 48M clock */
void s3c_otg_phy_config(int enable) {
        u32 val;

        if (enable) {
                __raw_writel(0x0, S3C_PHYPWR);  /* Power up */

                val = __raw_readl(S3C_PHYCLK);
                val &= ~S3C_PHYCLK_CLKSEL_MASK;
                __raw_writel(val, S3C_PHYCLK);

                __raw_writel(0x1, S3C_RSTCON);
                udelay(5);
                __raw_writel(0x0, S3C_RSTCON);  /* Finish the reset */
                udelay(5);
        } else {
                __raw_writel(0x19, S3C_PHYPWR); /* Power down */
        }
}

2、vi drivers/usb/host/ohci-s3c2410.c
修改方法
@@ -25,10 +25,14 @@

#define valid_port(idx) ((idx) == 1 || (idx) == 2)

+#ifdef CONFIG_MACH_MINI6410
+extern void s3c_otg_phy_config(int enable);
+#endif
+
/* clock device associated with the hcd */

static struct clk *clk;
-static struct clk *usb_clk;
+static struct clk *otg_clk, *usb_clk;

/* forward definitions */

@@ -47,6 +51,11 @@

     dev_dbg(&dev->dev, 's3c2410_start_hc:n');

+    clk_enable(otg_clk);
+#ifdef CONFIG_MACH_MINI6410
+    s3c_otg_phy_config(1);
+#endif
+
     clk_enable(usb_clk);
     mdelay(2);            /* let the bus clock stabilise */

@@ -79,6 +88,7 @@

     clk_disable(clk);
     clk_disable(usb_clk);
+    clk_disable(otg_clk);
}

/* ohci_s3c2410_hub_status_data
@@ -375,6 +385,13 @@
         goto err_clk;
     }

+    otg_clk = clk_get(&dev->dev, 'otg');
+    if (IS_ERR(otg_clk)) {
+        dev_err(&dev->dev, 'cannot get otg clockn');
+        retval = -ENOENT;
+        goto err_otg;
+    }
+
     s3c2410_start_hc(dev, hcd);

     hcd->regs = ioremap(hcd->rsrc_start, hcd->rsrc_len);
@@ -395,6 +412,10 @@
  err_ioremap:
     s3c2410_stop_hc(dev);
     iounmap(hcd->regs);
+
+    clk_put(otg_clk);
+
+ err_otg:
     clk_put(usb_clk);

  err_clk:

3、make menuconfig

Device Drivers  --->

    SCSI device support  --->
         <*> SCSI device support
         <*> SCSI disk support
         <*> SCSI generic support

    USB support
         <*>   Support for Host-side USB
         [*]     USB device filesystem (DEPRECATED)
        <*>   USB Monitor
        <*>   OHCI HCD support
        <*>   USB Mass Storage support

File systems  --->
    DOS/FAT/NT Filesystems  --->
           <*> MSDOS fs support                                                
            <*> VFAT (Windows-95) fs support                                  
          (936) Default codepage for FAT                                        
         (cp936) Default iocharset for FAT

启动之后插入u盘显示
[root@FriendlyARM /]# usb 1-1.2: new full speed USB device using s3c2410-ohci and address 3
usb 1-1.2: New USB device found, idVendor=1043, idProduct=8012
usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 1-1.2: Product: USB Flash Drive
usb 1-1.2: Manufacturer: Generic
uba: uba4

挂载 mount /dev/uba4 /mnt后即能看到u盘里的数据了


二、说说usb摄像头的和usb-wifi的支持吧,这两个东西得看你的设备是什么芯片,
先说usb摄像头吧,关于摄像头的驱动驱动配置比较简单,只是关于驱动接口有两种版本,分别
是V4L和V4L2,从2.6以后以后有了V4L2,我的linux2.6.38已经看不到关于v4l支持了,
在linux2.6.30.4的版本中我们还能看到


中有Video For linux API 1的支持,但38的版本却看不到了,所以 像gspcav1-20071224.tar.gz这样的v4l接口的驱动就加不进去了,
而很多V4l接口的usb测试程序也就用不了了,网上很少有V4l2的测试程序,所以友善也就没有开源的他的USB摄像头程序了(个人理解,不知是否正确)
既然这样我们就学友善的,按V4l2的来配置吧

我的摄像头芯片是sunplus凌阳的SPCA2000C的,支持UVC,支持UVC的就可以不用管是什么芯片了,选上一个就行
Device Drivers  --->  
           <*> Multimedia support  --->
                        <*>   Video For Linux  
                        [*]   Video capture adapters  --->  
                                   [*]   V4L USB devices  --->  
                                                 <*>   USB Video Class (UVC)    选上这个就行了
make zImage后启动,插上usb摄像头,显示
[root@FriendlyARM /]# usb 1-1.1: new full speed USB device using s3c2410-ohci and address 4
usb 1-1.1: New USB device found, idVendor=04fc, idProduct=2003
usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-1.1: Product: Sunplus Camera
usb 1-1.1: Manufacturer: Sunplus Camera
usb 1-1.1: SerialNumber: CN0316-MM00-OV03-VH-R61.01.00
uvcvideo: Found UVC 1.00 device Sunplus Camera (04fc:2003)
input: Sunplus Camera as /devices/platform/s3c2410-ohci/usb1/1-1/1-1.1/1-1.1:1.0/input/input1
在/dev/多了个video0,
测试的话用mjpg-streamer就能够测试了具体看友善光盘A中的   开发文档和教程  中的 专题04 通过Web远程浏览并控制Mini6410上的摄像头

此外,我还有个中星微的芯片是ZC0301的摄像头,它的配置是
Device Drivers  --->  
           <*> Multimedia support  --->
                        <*>   Video For Linux  
                        [*]   Video capture adapters  --->
                                   <*>   GSPCA based webcams  --->
                                                     <*>   ZC3XX USB Camera Driver
make zImage插上后显示
[root@FriendlyARM /]# usb 1-1.1: USB disconnect, address 4
usb 1-1.1: new full speed USB device using s3c2410-ohci and address 5
usb 1-1.1: New USB device found, idVendor=0ac8, idProduct=301b
usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 1-1.1: Product: PC Camera
usb 1-1.1: Manufacturer: Vimicro Corp.
gspca: probing 0ac8:301b
zc3xx: probe 2wr ov vga 0x0000
zc3xx: probe sensor -> 0011
zc3xx: Find Sensor HV7131R
input: zc3xx as /devices/platform/s3c2410-ohci/usb1/1-1/1-1.1/input/input2
gspca: video0 created
它采集到得数据直接是jpeg的,所以不能用mjpg-stream来测试,友善修改后mjpg-stream要求采集的数据是yuv货mjpg的,
我找了个基于v4l2的测试程序,看http://hi.baidu.com/aokikyon/blog/item/6e4e622c3e6f9be18b13993f.html,它将采集到数据直接存到了jpeg文件里面
见附件也行

三、说说usb-wifi的驱动
我的usb-wifi芯片是Ralink的RT2571WF,这个我是拆开看的,所以它的配置是
--- Wireless                                                  
      <*>   cfg80211 - wireless configuration API
     <*>   Generic IEEE 802.11 Networking Stack (mac80211)

[*]   Wireless LAN  --->
    <*>   Ralink driver support  --->  
         <*>   Ralink rt2501/rt73 (USB) support
然后make zImage后显示
[root@FriendlyARM /]# usb 1-1.2: new full speed USB device using s3c2410-ohci and address 3
usb 1-1.2: New USB device found, idVendor=148f, idProduct=2573
usb 1-1.2: New USB device strings: Mfr=0, Product=0, SerialNumber=0

接着输入命令
0.ifconfig wlan0 up

1.列出区域内的无线网络
iwlist wlan0 scan

2.连接到网络
iwconfig wlan0 essid 'MyHome' key s:12345
这个密码是无线路由的密码,如果没有就不用输入了。由于无线路由的密码形式有很多种,有wep和wpa什么的。
我们用的事wep,所以在输入key后加个s。

3.设置ip
ifconfig wlan0 10.10.86.91

3.启动网卡
ifconfig wlan0 up

这样就能够ping通了
总之,USB设备内核已经做的很多驱动,我们要做的是根据芯片选上对应的配置。

友善里面为USB做的驱动有两个,一个是usb转串口,一个是3g上网卡,这两个驱动是要自己加的,源码在
drivers/usb/serial/3g_devices.c
drivers/usb/serial/pl2303.c
大家只要将这两文件拷贝过来,编译进内核就可以使用了

[1] [2]
关键字:linux-2  6  tiny6410  USB设备 引用地址:linux-2.6.38到tiny6410的移植手册(连载4)__USB设备(U盘,摄像头,wifi)

上一篇:linux-2.6.38到tiny6410的移植手册(1):nand flash
下一篇:在wince6中用硬解码替换IIMAGING中的解码器

推荐阅读最新更新时间:2024-11-02 01:08

充电电池的6大讹传
  新电池的激活讹传一: 新电池应该用循环充放电的方式来激活电池的性能。   真相:准确地说上述说法并不是谣传。电池从出厂到用户手中存在一个时间差,短则一个月、长则半年。对于时间差较长的电池,其电极材料会钝化,因此厂商建议初次使用的电池最好进行3~5次完全充放电过程,以便消除电极材料的钝化,达到最大 容量 。但通常厂商都没有注意提醒消费者,这里所说的完全充放电不应该是深度放电,而应该控制在5%~8%既可。否则一块新电池很有可能会报废。   “前三次”充电   讹传二: 当一块新电池买回后,最好进行三次循环充放电,充电时间应该超过12小时,以便激活电池最大效能。   真相:镍氢电池为了达到最完美的饱和状态,需要经过“
[电源管理]
Altera与骏龙环球签署6个东南亚国家分销协议
Altera公司近日宣布,与骏龙环球有限公司签署了6个东南亚国家的分销协议。骏龙环球有限公司现在是Altera在新加坡、马来西亚、泰国、菲律宾、印度尼西亚和越南的授权代理商。这一扩展协议完善了Altera在亚太地区现有的分销网络。 Altera公司亚太区副总裁兼董事总经理Erhaan Shaikh表示:“我们看到东南亚地区有强劲的增长,设计工作也越来越多,相信与骏龙公司签署扩展协议会进一步增强对客户的服务和技术支持。骏龙公司优秀的销售和现场应用团队与Altera在中国合作了多年,我相信他们能够帮助Altera进一步拓展在东南亚地区的市场份额。” 骏龙公司总裁Johnny Chan说:“我们非常荣幸能够有机会
[嵌入式]
小米6更多猛料曝光 就是手绘图太辣眼睛
去年2月份,小米推出难产的小米5。时间过去一年多,小米似乎还没有推出新一代产品的意思。不过,官方消息虽然没有,但是民间爆料可不少!   近日,有网友在微博上曝光了一组疑似小米6的手绘图。从图中看,该机采用了金属机身(三段式设计很明显),后置时下流行的双摄。正面采用类似无边框的设计,屏幕下方搭载了一枚椭圆形物理按键,手机底部使用了USB Type-C接口。整体来看可信度不是很高,尤其是考虑到这辣眼睛的画风。   不过,该名网友还爆出了一些另外的猛料。小米6将会在4月份发布,拥有两个版本,新增小米6 Plus。配置上,5.15英寸版4GB RAM+32GB ROM起步,5.7英寸的小米6 Plus是4GB RAM+64GB ROM
[手机便携]
联发科6月营收月增2.5% Q2营收几乎站上高标
    IC设计大厂联发科 (2454)自结6月合并营收 78.45亿元,月成长2.52%,年成长16.3%,累计前6月营收为430.5亿元,年成长5.47%,是为联发科合并营收自4-5月营收连续2个月走滑后,6月份营收再度交出止跌反弹的表现。 依联发科法说会预估,本季合并营收约在224-235亿元,季成长14-20%,以此来看,联发科 Q2实际合并营收 234.4亿元,几乎已站上联发科法说会预估的高标水准235亿元。 联发科董事长蔡明介看好下半年的营运仍有旺季效应可期,针对与晨星(3697)的合并是否进行裁员,蔡明介日前在获颁首届工研院院士授证时表示,两公司合并会进行组织调整,共同来发展新产品,而甫宣布上市的
[手机便携]
德州仪器推出了6款高性能音频模数转换器 (ADC) 系列产品
德州仪器 推出了6款高性能音频 模数转换器  (ADC) 系列产品。该系列产品以高达110dB的动态范围为特色,PCM1865系列产品中的这些器件集成了那些常见于便携式 音频编解码器 的特性,而同时也为设计人员提供了之前只见于单一功能、专业音频ADC中的性能等级。 PCM1865音频ADC由单个3.3V电源供电,免除了对于专用模拟5V电源轨的传统需求,从而使得这些产品尽可能的小巧又高效。全新系列中的每个款产品均可解决很多系统级的设计难题,其中包括低频和接地噪声、输入信号电平灵敏度,以及衰减,此次推出的系列产品中的任意一款均可以解决上述挑战。此次推出的产品的集成的功能对于终端设备特别有用,诸如个人计算机、sound bar音箱、音
[模拟电子]
正确使用示波器的6个原则
对于工程师来说,用好示波器,事倍功半。没有经过专业训练的工程师在使用示波器的细节上存在很多经验上的不足,譬如很多工程师喜欢先按Auto Setup然后Stop, 再展开。这过程中探头的连接问题、示波器量程的选择等很多问题都被忽视了。本次演讲将分享使用示波器最应注意的6个原则。 掌握这6个原则,您将能更好地使用示波器。 这六个原则包括: 最小化量化误差:尽量让波形占满栅格,充分利用ADC动态范围 时刻警惕采样率:要过采样而不要欠采样 选择合适的带宽:带宽并不是越高越好 捕获待测信号的全貌: 保证捕获信号的时间长度包含完整频率成分 尽可能减少探头的影响: 减少地线环路; 考虑到探头的负载效应 利用测量统计功能,波波去噪算法,波形
[测试测量]
正确使用示波器的<font color='red'>6</font>个原则
EZ-USB接口设备的软配置技术
引 言   EZ-USB是Cypress公司带智能内核的USB接口器件,集USB通信控制引擎和改进的8051内核于一体,具有全速度、全序列、易开发及软配置等特点,是设计USB设备的首选器件。EZ-USB的串行接口引擎能自动完成主要USB协议处理,简化了设备固件设计。但其软配置与枚举涉及到Windows编程、Windows PnP技术以及Windows DDK工具、INF文件和注册表的使用等问题,因此EZ-USB接口设备的软配置方式和固件装载技术是开发EZ-USB接口设备的关键问题。 1 EZ-USB处理器   EZ-USB的串行接口引擎能自动完成数据收发控制、位填充、数据编码、CRC校验、PID包解码等USB协议处理。
[嵌入式]
如何让CDC类USB设备批量接收64字节以上数据
很多STM32开发者在实现CDC类虚拟串口与PC主机通信过程中,有时会遇到点麻烦而不得其解。那就是当主机端单次发送的数据不超过64字节时,接收正常。一旦发送数据量大于64字节时就接收失败,总是出现丢包现象,似乎只能接收64字节以内的数据。网上有人干脆建议主机每次发送不要超过64字节,当然,也有人提及要作分包处理但没具体实现代码可以参考。 作为CDC类的USB设备,到底能不能正确接收来自主机64字节以上的批量数据呢? 其实是可以的,只是当我们一次传输的数据大于当前端点所支持的最大包长时【这里端点使用BULK传输,一般最大包长默认设置为64字节】,USB模块会做分包传输,将一批数据传输分成多个处理 ,即多个transaction来
[单片机]
如何让CDC类<font color='red'>USB</font><font color='red'>设备</font>批量接收64字节以上数据
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved