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