iTOP-iMX6开发板-设备树驱动-以module的方式编译驱动
内核驱动不仅可以将驱动编译到内核中,还可以动态的编译内核驱动。本文档介绍如何以
模块的方式编译内核驱动。
以 module 的方式编译驱动,需要以下几个部分:
1 内核成功编译过;
2 找到内核的 arm 编译器;
3 编译简单驱动;
4 编译简单的 Makefile 文件,Makefile 文件中需要指向内核源码目录(成功编译过的内核源码目录);
和文档在一起的有“Makefile”、c 文件和 ko 文件,大家可以用来测试。
要动态的编译内核,首先需要将内核源码编译通过,内核的编译请参考使用手册第五章。
1. 内核和编译器路径
本节介绍内核路径、编译器路径。无论是 Qt 和 Ubuntu 的内核源码,都是在 android 源码包中,所以必须先解压 android 源码到 Ubuntu14.04 中。
如下图所示,作者的 android 源码在“/home/iMX6Q/iTOP-iMX6_android6.0.1”目录下,内核源码在其中的“kernel_imx”目录下。 <ignore_js_op>return 0;
}
static void hello_exit(void)
{
printk(KERN_EMERG "Hello world exit!
");
}
module_init(hello_init);
module_exit(hello_exit);
驱动源码只有基本的入口和出口函数。加载和卸载的时候分别打印“Hello Worldenter!”和“Hello world exit!”。
2.3 编译
将源码和 Makefile 文件拷贝到 Ubuntu14 系统下。
使用命令“make”,如下图所示,可以看到有“iTOP_IMX6_treedriver_hello.ko”文件生成。