ARM Linux 驅動 凡事開頭難

2021-08-26 19:57:47 字數 1936 閱讀 5425

就自己在學習驅動過程中的一些錯誤和解決辦法的記錄:

我的操作環境是虛擬機器 ubuntu 10.10 。 測試核心 2.6.28 和 2.6.34

今天就只寫菜鳥最簡單的:如何在make menuconfig 後能新增自己的驅動模組。網上linux驅動學習的帖子都太多了,但是寫給菜鳥的很少。而我自己在寫完成make menuconfig時也入到了不少的錯誤。現在將自己的錯誤記錄如下,只為幫助後來者。

1、修改頂層makefile時出現的錯誤

在設定cpu型別,修改交叉編譯器路徑的時候修改為

arch ?= arm

cross_compile ?= /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-

時,進行make menuconfig 測試的時候在 這一行報錯,報錯提示arm不能為乙個目錄

出現原因和解決辦法:在這裡極有可能是因為你在 ?= arm 的最後面有乙個空格,刪掉空格就可以正常編譯

這個錯誤一般很難發現。

2、新增 ledtest 驅動模組到make menuconfig 選單

在這一步我出現錯誤是 那網上的新增方法新增好了,make menuconfig 後並沒有出現我新增的 ledtest 的驅動模組選項。最後我發現了其中的錯誤,網上的其他帖子並未提及。

首先: 我先來描述一下我最開始嘗試的方法,

1)、在drivers下新增自己的驅動模組檔案目錄, 我自己用的是 ledtest 。然後將你寫的驅動 ledtest.c拷貝到這個目錄下,在這個目錄下

vi makefile 然後新增內容為 obj-$(config_ledtest) += ledtest.o

然後 vi kconfig 新增內容為

menu menu_ledtest

config ledtest

tristate "ledtest"

---help---

this is arm ledtest driver file

endmenu

2)、返回上一級 drivers 目錄修改目錄下的makefile 和 kconfig

在 makefile 的檔案末尾加上: obj-$(config_ledtest) += ledtest/

(注意其名稱的依賴關係)

在 kconfig 的倒數第二行,也就是 endmenu 的前一行加上:

source "drivers/ledtest/kconfig"

(注意其名稱的依賴關係)

做到這裡我就開始 make menuconfig 了,但是 make 後的選單drivers下沒有自己要的menu_ledtset 目錄選項。

而這裡可能大多數的人已經得到了他們自己想看到的測試模組選項了,但有的用這種方法沒有的預期結果。

3)、修改 arch/arm/kconfig 檔案 在 menu "device drives" 和 endmenu 之間加上

source 「drivers/ledtest/kconfig」 然後make menuconfig 後,在device drives 下就能出現menu_ledtest選項

所以我就是那個沒有得到結果的人,但是我最後找到問題之所以出的原因和解決辦法,我還是覺得這個路繞的值。在這裡的原理,我總結如下:

在前兩步,得到預期結果的人,所使用的核心可能是新版核心,或已經打過補丁的核心。

要完成 低三步才能得到結果的人,所使用的核心可能是舊版核心,並且沒有打過補丁,我開始用的核心就是。

在新版核心 arch/arm/kconfig 的檔案中 沒有menu "device drives" ,,,,,,,,,,,,,,,,endmenu 這些檔案。而僅僅是只用新增了source 「drivers/kconfig」 這一項。自己的理解是: 在新版核心arch/arm/kconfig 沒有完成對應驅動的載入任務,而是加他交給下層 drivers/kconfig 來完成。 所以新版核心不需要進行第三步就能得到結構,而舊版不行。

萬事開頭難

每一次作為觀察者,都覺得別人做某事是如何順手拈來 然而仔細看看自己,卻覺得很多事情,遠不是自己想象的那樣簡單,甚至力不從心。我們都有自己乙個不凡的理想,也許到現在還在為小時候的某個願望努力著 也許現在所做的早已經不是自己想要的了,時間改變了這一切,也淡忘了自己當初的很多想法。所以更多的時候,我已經不...

萬事開頭難

今天終於決定寫點什麼了,估計有很多人和我一樣,天天看別人的部落格,自己有部落格但是沒有寫,主要是不知道要寫些什麼。我也是如此。今天發生了一些事情,想記錄下來,就想到了我還有部落格,呵呵。部門的人員總是有很多人做事不動腦筋,就在死做事,今天評審bug列表,有乙個bug是顯示的列的資訊和編輯的資訊不一致...

萬事開頭難

2020年經歷了新冠的肆虐,一年的時間匆匆流逝。回首望去,曾經定下的計畫好 像也沒有完成多少。幸運的是後半年經歷了一些可謂是重塑三觀的事件,也算是在一 些方面完成了脫胎換骨的成長。過自己不想要的生活,需要勇氣 過自己想要過得生活,不但需要勇氣,還需要 人最大的痛苦就是無法跨越 知道 和 做到 的鴻溝...