[教程]如何編譯單個驅動文件

你是否是常常會缺某個驅動,可是又以爲所有編譯太費時間了?試試單個模塊編譯吧。
若是過程當中提示 xxx Not found的話,那麼你缺什麼就apt-get來裝什麼(我是linaro+debian源,debian源能夠參照此貼配置)。
廢話少說,進入正題:
1.首先你要有所有源碼,這是必須的,從github下載源碼(很漫長。。)
git clone git://github.com/linux-sunxi/linux-sunxi.git
或者下載zip打包的(依然漫長..) 注意選你的內核版本對應的版本,個人是3.0.**
未命名.jpg 

好比我下載到目錄 /home/lany/workspace/linux-sunxi
若是是交叉編譯,請先執行:
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-


2.  進入這個目錄,建立配置文件,cubieboard可使用 sun4i_defconfig 這個配置
cd /home/lany/workspace/linux-sunxi
make sun4i_defconfig 


生成了默認配置的.config以後,你再去.config裏把你要的驅動的配置項給開啓(能夠vi直接編輯.config或者使用make menuconfig圖像界面來配置),我這裏以sun4i_gpio這個驅動作列子:
vi ./.config
/GPIO
  #按/鍵 輸入GPIO 回車 (即搜索GPIO這個詞語)
將你找到的GPIO配置那一行改成CONFIG_SUN4I_GPIO_UGLY=m  
未命名.jpg 
而後保存退出
#注意,若是你是編譯其餘稍微複雜一點的驅動,好比gpu裏的幾個驅動,他們存在依賴關係,建議使用make menuconfig來配置

3.保存以後,讓他準備一下:
make prepare 
make scripts


4.如今咱們進入要編譯的驅動的源碼目錄,好比sun4i-gpio.c在 drivers/misc 目錄下:
cd  /home/lany/workspace/linux-sunxi/drivers/misc/
make -C /home/lany/workspace/linux-sunxi/ M=`pwd` modules

未命名.jpg 
#-C後面是你下載的內核源碼的目錄 M=`pwd` 表示指定要編譯的模塊目錄爲當前目錄
先看看編譯出來的驅動的版本是否和你係統相同,若是不相同是沒法使用的:
modinfo /home/lany/workspace/linux-sunxi/drivers/misc/sun4i-gpio.ko
輸出:
filename:       /home/lany/workspace/linux-sunxi/drivers/misc/sun4i-gpio.ko
license:        GPL
author:         Tom Cubie
description:    a simple sun4i_gpio driver
depends:
vermagic:       3.0.57+ mod_unload modversions ARMv7

能夠看到版本是3.0.57+ mod_unload modversions ARMv7,個人系統版本就是3.0.57+,若是不是,你須要將源碼checkout到你對應的版本的分支再編譯,或者直接完整編譯,把系統內核uImage換成新的(不過這樣你的其餘驅動都得換)
若是3.0.57+和mod_unload之間還有其餘字符,你就要看看你係統里正在使用的其餘驅動是否是也有這個字符,若是對不上是沒法使用的。

5.若是沒問題,那麼直接將sun4i-gpio.ko複製到/lib/modules/(你的內核版本)/kernel/drivers/misc/ 下 (即該驅動應該在的位置,而不是全部驅動都往這裏放哦)
而後insmod /lib/modules/(你的內核版本)/kernel/drivers/misc/sun4i-gpio.ko
若是沒有報錯,那麼恭喜你,已經加載成功,可使用命令:lsmod 查看。若是有報錯,輸入命令:dmesg|tail   查看詳細的報錯信息。而後再去google(通常都很差解決,遇到這種狀況,仍是把內核和全部驅動都換了吧)
若是是報這個錯:php

  1. <3>sun4i_gpio_init script_parser_fetch "gpio_para" "gpio_used" error
    linux

  2. [  607.040000] sun4i_gpio_init script_parser_fetch "gpio_para" "gpio_used" error
    git

  3. insmod: error inserting 'sun4i-gpio.ko': -1 Interrupted system callgithub

複製代碼測試

那是你沒有設置script.bin裏的gpio_para配置,設置後再insmod就OK


6.若是加載好驅動測試可以正常使用,而你每次啓動系統都須要他,那麼你能夠把它加入到開機自加載模塊裏:
depmod -a
vi /etc/modules
未命名.jpg 
保存退出,注意:對於某些有依賴的驅動,須要注意前後順序哦

教程完畢。祝你們折騰愉快~fetch


原文做者:WindLand
原文連接:http://forum.cubietech.com/forum ... st%3D1%26digest%3D1
google

相關文章
相關標籤/搜索