• Linux-2.6.32.2内核在mini2440上的移植(十)---配置USB外设


    1,主机环境:VMare下CentOS 5.5 ,1G内存。

    2,集成开发环境:Elipse IDE

    3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-linux-gnueabi-gcc v4.5.1。

    4,开发板:mini2440,2M nor flash,128M nand flash。

    5,u-boot版本:u-boot-2009.08

    6,linux 版本:linux-2.6.32.2

    7,参考文章:

    嵌入式linux应用开发完全手册,韦东山,编著。

    Mini2440 之Linux 移植开发实战指南

    【1】在内核中配置USB键盘和鼠标等hci设备驱动程序

    Linux-2.6.32.2 内核对USB 外设的支持是相当丰富的,并且已经包含了S3C2440 的USBHost 驱动支持,因此我们只要配置一下内核就可以了,下面是各种USB 外设的内核配置。

    在linux-2.6.32.2根目录下执行make menuconfig,然后确认如下选项被选中

    Device Drivers --->

         [*] HID Devices --->

             <*>   USB Human Interface Device (full HID) support  //支持usb键盘鼠标等hci设备

    提示:这里的配置选项对应的内核源代码目录是:linux-2.6.32.2/drivers/hid/usbhid,其中USB 键盘和条码扫描器的原理是一样的,因此它们的代码是相同的。

              [*]   /dev/hiddev raw HID device support  //以原始的raw方式访问HID设备。

    以上信息被选中后可以在控制台看到如下启动信息

    ... ...

    usbcore: registered new interface driver hiddev
    usbcore: registered new interface driver usbhid
    usbhid: v2.6:USB HID core driver

    ... ...

    使用LCD和USB键盘作为终端

    现在的内核已经支持LCD和USB键盘可以用它来作为控制台终端了,确保然按前篇文章Linux-2.6.32.2内核在mini2440上的移植(七)---LCD驱动移植说过的在命令行增加“console=tty1”和修改inittab文件,当接上USB键盘和LCD后,可以在LCD上看到如下信息“Please press Enter to activate this console.”。

    这里有一点要注意,点选择了使用USB键盘和LCD作为独立的输入输出设备之后,串口控制终端将不再起作用了,在开发调试阶段,还是不这样做为好。

    【2】在内核中配置U盘驱动程序

    因为优盘用到了 SCSI 命令,所以我们先增加SCSI 支持。

    Device Drivers --->

       SCSI device support  --->  

            <*> SCSI device support  //要支持USB磁盘,此项要选中。

             [*] legacy /proc/scsi/ support  //在/proc/scsi目录下提供一些信息。

            <*> SCSI disk support //SCSI硬盘,要支持U盘,此项要选中。
            [*] USB support  ---> 

             <*>   Support for Host-side USB  //usb主机控制器

             [*]     USB device filesystem (DEPRECATED)    //在/proc文件系统中提供一些调试信息

              <*>     OHCI HCD support //OHCI主机控制驱动程序

              <*>   USB Mass Storage support //USB存储设备

    现在的U盘等移动存储器使用的大都是FAT/FAT32 格式的,因此我们还需要添加FAT32 文件系统的支持,在内核配置主菜单下依次选择如下菜单项:

    File systems  ---> 

        DOS/FAT/NT Filesystems  --->  

             <*> MSDOS fs support     //加FAT32 文件系统的支持

        -*- Native language support  --->    //以下为支持中英文的编码

            <*>   Codepage 437 (United States, Canada) 

            <*>   Simplified Chinese charset (CP936, GB2312)

            <*>   Traditional Chinese charset (Big5)

            <*>   NLS ISO 8859-1  (Latin 1; Western European Languages)

             <*>   NLS UTF-8 

    配置完成后,退出并保存以上配置,重新编译 make uImage。然后复制生成的uImage到/nfsboot/kernel,重启开发板,看到如下信息:

    ... ...

    eth0: dm9000e at c4872300,c4876304 IRQ 51 MAC: 08:90:90:90:90:90 (chip)
    ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
    s3c2410-ohci s3c2410-ohci: S3C24XX OHCI
    s3c2410-ohci s3c2410-ohci: new USB bus registered, assigned bus number 1
    s3c2410-ohci s3c2410-ohci: irq 42, io mem 0x49000000
    usb usb1: configuration #1 chosen from 1 choice
    hub 1-0:1.0: USB hub found
    hub 1-0:1.0: 2 ports detected
    Initializing USB Mass Storage driver...
    usbcore: registered new interface driver usb-storage
    USB Mass Storage support registered.
    usbcore: registered new interface driver libusual
    mice: PS/2 mouse device common for all mice
    mini2440_TouchScreen successfully loaded
    input: mini2440_TouchScreen as /devices/virtual/input/input0
    S3C24XX RTC, (c) 2004,2006 Simtec Electronics
    s3c2410-rtc s3c2410-rtc: rtc disabled, re-enabling
    s3c2410-rtc s3c2410-rtc: rtc core: registered s3c as rtc0
    i2c /dev entries driver
    S3C2410 Watchdog Timer, (c) 2004 Simtec Electronics
    s3c2410-wdt s3c2410-wdt: watchdog inactive, reset disabled, irq enabled
    cpuidle: using governor ladder
    ... ...

    测试U盘

    为了看到插入U盘时的打印信息,系统启动时先不要插入优盘,等系统启动后,进入命令行控制台,此时插入U盘,可以看到如下信息:

    [root@mini2440 /]#usb 1-1: new full speed USB device using s3c2410-ohci and addr
    ess 2
    usb 1-1: configuration #1 chosen from 1 choice
    scsi0 : SCSI emulation for USB Mass Storage devices
    scsi 0:0:0:0: Direct-Access     USB 2.0  Flash Drive      5.00 PQ: 0 ANSI: 2
    sd 0:0:0:0: [sda] 2073600 512-byte logical blocks: (1.06 GB/1012 MiB)
    sd 0:0:0:0: [sda] Write Protect is off
    sd 0:0:0:0: [sda] Assuming drive cache: write through
    sd 0:0:0:0: [sda] Assuming drive cache: write through
     sda: sda1
    sd 0:0:0:0: [sda] Assuming drive cache: write through
    sd 0:0:0:0: [sda] Attached SCSI removable disk

    [root@mini2440 /]#

    根据上面的提示信息,U盘对应的是/dev/sda1,现在可以挂载它了

    [root@mini2440 /]#mount -t vfat /dev/sda1 /mnt/udisk
    [root@mini2440 /]#cd /mnt/udisk
    [root@mini2440 udisk]#ls
    100MLT29          20x15             8X6???.jpg        FileRecv20100328
    18X8??????.jpg    24X18             ????              Photo
    2.4X3.5           24X36??.jpg       ?????,?????       picall
    20X24??.jpg       6X8??.jpg         ????????.pdf      uImage_T35
    [root@mini2440 udisk]#

     可以看到上面列出的U盘的内容。

    【4】配置并测试USB 摄像头驱动

    (待续)

    【5】配置并测试USB 无线网卡

    (待续)

    下一步,将进行SD卡驱动移植


    参考文档:http://singleboy.blog.163.com/blog/static/5490019420115278402359/

  • 相关阅读:
    LeetCode Lect7 堆及其应用
    Leetcode Lect7 哈希表
    5105 pa3 Distributed File System based on Quorum Protocol
    5105 pa2 Distributed Hash Table based on Chord
    5105 pa1 MapReduce
    分布式系统知识总结
    OS知识点总结
    c++知识点总结3
    c知识点总结2
    c++知识点总结
  • 原文地址:https://www.cnblogs.com/chengliu/p/3636380.html
Copyright © 2020-2023  润新知