将安卓驱动编译成moudle开机后自动启动

假设我们写好了驱动程序:xxx.c,并且可以正常运行(驱动的init match probe等等都OK)

先看一下将驱动编译进内核的情况,主要关注以下几个文件:

驱动文件夹下的Makefile里有一句:

obj-$(CONFIG_XXX)  += xxx.o

驱动文件夹下的Kconfig(如我的是Kconfig.x86)有:

config XXX
    bool "ABCD"
    depens on YYYY
    help
        ...

arch/x86/configs/kkkk_defconfig里有一句:

CONFIG_XXX=y

(这里等号两边不要留空格)

接下来将驱动编译成module

Makefile不变

将Kconfig中的改为:

config XXX
    tristate "ABCD"
    depends on YYYY
    help
        ...

defconfig中的改为:

CONFIG_XXX=m

编译成功后,在目录android/out/target/product/YOUR_IMAGE_NAME/obj/kernel/目录下可以找到编译完成的module。

系统启动后,用adb查看/system/lib/modules/目录,也可以找到对应的module。

现在我们的系统中已经包含了该driver,只不过是以moudle的形式存在,接下来要做的工作就是利用脚本将该module在系统启动的时候insmod。关于系统启动时脚本的调用还有待研究……

时间: 2024-11-08 17:52:17

将安卓驱动编译成moudle开机后自动启动的相关文章

linux下设置mysql apache 开机后自动启动

1 #将mysql启动脚本放入所有脚本运行目录/etc/rc.d/init.d中 2 cp /lamp/mysql-5.0.41/support-files/mysql.server /etc/rc.d/init.d/mysqld 3 4 #改变权限 5 chown root.root /etc/rc.d/init.d/mysqld 6 7 #所有用户都可以执行,单只有root可以修改 8 chmod 755 /etc/rc.d/init.d/mysqld 9 10 #将mysqld 放入lin

如何让一个Activity在开机后自动启动

其实现方式我们很容易想到:注册一个广播,监听开机动作,在广播接受者内启动你要启动的Activity,但是这一实现过程中有一点是要注意的:在广播接受者内启动一Activity,必须添加一标签Intent.FLAG_ACTIVITY_NEW_TASK; 具体实现如下: public void onReceive(Context context,Intent intent){ Intent intent=new Intent(context,Main.class); intetn.setFlags(I

MAC下Unity编译成Xcode后倒入IOS系统中的各种坑总结

unity3d版本: 5.3.0f4 xcode版本: 7.3.1 - xcode7.3.1已经支持免开发者证书真机调试, 这个版本下不再需要花费99刀购买个人开发者证书,仅需要个人appstoreID即可进行调试: - 该版本unity3d工程编译成xcode可执行文件后,导入IOS过程中会报2次错误,具体描述如下: 1. "unknown type name __declspec" 解决方法:xcode中找到il2cpp-config.h文件,在181行(上下)找到 #define

【转】6.4.6 将驱动编译进Linux内核进行测试

原文网址:http://www.apkbus.com/android-98520-1-1.html 前面几节都是将Linux驱动编译成模块,然后动态装载进行测试.动态装载驱动模块不会随着Android系统的启动而自动装载,因此Android系统每次启动都必须使用insmod或modprobe命令装载Linux驱动模块. 对于嵌入式系统(包括嵌入式Android.嵌入式Linux等)一般都采用将Linux驱动编译进内核的方式.这样做虽然没有动态装载灵活,但Linux驱动会随着Android的启动而

DPDK编译成动态库,应用程序检测不到端口的问题

把DPDK由静态库方式改为编译成动态库后,原本正常的应用程序就不能运行了. 在初始化的时候,rte_eth_dev_count()总是返回0,而用dpdk_nic_bind.py --status查看端口是绑定成功的. DPDK默认是编译成静态库的,改成动态库只需要把common_linuxapp文件中CONFIG_RTE_BUILD_SHARED_LIB=n修改成CONFIG_RTE_BUILD_SHARED_LIB=y就行了. DPDK编译成动态库后,PMD的各个驱动就单独编译成了一个个的.

实例详解:反编译Android APK,修改字节码后再回编译成APK

本文详细介绍了如何反编译一个未被混淆过的Android APK,修改smali字节码后,再回编译成APK并更新签名,使之可正常安装.破译后的apk无论输入什么样的用户名和密码都可以成功进入到第二个Activity. 有时难免要反编译一个APK,修改其中的若干关键判断点,然后再回编译成一个全新的可用的apk,这完全是可实现的.若要完成上述工作,需要以下工具,杂家后面会把下载链接也附上.这些软件截止本文发布时,经过杂家确认都是最新的版本. 1.APK-Multi-Toolv1.0.11.zip 用它

实例具体解释:反编译Android APK,改动字节码后再回编译成APK

本文具体介绍了怎样反编译一个未被混淆过的Android APK,改动smali字节码后,再回编译成APK并更新签名,使之可正常安装.破译后的apk不管输入什么样的username和password都能够成功进入到第二个Activity. 有时难免要反编译一个APK.改动当中的若干关键推断点,然后再回编译成一个全新的可用的apk,这全然是可实现的. 若要完毕上述工作,须要以下工具,杂家后面会把下载链接也附上.这些软件截止本文公布时,经过杂家确认都是最新的版本号. 1.APK-Multi-Toolv

Linux内核驱动将多个C文件编译成一个ko文件的方法——每个C文件里都有module_init与module_exit

以两个C文件为例: 将本该被分别编译成adc_device.ko和adc_driver.ko的adc_device.c.adc_driver.c编译成一个ko文件! 采用方法: 第一步.修改C文件 1.去掉adc_device.c文件里module_init(xxx).module_exit(yyy)中xxx.yyy 函数原型的关键字static 2.注销adc_device.c文件里module_init(xxx).module_exit(yyy)函数 3.在adc_driver.c文件里添加

Linux内核模块(驱动)编译详解

本文主要说说如何编译自己开发的内核模块.由于驱动通常也被编译成内核模块,因此文章的内容也适用于驱动的编译. 由于在下能力相当有限,有不当之处,还望大家批评指正^_^ 一.准备工作 准备工作如何做,这里就不详说了. a) 首先,你要有一台PC(这不废话么^_^),装好了Linux. b) 安装好GCC(这个指的是host gcc,用于编译生成运行于pc机程序的).make.ncurses等工具. c) 如果你是为当前PC机开发内核模块,那么准备工作就结束了. 如果你是为嵌入式系统Linux系统开发