zoukankan      html  css  js  c++  java
  • Android 添加驱动的两种方式

    下面介绍,在Android系统中如何将驱动添加到kernel中。

    要求:将驱动queue.c添加kernel中。

    方案:下面介绍2种实现方案。2种方案的本质是一样的,区别是一种在menuconfig中单独建立菜单,而另一种则不在menuconfig中单独新建菜单,而是修改已有的配置文件。

    1方案一

    方案一中,采取的方法是:不新建config菜单,直接将驱动添加到已有的Kconfig中。下面介绍详细步骤。

    1.1修改已有配置文件

    (1)修改配置文件driver/char/Kconfig,添加如下内容:

    config SKYWANG_CQUEUE
        tristate "skywang char queue driver"
        help
            add this to support skywang char queueue 

    (2)修改配置文件driver/char/Makefile,添加如下内容:

    obj-$(CONFIG_SKYWANG_CQUEUE)   += cqueue.o 

    1.2 添加“驱动代码”

    添加驱动文件,驱动文件路径如下:

    drivers/char/cqueue.c 

    1.3 添加驱动

    执行make menuconfig打开配置界面,并将驱动cqueue.c添加到kernel中。

    如图01,是添加cqueue.c前的选项:

    如图02,是添加cqueue.c后的选项:

    1.4 验证是否添加成功

    查看.config文件,应该有如下配置选项:

    CONFIG_SKYWANG_CQUEUE=y

    2方案二

    方案二中,采取的方法是:新建config菜单,将驱动添加到新建的Kconfig中。下面介绍详细步骤。

    2.1修改已有配置文件

    (1)修改配置文件driver/char/Kconfig,添加如下内容:

    source "drivers/char/skywang/Kconfig"

    (2)修改配置文件driver/char/Makefile,添加如下内容:

    obj-$(CONFIG_SKYWANG_CQUEUE)   += skywang/

    2.2新建“驱动配置”

    (1)在driver/char下新建目录,新建后的目录完整路径如下:

    driver/char/skywang 

    (2)新建drivers/char/skywang/Kconfig文件,内容如下:

    menu "skywang test devices"
     
    
    config SKYWANG_CQUEUE
        tristate "skywang char queue driver"
        help
            add this to support skywang char queueue
     
    endmenu 

    (3)新建drivers/char/skywang/Makefile文件,内容如下:

    obj-$(CONFIG_SKYWANG_CQUEUE)   += cqueue.o

    2.3 添加“驱动代码”

    拷贝驱动文件,拷贝后的文件路径如下:

    drivers/char/skywang/cqueue.c

    2.4 添加驱动

    执行make menuconfig打开配置界面,并将驱动cqueue.c添加到kernel中。

    如图03,是添加cqueue.c前的选项:

    如图04,是添加cqueue.c后的选项:

    如图05,选择“skywang test drivers”后进入的子菜单界面:

    通过NDK,使用Android界面的Button点亮LED这4盏灯的方法,必须在adb shell环境下,通过insmod的shell命令预先加载驱动程序。能不能一启动应用程序,就自动加载该驱动程序,开发板一上电,就自动加载该驱动程序 ,方法可将insmod等shell命令加入/etc/profile 或/etc/init.d/rcS等自启动脚本,即可实现开机自动加载。

  • 相关阅读:
    Objective-C Loops
    HDU 4757 Tree(可持久化Trie+Tarjan离线LCA)
    Codeforces Round #367 (Div. 2) D. Vasiliy's Multiset(可持久化Trie)
    HDU 5416 CRB and Tree(前缀思想+DFS)
    HDU 3695 Computer Virus on Planet Pandora(AC自动机模版题)
    HDU 2222 Keywords Search(AC自动机模版题)
    POJ 2697 A Board Game(Trie判重+BFS)
    HDU 4287 Intelligent IME(字典树数组版)
    HDU 1160 FatMouse's Speed(要记录路径的二维LIS)
    HDU 1565&1569 方格取数系列(状压DP或者最大流)
  • 原文地址:https://www.cnblogs.com/liumin-txgt/p/14611290.html
Copyright © 2011-2022 走看看