本文档主要讲解在iTOP-i.MX6Q开发板,设备树内核中以 modules 方式编译驱动。android
这里以 imx6q(imx6d 和 plus 的相似)的 qt 系统内核编译为例,Ubuntu16 的内核和开发
qt 通用,android6.0 的配置和 qt 的相似。文档
文档先介绍和驱动编译相关的几个文件,Kconfig、Makefile。另外.config 文件和源码
menuconfig 文件,能够参考“iTOP-iMX6-设备树内核-缺省文件文件的配置_V1.X”文档和qt
“iTOP-iMX6-设备树内核-menuconfig 的使用_V1.X”文档。it
这里以 led 驱动为例,驱动源码为“drivers/char/”下的“itop6x_led.c”文件,以下图编译
所示。module
打开“drivers/char/”下的 Makefile 文件,以下图所示,能够看到编译 led 的宏为配置
“CONFIG_LEDS_CTL”。file
上面这个文件不用修改,打开“drivers/char/”下的“Kconfig”文件,搜索
“LEDS_CTL”,以下图所示,将 bool 修改成 tristate。
修改保存。
从新配置缺省文件,参考“iTOP-iMX6-设备树内核-缺省文件文件的配置_V1.X”配置缺
省文件,从新编译内核,以下图所示,能够看到有“itop6x_led.ko”文件生成。
将从新生成的内核烧写到开发板(注意不能烧写光盘中自带的镜像,那个镜像里已经添加
了 led 驱动),新的镜像烧写以后,在控制台查询“/dev/led*”,应该没有这个设备节点。
将“itop6x_led.ko”拷贝到开发板,以下图所示,使用命令“insmod itop6x_led.ko”
加载驱动。
使用命令“ls /dev/led8”,能够看到设备节点生成,以下图所示。