上一節(jié)介紹了makefile、menuconfig和xConfig。本節(jié)詳細(xì)介紹了示例(如果您從未見過上一章建議的高級主頁學(xué)習(xí))。
說明:
請在評論區(qū)告訴我哪個朋友需要完整的電子文件。如果我有時間,我會一個一個私下發(fā)給你。O (_ _ _ _ _ _) O
本人近期可以陸續(xù)上傳這些資料和視頻教程,集中在相互交流上:C Java Python Linux ARM嵌入式物聯(lián)網(wǎng)等。
4. 實例講解
對于一個開發(fā)者來說,將自己開發(fā)的內(nèi)核代碼加入到 Linux 內(nèi)核中,需要有三個步驟。首先確定把
自己開發(fā)代碼放入到內(nèi)核的位置;其次,把自己開發(fā)的功能增加到 Linux 內(nèi)核的配置選項中,使用
戶能夠選擇此功能;最后,構(gòu)建子目錄 Makefile,根據(jù)用戶的選擇,將相應(yīng)的代碼編譯到最終生成
的 Linux 內(nèi)核中去。下面,我們就通過一個簡單的例子--test driver,結(jié)合前面學(xué)到的知識,來說明
如何向 Linux 內(nèi)核中增加新的功能。
4.1 目錄結(jié)構(gòu)
test driver 放置在 drivers/test/ 目錄下:
$cd drivers/test
$tree
.
|-- Con
|-- Makefile
|-- cpu
| |-- Makefile
| `-- c
|--
|--
|--
|--
|--
`-- test
|-- Makefile
`--
4.2 配置文件
1) drivers/test/Con
#
# TEST driver configuration
#
mainmenu_option next_comment
comment 'TEST Driver'
bool 'TEST support' CONFIG_TEST
if [ "$CONFIG_TEST" = "y" ]; then
tristate 'TEST user-space interface' CONFIG_TEST_USER
bool 'TEST CPU ' CONFIG_TEST_CPU
fi
endmenu
由于 test driver 對于內(nèi)核來說是新的功能,所以首先 創(chuàng)建一個菜單 TEST Driver。然后,顯示
"TEST support",等待用戶選擇;接下來判斷用戶是否選擇了 TEST Driver,如果是
(CONFIG_TEST=y),則進一步顯示子功能:用戶接口與 CPU 功能支持;由于用戶接口功能可
以被編譯成內(nèi)核模塊,所以這里的詢問語句使用了 tristate(因為 tristate 的取值范圍包括 y、n 和
m,m 就是對應(yīng)著模塊)。
2) arch/arm/con
在文件的最后加入:source drivers/test/Con,將 TEST Driver 子功能的配置納入到 Linux 內(nèi)
核的配置中。
4.3 Makefile
1)drivers/test/Makefile
# drivers/test/Makefile
#
# Makefile for the TEST.
#
SUB_DIRS :=
MOD_SUB_DIRS := $(SUB_DIRS)
ALL_SUB_DIRS := $(SUB_DIRS) cpu
L_TARGET :=
export-objs :=
obj-$(CONFIG_TEST) +=
obj-$(CONFIG_TEST_USER) +=
obj-$(CONFIG_PROC_FS) +=
subdir-$(CONFIG_TEST_CPU) += cpu
include $(TOPDIR
clean:
for dir in $(ALL_SUB_DIRS); do make -C $$dir clean; done
rm -f *.[oa] .*.flags
drivers/test 目錄下最終生成的目標(biāo)文件是 。在 和 中使用了
EXPORT_SYMBOL 輸出符號,所以 和 位于 export-objs 列表中。然后,根據(jù)
用戶的選擇(具體來說,就是配置變量的取值),構(gòu)建各自對應(yīng)的 obj-* 列表。由于 TEST Driver
中包一個子目錄 cpu,當(dāng) CONFIG_TEST_CPU=y(即用戶選擇了此功能)時,需要將 cpu 目錄
加入到 subdir-y 列表中。
2)drivers/test/cpu/Makefile
# drivers/test/test/Makefile
#
# Makefile for the TEST CPU
#
SUB_DIRS :=
MOD_SUB_DIRS := $(SUB_DIRS)
ALL_SUB_DIRS := $(SUB_DIRS)
linux內(nèi)核配置系統(tǒng)淺析
頁碼,10/12
...
2004-7-17L_TARGET :=
obj-$(CONFIG_test_CPU) += c
include $(TOPDIR
clean:
rm -f *.[oa] .*.flags
3)drivers/Makefile
……
subdir-$(CONFIG_TEST)
+= test
……
include $(TOPDIR
在 drivers/Makefile 中加入 subdir-$(CONFIG_TEST)+= test,使得在用戶選擇 TEST Driver 功能
后,內(nèi)核編譯時能夠進入 test 目錄。
4)Makefile
……
DRIVERS-$(CONFIG_PLD) += drivers/pld
DRIVERS-$(CONFIG_TEST) += drivers/test/
DRIVERS-$(CONFIG_TEST_CPU) += drivers/test/cpu/
DRIVERS := $(DRIVERS-y)
……
在頂層 Makefile 中加入 DRIVERS-$(CONFIG_TEST) += drivers/test/ 和 DRIVERS-
$(CONFIG_TEST_CPU) += drivers/test/cpu/。如何用戶選擇了 TEST Driver,那么
CONFIG_TEST 和 CONFIG_TEST_CPU 都是 y, 和 就都位于 DRIVERS-y 列
表中,然后又被放置在 DRIVERS 列表中。在前面曾經(jīng)提到過,Linux 內(nèi)核文件 vmlinux 的組成中
包括 DRIVERS,所以 和 最終可被鏈接到 vmlinux 中。
1.《.pld文件如何打開看這里!Linux內(nèi)核kernel配置2—教你將自己開發(fā)的代碼加入linux內(nèi)核中》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識,僅代表作者本人觀點,與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。
2.《.pld文件如何打開看這里!Linux內(nèi)核kernel配置2—教你將自己開發(fā)的代碼加入linux內(nèi)核中》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進行證實,對其原創(chuàng)性、真實性、完整性、及時性不作任何保證。
3.文章轉(zhuǎn)載時請保留本站內(nèi)容來源地址,http://f99ss.com/gl/2212190.html