論壇里應(yīng)該有一部分人是想學(xué)驅(qū)動(dòng),卻不知道該怎么入門吧,在這里我教大家寫一個(gè)helloworld的簡單隨linux內(nèi)核加載的驅(qū)動(dòng)。
1.首先在/kernel/drivers下建一個(gè)新的文件夾hello,在文件夾里添加四個(gè)文件分別是hello.c,hello.hKconfig,Makefile,
hello.c文件里也有注釋,這個(gè)文件主要就是為了注冊和初始化設(shè)備文件以及定義驅(qū)動(dòng)接口,主要是用啦file_operations這個(gè)結(jié)構(gòu)體,大家想了解驅(qū)動(dòng)可以先了解這個(gè),這個(gè)程序里的注釋可以幫助大家理解下一個(gè)簡單驅(qū)動(dòng)的結(jié)構(gòu)
2.修改Kconfig,內(nèi)容如下
3.修改Makefile,內(nèi)容如下
4.返回dirvers目錄下修改Kconfig,在最后加一句:source"drivers/hello/Kconfig"
5.修改Makefle文件,在里面添加一句 obj-$(CONFIG_HELLO_TEST) += hello/
6.返回kernel目錄下,執(zhí)行makemenuconfig 在/driver路徑下找到設(shè)備,選定(注:這里設(shè)備的名字和我們之前寫的Kconfig有一定的關(guān)系,修改Kconfig的相應(yīng)的參數(shù),可以改變menu下的名字)
,然后返回
makekernel.img
7,然后創(chuàng)建測試文件,在driver目錄下創(chuàng)建目錄hellotest,加入兩個(gè)文件test和Android.mk
然后mm,在sdk/out/target/product/rkpx2/system/bin目錄下找到測試文件,(如mm無法執(zhí)行,可在根目錄下執(zhí)行下sourcebuild/envsetup.sh)
8.最后測試下結(jié)果,在window目錄下,用adb工具把測試文件push進(jìn)板中,然后在文件所在的位置給文件賦上權(quán)限,執(zhí)行chmod777 test
執(zhí)行./testhello 或./testgoodbye可看到結(jié)果如下,即驅(qū)動(dòng)可成功加載