版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、內(nèi)核的移植及編譯內(nèi)核的移植及編譯目目 錄錄 Linux內(nèi)核源代碼目錄結(jié)構(gòu)內(nèi)核源代碼目錄結(jié)構(gòu) Linux內(nèi)核加載過程內(nèi)核加載過程 Linux內(nèi)核的配置內(nèi)核的配置 Linux 內(nèi)核移植的準(zhǔn)備工作內(nèi)核移植的準(zhǔn)備工作 Linux驅(qū)動(dòng)程序的編譯驅(qū)動(dòng)程序的編譯 一個(gè)一個(gè)demo驅(qū)動(dòng)程序編譯的例子驅(qū)動(dòng)程序編譯的例子Linux內(nèi)核源代碼目錄結(jié)構(gòu)內(nèi)核源代碼目錄結(jié)構(gòu)(1/5)Linux內(nèi)核源代碼目錄結(jié)構(gòu)內(nèi)核源代碼目錄結(jié)構(gòu)(2/5)Documentation內(nèi)核的說明文檔。內(nèi)核的說明文檔。drivers設(shè)備驅(qū)動(dòng)程序,其下細(xì)分為不同種類的設(shè)備。如設(shè)備驅(qū)動(dòng)程序,其下細(xì)分為不同種類的設(shè)備。如block、char、mtd、
2、net、usb、video等等。等等。fs內(nèi)核支持的文件系統(tǒng)的實(shí)現(xiàn),如內(nèi)核支持的文件系統(tǒng)的實(shí)現(xiàn),如ext2、ext3、cramfs、jffs2、nfs等。等。Linux內(nèi)核源代碼目錄結(jié)構(gòu)內(nèi)核源代碼目錄結(jié)構(gòu)(3/5)include頭文件。與系統(tǒng)相關(guān)的頭文件放在頭文件。與系統(tǒng)相關(guān)的頭文件放在include/linux下,下,與與ARM體系結(jié)構(gòu)相關(guān)的頭文件放在體系結(jié)構(gòu)相關(guān)的頭文件放在include/asm-arm下。下。init內(nèi)核初始化代碼。內(nèi)核初始化代碼。ipc進(jìn)程間通信代碼。進(jìn)程間通信代碼。Linux內(nèi)核源代碼目錄結(jié)構(gòu)內(nèi)核源代碼目錄結(jié)構(gòu)(4/5)kernel內(nèi)核的核心代碼,包括進(jìn)程調(diào)度、定時(shí)器
3、等。和內(nèi)核的核心代碼,包括進(jìn)程調(diào)度、定時(shí)器等。和arm平平臺(tái)相關(guān)的核心代碼在臺(tái)相關(guān)的核心代碼在arch/arm/kernel目錄下。目錄下。lib庫文件代碼庫文件代碼mm內(nèi)存管理代碼,和內(nèi)存管理代碼,和arm平臺(tái)相關(guān)的內(nèi)核管理代碼在平臺(tái)相關(guān)的內(nèi)核管理代碼在arch/arm/mm目錄下。目錄下。Linux內(nèi)核源代碼目錄結(jié)構(gòu)內(nèi)核源代碼目錄結(jié)構(gòu)(5/5)net網(wǎng)絡(luò)相關(guān)的代碼,實(shí)現(xiàn)了各種常見的網(wǎng)絡(luò)協(xié)議。網(wǎng)絡(luò)相關(guān)的代碼,實(shí)現(xiàn)了各種常見的網(wǎng)絡(luò)協(xié)議。scripts包含用于配置內(nèi)核的各種腳本文件。只在配置時(shí)是有意包含用于配置內(nèi)核的各種腳本文件。只在配置時(shí)是有意義的。義的。sound音頻設(shè)備驅(qū)動(dòng)的通用代碼和硬件
4、驅(qū)動(dòng)代碼都在這個(gè)文件音頻設(shè)備驅(qū)動(dòng)的通用代碼和硬件驅(qū)動(dòng)代碼都在這個(gè)文件件下面。件下面。Linux內(nèi)核加載過程內(nèi)核加載過程(1/2)通常,通常,Linux內(nèi)核是經(jīng)過內(nèi)核是經(jīng)過gzip壓縮之后的映象文件壓縮之后的映象文件 bootloader復(fù)制壓縮內(nèi)核到內(nèi)存空間復(fù)制壓縮內(nèi)核到內(nèi)存空間 內(nèi)核自解壓內(nèi)核自解壓 運(yùn)行內(nèi)核運(yùn)行內(nèi)核編譯完成的編譯完成的Linux內(nèi)核在哪里??jī)?nèi)核在哪里? ./vmlinux,elf格式未壓縮內(nèi)核格式未壓縮內(nèi)核 arch/arm/boot/compressed/vmlinux,壓縮以后的,壓縮以后的elf格格式內(nèi)核式內(nèi)核 arch/arm/boot/zImage,壓縮內(nèi)核,壓縮
5、內(nèi)核Linux內(nèi)核加載過程內(nèi)核加載過程(2/2)這是這是linux編譯時(shí)所依賴的文件。我們?cè)谂渲脙?nèi)核時(shí)所編譯時(shí)所依賴的文件。我們?cè)谂渲脙?nèi)核時(shí)所做的任何修改,最終都會(huì)在這個(gè)文件中體現(xiàn)出來。它是做的任何修改,最終都會(huì)在這個(gè)文件中體現(xiàn)出來。它是Makefile對(duì)內(nèi)核進(jìn)行處理的重要依據(jù)。對(duì)內(nèi)核進(jìn)行處理的重要依據(jù)。一般來說,內(nèi)核提供了芯片公司一般來說,內(nèi)核提供了芯片公司demo板的板的.config文件文件,我們一般找一個(gè)近似的進(jìn)行修改。如,我們一般找一個(gè)近似的進(jìn)行修改。如S3C2410平臺(tái)上平臺(tái)上可以選擇可以選擇s3c2410_deconfig這個(gè)文件。這個(gè)文件。Linux內(nèi)核的配置內(nèi)核的配置(1/6
6、).config文件文件三種配置方式三種配置方式make config基于文本對(duì)話的配置方式,比較細(xì)致,但是浪費(fèi)時(shí)間。基于文本對(duì)話的配置方式,比較細(xì)致,但是浪費(fèi)時(shí)間。對(duì)專業(yè)的內(nèi)核開發(fā)人員比較合適。對(duì)專業(yè)的內(nèi)核開發(fā)人員比較合適。make xconfig基于圖形界面的配置方式。非常直觀,但是需要特殊的基于圖形界面的配置方式。非常直觀,但是需要特殊的軟件支持,一般不推薦。軟件支持,一般不推薦。make menuconfig推薦的內(nèi)核配置方式,采用目錄的方式,直觀,容易使推薦的內(nèi)核配置方式,采用目錄的方式,直觀,容易使用。用。Linux內(nèi)核的配置內(nèi)核的配置(2/6)關(guān)于關(guān)于Kconfig在進(jìn)行在進(jìn)行m
7、ake menuconfig時(shí),目錄的生成依賴于時(shí),目錄的生成依賴于Kconfig文件。文件。一般來說,每個(gè)源代碼目錄下都有一個(gè)一般來說,每個(gè)源代碼目錄下都有一個(gè)Kconfig文件。文件。config DM9000tristate DM9000 supportdepends on ARM | BLACKFIN | MIPSselect CRC32select MII-help-Support for DM9000 chipset.To compile this driver as a module, choose M here.The module will be called dm9000.
8、Linux內(nèi)核的配置內(nèi)核的配置(3/6)關(guān)于關(guān)于Kconfig在進(jìn)行在進(jìn)行make menuconfig時(shí),目錄的生成依賴于時(shí),目錄的生成依賴于Kconfig文件。文件。一般來說,每個(gè)源代碼目錄下都有一個(gè)一般來說,每個(gè)源代碼目錄下都有一個(gè)Kconfig文件。文件。config DM9000tristate DM9000 supportdepends on ARM | BLACKFIN | MIPSselect CRC32select MII-help-Support for DM9000 chipset.To compile this driver as a module, choose M
9、here.The module will be called dm9000.Linux內(nèi)核的配置內(nèi)核的配置(3/6)Kconfig對(duì)對(duì).config文件的影響:文件的影響:CONFIG_DM9000=ymake menuconfig對(duì)內(nèi)核配置所做的修改最終反應(yīng)在對(duì)內(nèi)核配置所做的修改最終反應(yīng)在.config文件中。如上所示,在文件中。如上所示,在.config文件中文件中CONFIG_DM9000=y被定義為被定義為y。Linux內(nèi)核的配置內(nèi)核的配置(4/6)Kconfig對(duì)對(duì)Makefile的影響:的影響:.obj-$(CONFIG_DM9000) += dm9000.oCONFIG_DM90
10、00是是tristate類型,有三個(gè)可能取值:類型,有三個(gè)可能取值:y:編譯進(jìn)內(nèi)核:編譯進(jìn)內(nèi)核m:編譯成模塊:編譯成模塊n:不進(jìn)行編譯:不進(jìn)行編譯若是若是bool類型,則只有兩種可能,類型,則只有兩種可能,y或者或者n。Linux內(nèi)核的配置內(nèi)核的配置(5/6)關(guān)于關(guān)于MakefileLinux內(nèi)核源碼的每個(gè)目錄下都有一個(gè)內(nèi)核源碼的每個(gè)目錄下都有一個(gè)Makefile,由該,由該 Makefile 對(duì)源代碼的編譯、鏈接等操作進(jìn)行控制。對(duì)源代碼的編譯、鏈接等操作進(jìn)行控制。編譯完成后,每個(gè)源代碼目錄下都會(huì)生成一個(gè)名叫編譯完成后,每個(gè)源代碼目錄下都會(huì)生成一個(gè)名叫 built-in.o的文的文件。這個(gè)文件
11、由源代碼目錄下的所以源件。這個(gè)文件由源代碼目錄下的所以源 文件編譯后的目標(biāo)文件文件編譯后的目標(biāo)文件鏈接而成;而不同的鏈接而成;而不同的built-in.o 又被上層目錄中的又被上層目錄中的Makefile鏈接成鏈接成更大的更大的builtin. o,直到最后鏈接成為一個(gè)內(nèi)核,直到最后鏈接成為一個(gè)內(nèi)核vmlinux.o。Linux內(nèi)核的配置內(nèi)核的配置(6/6)關(guān)于交叉編譯關(guān)于交叉編譯由于我們的目標(biāo)平臺(tái)是由于我們的目標(biāo)平臺(tái)是ARM,而在,而在x86平臺(tái)上進(jìn)行開發(fā)平臺(tái)上進(jìn)行開發(fā),故必須進(jìn)行交叉編譯。,故必須進(jìn)行交叉編譯。修改內(nèi)核的頂層修改內(nèi)核的頂層Makefile:.ARCH ?= armCROSS
12、_COMPILE ?= arm-linux-表示我們的目標(biāo)平臺(tái)是表示我們的目標(biāo)平臺(tái)是ARM構(gòu)架的,而使用的交叉編譯構(gòu)架的,而使用的交叉編譯器的前綴是器的前綴是arm-linuxLinux 內(nèi)核移植的準(zhǔn)備工作內(nèi)核移植的準(zhǔn)備工作(1/2)獲得獲得.config文件文件前面提到,前面提到,.config是內(nèi)核編譯時(shí)所依賴的重要文件,與具是內(nèi)核編譯時(shí)所依賴的重要文件,與具體的硬件構(gòu)架和開發(fā)板類型相關(guān)。我們選擇內(nèi)核提供的體的硬件構(gòu)架和開發(fā)板類型相關(guān)。我們選擇內(nèi)核提供的s3c2410_defconfig進(jìn)行修改。進(jìn)行修改。cp arch/arm/configs/s3c2410_defconfig .con
13、figLinux 內(nèi)核移植的準(zhǔn)備工作內(nèi)核移植的準(zhǔn)備工作(2/2)l 編譯進(jìn)內(nèi)核編譯進(jìn)內(nèi)核l 編譯成模塊編譯成模塊Linux驅(qū)動(dòng)程序的編譯驅(qū)動(dòng)程序的編譯(1將將demo.c拷貝到拷貝到./drivers/char目錄下目錄下(2vi ./drivers/char/Kconfig 添加:添加:config MY_DEMOtristate “ my demo driver”depends on ARMhelpthis is my demo driver(留意:上面(留意:上面4行每行前面都是行每行前面都是tab鍵)鍵)一個(gè)一個(gè)demo驅(qū)動(dòng)程序編譯的例子驅(qū)動(dòng)程序編譯的例子(1/2)在內(nèi)核源代碼的主目錄下在內(nèi)核源代
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- app開發(fā)協(xié)議合同范例
- 婦產(chǎn)科醫(yī)師三基三嚴(yán)試題(含參考答案)
- 輻射安全試題庫(附參考答案)
- 水體處理合同范例
- 2025年邢臺(tái)道路貨物運(yùn)輸從業(yè)資格證模擬考試
- 上海嘉定燈光音響合同范例
- 和學(xué)徒簽合同范例
- 電梯安全施工合同范例
- 唐山幼兒師范高等??茖W(xué)?!秶?guó)際經(jīng)貿(mào)組織》2023-2024學(xué)年第一學(xué)期期末試卷
- 整租房收納改造合同范例
- 中醫(yī)與眼病知識(shí)培訓(xùn)課件
- 美容美體藝術(shù)專業(yè)人才培養(yǎng)方案(中職)
- 2024年水利云播五大員考試題庫及答案
- 超速和疲勞駕駛安全教育
- 數(shù)據(jù)員的述職報(bào)告
- 急性鼻炎急性鼻竇炎課件
- 2024年全國(guó)兩會(huì)精神講解課件
- 糧油店小區(qū)附近創(chuàng)業(yè)計(jì)劃書
- 民政系統(tǒng)風(fēng)險(xiǎn)分析報(bào)告
- 提高術(shù)前準(zhǔn)備完善率品管圈課件
- 瘋狂猜歌名(含音頻)
評(píng)論
0/150
提交評(píng)論