本文檔主要講解在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」,能夠看到設備節點生成,以下圖所示。