zoukankan      html  css  js  c++  java
  • (ARM+DSP开发)Linux中如何以模块方式加载没有烧写进内核的驱动

    因为我需要在开发板上(OMAPL138-ARM+Linux双核)连接一个USB转串口的设备,而内核中没有编译进相关驱动,所以无法识别出该设备,USB转串口线的芯片是PL2303,PL2303芯片驱动已经集成到了Linux的内核源码中,只是ARM Linux 把它剪裁掉了,需要重新编译为内核模块,并加载。

    以模块方式编译,加载过程如下:

    在内核所在目录:

     cd omapl138/linux-3.3/
    • 配置内核:
    make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- da850_omapl138_tl_defconfig
    • 打开配置界面:
    make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- menuconfig

    进入“Device Drivers”-->

    选中USB support(*),进入其中-->

    USB Serial Converter Surpport配置成M,进入其中--->

    选中USB Generic Serial Driver(*)

    USB Prolific 2303 Single Port Serial Driver配成M

    保存退出。

    default Y表示默认编译到内核,有Y、M、N三种选择,M表示编译为内核模块,N表示不编译。

    • 编译模块:
    make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- modules 

    编译完成后,在drivers/usb/serial下,生成了pl2303.ko文件。将该文件下载到ARM板任意目录上,在ARM端命令执行

    insmod pl2303.ko

    加载驱动。

    • 加载了驱动后,可以通过
    dmesg | grep usb 

    查看加载的USB驱动信息,当看到以下信息:

    usbcore: registered new interface driver usbserial

    usbcore: registered new interface driver usbserial_generic

    usbserial: USB Serial Driver Core

    usbcore: registered new interface driver pl2303

    usb 1-1: pl2303 converter now attached to ttyUSB0

    说明已正确加载驱动。

    • 或者通过命令:
    ls /sys/bus/usb-serial/drivers 

    查看驱动已是否加载,当看到以下信息:

    generic option1 pl2303

    说明已正确加载驱动。

    • 可以通过命令:
    ls -l /dev/ttyUSB0 

    查看端口信息,如读写权限等:

    crw-rw---- 1 root dialout 188, 0 2015-09-02 11:18 /dev/ttyUSB0

    或者通过命令:

    dmesg | grep ttyUSB0

    查看信息:

    [ 20.956427] usb 3-2.3: pl2303 converter now attached to ttyUSB0

    [ 28.412579] type=1503 audit(1441078763.210:19): operation="open" pid=1874 parent=1852 profile="/usr/sbin/cupsd" requested_mask="w::" denied_mask="w::" fsuid=0 ouid=0 name="/dev/ttyUSB0"

    [ 9994.613062] pl2303 ttyUSB0: pl2303 converter now disconnected from ttyUSB0

    [29474.242048] usb 3-2.3: pl2303 converter now attached to ttyUSB0

    • 一开始要确定连接到系统上的是哪个USB设备可以通过命令:
    lsusb

    显示系统中以及连接到系统的USB总线信息。

    • 可以通过
    modinfo [模块名] 

    查看模块信息

    • 通过
    modinfo [模块名] | grep depend 

    查看模块依赖

    • 通过
     cat /var/log/messages | tail  

    或者

    dmesg | tail 

    查看系统日志。

    • 模块编译方法:
    make -C ${KERNELSRC} M=${PWD} modules

    其中KERNELSRC为内核源码目录,一般为

    /usr/src/${shell uname -r}

    M表示模块源码的当前目录

    其它硬件驱动可类推。

  • 相关阅读:
    android.os.FileUriExposedException: exposed beyond app through ClipData.Item.getUri()踩坑记录
    【Android】 recycleview显示空白踩坑
    eclipse导入新项目,文件没有报错,但项目名一直报红
    【原因分析】The superclass "javax.servlet.http.HttpServlet" was not found on the Java Bu
    SSM框架的搭建-xml文件报错-.xsd文件缺失
    命令行安装matplotlib中遇到问题及解决(简单记录)
    eclipse里tomcat子容器缺失解决
    导入javaFX
    ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
    eclipse左边目录(Project Explorer)不小心删除后怎么找回来
  • 原文地址:https://www.cnblogs.com/mjjackey/p/13583257.html
Copyright © 2011-2022 走看看