論壇里應(yīng)該有一部分人是想學(xué)驅(qū)動,卻不知道該怎么入門吧,在這里我教大家寫一個helloworld的簡單隨linux內(nèi)核加載的驅(qū)動。 1.首先在/kernel/drivers下建一個新的文件夾hello,在文件夾里添加四個文件分別是hello.c,hello.hKconfig,Makefile, hello.c文件里也有注釋,這個文件主要就是為了注冊和初始化設(shè)備文件以及定義驅(qū)動接口,主要是用啦file_operations這個結(jié)構(gòu)體,大家想了解驅(qū)動可以先了解這個,這個程序里的注釋可以幫助大家理解下一個簡單驅(qū)動的結(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,加入兩個文件test和Android.mk 然后mm,在sdk/out/target/product/rkpx2/system/bin目錄下找到測試文件,(如mm無法執(zhí)行,可在根目錄下執(zhí)行下sourcebuild/envsetup.sh) 8.最后測試下結(jié)果,在window目錄下,用adb工具把測試文件push進板中,然后在文件所在的位置給文件賦上權(quán)限,執(zhí)行chmod777 test 執(zhí)行./testhello 或./testgoodbye可看到結(jié)果如下,即驅(qū)動可成功加載 |