電子工程網(wǎng)

標題: i.MX8MP開(kāi)發(fā)板移植驅動(dòng)全過(guò)程 [打印本頁(yè)]

作者: 繁花之語(yǔ)    時(shí)間: 2022-11-4 11:44
標題: i.MX8MP開(kāi)發(fā)板移植驅動(dòng)全過(guò)程

各位工程師用戶(hù)在對飛凌嵌入式OKMX8MP-C開(kāi)發(fā)板進(jìn)行開(kāi)發(fā)的過(guò)程中,可能會(huì )遇到需要移植驅動(dòng)的情況。為避免用戶(hù)因不了解移植驅動(dòng)的過(guò)程而影響開(kāi)發(fā)進(jìn)度,今天小編會(huì )以寫(xiě)一個(gè)hello驅動(dòng)為例,演示移植驅動(dòng)的過(guò)程,有需求的小伙伴可參考此方法自行操作。



01進(jìn)入源碼的drivers目錄下,并創(chuàng )建一個(gè)名為hello的目錄:


02進(jìn)入hello目錄,創(chuàng )建hello.c:


在hello.c中寫(xiě)入如下內容:


程序含義:insmod驅動(dòng)掛載時(shí)打印Hello world,rmmod驅動(dòng)卸載時(shí)打印 Goodbye world


03​​​​​​​在該文件夾下創(chuàng )建Kconfig,Makefile兩個(gè)文件。

forlinx@ubuntu:~/work/OK8MP-linux-sdk/OK8MP-linux-kernel/drivers/hello$ vi  Kconfig

在Kconfig文件中寫(xiě)入如下內容:


表示如果使能了CONFIG_HAVE_HELLO,在內核裁剪配置文件中,將顯示hellodrivers菜單,默認編譯進(jìn)內核:

y:編譯進(jìn)內核

m:編譯為模塊.ko文件

n:表示不編譯,未使能。

forlinx@ubuntu:~/work/OK8MP-linux-sdk/OK8MP-linux-kernel/drivers/hello$ vi  Kconfig

在Makefile文件中寫(xiě)入如下內容:

obj-$(CONFIG_HAVE_HELLO)        +=      hello.o

注意:

宏定義的名字要和Kconfig中的一樣。后面添加需要編譯的文件名,因為內核會(huì )自動(dòng)添加前綴CONFIG,所以我們這里也要在名字前面添加CONFIG_,表示CONFIG_HAVE_HELLO使能時(shí),編譯規則指定的文件為hello.c。


給添加的這三個(gè)文件權限:​​​​​​​


04編輯drivers頂層的Kconfig,Makefile文件。​​​​​​​


在Kconfig文件中寫(xiě)入如下內容:​​​​​​​


如此一來(lái),配置系統就會(huì )按照這個(gè)配置去解析hello文件夾下的Kconfig。


編輯Makefile:

forlinx@ubuntu:~/work/OK8MP-linux-sdk/OK8MP-linux-kernel/drivers$ vi Makefile

在Makefile文件中寫(xiě)入如下內容:


這句話(huà)的作用是當CONFIG_HAVE_HELLO使能后,在哪里去找源文件。再結合hello文件下模塊Makefile就形成了層次式Makefile。注意不要少了/,這里添加自定義文件夾的名字,表示把這個(gè)文件夾編譯進(jìn)內核。


5開(kāi)始編譯:



編譯完成后,即可在OK8MP-linux-kernel/drivers/hello目錄下看到編譯生成的驅動(dòng)了:​​​​​​​


6



將hello.ko使用U盤(pán)或TF卡拷貝到開(kāi)發(fā)板里進(jìn)行驗證:​​​​​​​


由上述測試可看,hello.ko驅動(dòng)可正常運行。


以上就是小編為大家演示的自行書(shū)寫(xiě)并添加一個(gè)驅動(dòng)的過(guò)程,若您想要移植某一個(gè)模塊,可向模塊廠(chǎng)家索要現成的驅動(dòng).c文件,之后再按照上述步驟配置Makefile和Kconfig即可。







歡迎光臨 電子工程網(wǎng) (http://selenalain.com/) Powered by Discuz! X3.4
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页