国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
如何自己編寫第一個(gè)驅(qū)動(dòng)
今天做到如何自己編寫第一個(gè)Helloworld驅(qū)動(dòng),結(jié)果遇到一些問(wèn)題。。可是花了一個(gè)晚上,找遍了論壇的帖子,還是沒(méi)有找到一個(gè)清楚明白的解決方案。
這里就先小小的抱怨一下吧。呵呵

不過(guò),在經(jīng)過(guò)其它地方查找資料之后,總算解決了這些問(wèn)題?,F(xiàn)在就先總結(jié)一下,希望后面大家再遇到類似問(wèn)題的時(shí)候,可以少走彎路,有所收獲吧

第一點(diǎn)、如果輸入make modules后,發(fā)現(xiàn)沒(méi)有編譯出相應(yīng)的xxx.ko文件,請(qǐng)看
解決方法:如何把設(shè)備驅(qū)動(dòng)文件添加到Linux內(nèi)核編譯選項(xiàng)配置的menuconfig中
【目的】
把一個(gè)字符設(shè)備驅(qū)動(dòng)文件,添加到內(nèi)核中,希望編譯成模塊,而非build-in。
【參考資料】
內(nèi)核的源碼樹目錄下一般都會(huì)有兩個(gè)文件:Kconfig和Makefile。
http://blog.sina.com.cn/s/blog_4a377e150100c896.html
【具體步驟】
1.首先保證已經(jīng)有驅(qū)動(dòng)源文件了:as352x_afe_charger.c
放在和其他你所要添加的模塊放在一個(gè)目錄下,此處是drivers\i2c\chips下。
2.在drivers\i2c\chips\makefile中,添加:
obj-$(CONFIG_AS352X_AFE_CHG) += as352x_afe_charger.o
3.在drivers\i2c\chips\Kconfig
中,添加如下內(nèi)容:
----------------------------------------------
config AS352X_AFE_CHG
tristate "AS352X AFE Charger Driver"
depends on I2C_AS352X && AS352X_AFE
help
   If you say yes here you get support for AS352X AFE Charger.
   This driver can also be built as a module. If so, the module
   will be called AS352X AFE Charger.
----------------------------------------------
解釋如下:
(1)AS352X_AFE_CHG是自己定義的名字,當(dāng)然要盡量保證有意義。
同時(shí),你會(huì)注意到,在上面的makefile中添加的
obj-$(CONFIG_AS352X_AFE_CHG) += as352x_afe_charger.o
中的CONFIG_AS352X_AFE_CHG,是CONFIG_加上我們?cè)趉config下寫的config變量。
這兩個(gè)要匹配,才能實(shí)現(xiàn)你在menconfig定義的結(jié)果,傳遞到makefile中,
以便決定編譯的時(shí)候是如何編譯:不編譯/編譯進(jìn)內(nèi)核/編譯成模塊
(2)tristate 表示我此處添加的模塊,可以
在make ARCH=arm menuconfig中看到的,選擇之后:
* 編譯到內(nèi)核中
M 編譯成模塊,即生成XXX.ko
不選中,就不編譯該文件
(3)depends on I2C_AS352X && AS352X_AFE
是前面自己找到的,表示此編譯選項(xiàng)只有當(dāng)I2C_AS352X 和AS352X_AFE都選中,才會(huì)出現(xiàn)。
當(dāng)然,如果此模塊不依賴于其他模塊,則不需要加上這個(gè)depends on了。
【附錄】
1.如果設(shè)置成M,module模式,則要用
make ARCH=arm
編譯出as352x_afe_charger.ko

make ARCH=arm uImage
只能編譯內(nèi)核,而不編譯模塊。





第二點(diǎn)、好了,現(xiàn)在相信大家已經(jīng)可以進(jìn)行編譯工作了。但是,這時(shí)候,可能大家還會(huì)遇上諸如這樣的錯(cuò)誤
drivers/char/EmbedSky_hello.c:12:32: error: asm/arch/regs-gpio.h: No such file or directory
[root@localhost linux-2.6.30.4]# clear
[root@localhost linux-2.6.30.4]# ky_hello.o] Error 1
make[1]: *** [drivers/char] Error 2
make: *** [drivers] Error 2



這是因?yàn)椋?/span>
對(duì)于Linux2.6.25.8的內(nèi)核,這三個(gè)頭文件存放的路徑是
#include <asm/irqs.h>
#include <asm/arch/regs-gpio.h>
#include <asm/hardware.h>

但是,對(duì)于Linux2.6.30.4的內(nèi)核,它的存放路徑在
#include <mach/irqs.h>
#include <mach/regs-gpio.h>
#include <mach/hardware.h>

因此,需要這樣修改一下。。


寫到這里,也許大家會(huì)說(shuō),那不如,直接把它注釋掉就好了嘛,這個(gè)方法可以,但是,它不是解決問(wèn)題的根本方法。


最后,這幾份文件到底真正的存放在哪里的,這里以我的Linux2.6.30.4的內(nèi)核為例,他是實(shí)際存放在
Linux2.6.30.4/arch/arm/mach-s3c2410/include/mach/hardware.h中


這樣,以后我們?cè)趯戲?qū)動(dòng)時(shí),就知道他調(diào)用的頭文件實(shí)際存放在哪里了,這樣就可以舉一反三的解決問(wèn)題了。。。



好了,這是我的簡(jiǎn)單總結(jié),作拋磚引玉之用,如果大家還有什么不同的見解,或者新的地方,歡迎繼續(xù)補(bǔ)充?。?!
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
linux設(shè)備驅(qū)動(dòng)歸納總結(jié)(一):內(nèi)核的相關(guān)基礎(chǔ)概念
成功移植linux-2.6.33.5到fs2410上
linux-2.6.35內(nèi)核配置和網(wǎng)卡驅(qū)動(dòng)添加
linux-2.6.38到tiny6410的移植手冊(cè)
"android linux kernel" VS "standard linux kernel" - linux內(nèi)核 - 路漫漫其修遠(yuǎn)兮 吾將上下而求索
理解6410 LCD驅(qū)動(dòng)之LCD驅(qū)動(dòng)移植(內(nèi)核版本:2.6.38)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服