慢慢學Linux驅動開發,第十二章,加入核心

來源:互聯網
上載者:User

// 在Linux核心中增加程式需要完成以下3項工作
1.原始碼複製到Linux相應目錄下
2.在目錄的Kconfig檔案中增加新原始碼對應項目的編譯選項
3.在目錄的Makefile檔案中增加對新原始碼的編譯條目


以下以LED驅動為例說明:

1.將led.c原始碼複製到核心\drivers\char目錄

2.在目錄的Kconfig檔案中添加LED的編譯配置選項

config LED
bool "LED driver"
depends on ARCH_S3C6410
help
LED driver for the samsung s3c6410

上述Kconfig檔案意味著只有在ARCH_S3C6410項目被配置的情況下,才會出現LED設定項目,這個項目為布爾型(要麼編譯入核心,要麼不編譯,選項為Y或N)菜單上顯示的字串為“LED driver”,help後面的內容為協助資訊。

 

對核心進行配置是為了得到核心設定檔.config。通過對核心進行配置,可以使未來編譯成功的核心增加或減少對一些核心特性的支援。對核心進行配置有多種方法,有基於文本的配置方式也有基於圖形的使用者介面。下面採用使用比較廣泛的make menuconfig方式:

sudo apt-get install libncurses5-dev

sudo make menuconfig

除了布爾型的設定項目外,還存在三態型(tristate)配置選項,它意味著要麼編譯入核心,要麼編譯為核心模組,要麼不編譯,選項為Y、M或N。

在目錄的Makefile中關於LED的編譯指令碼為:

 

obj-$(CONFIG_LED) += led.o

上述指令碼意味著如果LED配置選項被選擇為Y或N,即obj-$(CONFIG_LED)等同於obj-y或obj-n。

此時確保核心目錄已經make zImage過了,一次即可,在make modules,即可編譯模組代碼。

 

編譯核心包含兩部分的工作,其一是編譯核心,即編譯配置選項中標記為Y的那部分,這部分核心最終形成bzIamge鏡像檔案;其二是編譯核心模組,即編譯配置選項中標記為M的那部分核心,這部分形成以.ko結尾的核心模組目標檔案。

 

上述兩部分編譯工作可以依次通過make bzImage和make modules完成,也可以通過一條make命令直接完成。編譯核心的整個過程比較漫長,因此可以對make加-j參數來提高編譯的效率。在make時使用該選項會為編譯過程分配n個並發任務,這樣可以縮短編譯時間。n的取值為cpu個數的二倍。

sudo make -j4

------------------------------------------------------------------------------------------------------------------

作者:龐輝

出處:http://www.cnblogs.com/pang123hui/

本文基於署名 2.5 中國大陸許可協議發布,歡迎轉載,演繹或用於商業目的,但是必須保留本文的署名龐輝(包含連結).

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.