版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第8章嵌入式Linux內(nèi)核8.1Linux內(nèi)核簡介8.2Linux內(nèi)核軟件結(jié)構(gòu)分析8.3Linux內(nèi)核移植實例(移植Linux2.6.14.1到博創(chuàng)2410)本章小結(jié)
8.1Linux內(nèi)核簡介
Linux內(nèi)核的起源可追溯到1991年芬蘭大學(xué)生linustorvalds編寫與第一次公布Linux的日子。盡管到目前為止,Linux內(nèi)核系統(tǒng)早已遠(yuǎn)遠(yuǎn)發(fā)展到了torvalds編寫之外的范圍,但torvalds仍保持著對Linux內(nèi)核的控制權(quán),并且是Linux名稱的唯一版權(quán)所有人。自發(fā)布Linux0.12版起,Linux就一直依照GPL(通用公共許可協(xié)議)自由軟件許可協(xié)議進(jìn)行授權(quán)。
8.2Linux內(nèi)核軟件結(jié)構(gòu)分析
8.2.1Linux內(nèi)核配置系統(tǒng)原理
1.配置系統(tǒng)的基本結(jié)構(gòu)
本節(jié)對Makefile分析方法可參看第7章vivi中Makefile的詳細(xì)分析,Linux內(nèi)核的配置系統(tǒng)由三個部分組成,分別是:
①?Makefile:分布在Linux內(nèi)核源代碼(包括子目錄)中的Makefile,定義Linux內(nèi)核的編譯規(guī)則;②配置文件(config.in):給用戶提供配置選擇的功能;
③配置工具:包括配置命令解釋器(對配置腳本中使用的配置命令進(jìn)行解釋)和配置用戶界面(提供基于字符界面、基于Ncurses圖形界面以及基于Xwindows圖形界面的用戶配置界面,各自對應(yīng)于makeconfig、makemenuconfig和makexconfig)。這些配置工具都是使用腳本語言,如Tcl/TK、Perl編寫的(也包含一些用C編寫的代碼)。
1)?Makefile
(1)?Makefile概述。
Makefile的作用是根據(jù)配置的情況,構(gòu)造出需要編譯的源文件列表,然后分別編譯,并把目標(biāo)代碼連接到一起,最終形成Linux內(nèi)核二進(jìn)制文件。
(2)?Makefile中的變量。
頂層Makefile定義并向環(huán)境中輸出了許多變量,為各個子目錄下的Makefile傳遞一些信息。有些變量,比如SUBDIRS,不僅在頂層Makefile中定義并且賦初值,而且在arch/*/Makefile還作了擴(kuò)充。
(3)?Rules.make變量。
前面講過,Rules.make是編譯規(guī)則文件,所有的Makefile中都會包括Rules.make。Rules.make文件定義了許多變量,最為重要是那些編譯、連接列表變量。
(4)子目錄Makefile。
子目錄Makefile用來控制本級目錄以下源代碼的編譯
規(guī)則。
2)配置文件
(1)配置文件功能概述。
除了Makefile的編寫,另外一個重要的工作就是把新功能加入到Linux的配置選項中,提供此項功能的說明,讓用戶有機(jī)會選擇此項功能。所有的這些都需要在config.in文件中用配置語言來編寫配置腳本。
(2)配置語言。
①頂層菜單。
mainmenu_name/prompt//prompt/是用“或”包圍的字符串,“與”的區(qū)別是‘…’中可使用$引用變量的值。mainmenu_name設(shè)置最高層菜單的名字,它只在makexconfig時才會顯示。②詢問語句。
bool /prompt//symbol/
hex /prompt//symbol//word/
int /prompt//symbol//word/
string /prompt//symbol//word/
tristate /prompt//symbol/③定義語句。
define_bool /symbol//word/
define_hex
/symbol//word/
define_int
/symbol//word/
define_string /symbol//word/
define_tristate /symbol//word/④依賴語句。
dep_bool /prompt//symbol//dep/...
dep_mbool /prompt//symbol//dep/...
dep_hex /prompt//symbol//word//dep/...
dep_int /prompt//symbol//word//dep/...
dep_string /prompt//symbol//word//dep/...
dep_tristate /prompt//symbol//dep/...⑤選擇語句。
choice/prompt//word//word/⑥?if語句。⑦菜單塊(menublock)語句。
mainmenu_optionnext_comment
comment‘…’
…
endmenu⑧source語句。
source/word/
/word/是文件名,source的作用是調(diào)入新的文件。
(3)缺省配置。
Linux內(nèi)核支持非常多的硬件平臺,對于具體的硬件平臺而言,有些配置是必需的,有些配置則不是必需的。另外,新增加功能的正常運行往往也需要一定的先決條件,針對新功能,必須作相應(yīng)的配置。因此,特定硬件平臺能夠正常運行對應(yīng)著一個最小的基本配置,這就是缺省配置。
(4)?helpfile。
在配置Linux內(nèi)核時,遇到不懂含義的配置選項,可以查看它的幫助,從中可得到選擇的建議。下面介紹如何給一個配置選項增加幫助信息。
2.實例
對于一個開發(fā)者來說,將自己開發(fā)的內(nèi)核代碼加入到Linux內(nèi)核中,需要三個步驟。首先確定把自己開發(fā)的代碼放入到內(nèi)核的位置;其次,把自己開發(fā)的功能增加到Linux內(nèi)核的配置選項中,使用戶能夠選擇此功能;最后,構(gòu)建子目錄Makefile,根據(jù)用戶的選擇,將相應(yīng)的代碼編譯到最終生成的Linux內(nèi)核中去。8.2.2配置Linux內(nèi)核
內(nèi)核配置過程比較繁瑣,但是配置的適當(dāng)與否和日后Linux的運行直接相關(guān),有必要了解一些主要的且經(jīng)常用到的選項的設(shè)置。圖8-1xconfig配置界面圖8-2menuconfig配置界面8.2.3Linux內(nèi)核啟動原理
在Bootloader將Linux內(nèi)核映像拷貝到RAM以后,可以通過下例代碼啟動Linux內(nèi)核:
call_linux(0,
machine_type,
kernel_params_base)。
1.?Linux內(nèi)核入口
Linux非壓縮內(nèi)核的入口位于文件?/arch/arm/kernel/head-armv.S中的stext段。該段的基地址就是壓縮內(nèi)核解壓后的跳轉(zhuǎn)地址。如果系統(tǒng)中加載的內(nèi)核是非壓縮的Image,那么bootloader將內(nèi)核從Flash中拷貝到RAM后將直接跳到該地址處,從而啟動Linux內(nèi)核。
2.?start_kernel函數(shù)
start_kernel是所有Linux平臺進(jìn)入系統(tǒng)內(nèi)核初始化后的入口函數(shù),它主要完成剩余的與硬件平臺相關(guān)的初始化工作,在進(jìn)行一系列與內(nèi)核相關(guān)的初始化后,調(diào)用第一個用戶進(jìn)程init并等待用戶進(jìn)程的執(zhí)行,這樣整個Linux內(nèi)核便啟動完畢。
8.3Linux內(nèi)核移植實例
(移植Linux2.6.14.1到博創(chuàng)2410)
8.3.1下載Linux內(nèi)核并解壓
下載linux2.6.14.1內(nèi)核至/mnt/hgfs/share/mxl目錄下,并進(jìn)行解壓。
[root@localhostmxl]#tarxjvflinux2.6.14.1.tar.gz
[root@localhostmxl]#pwd
/mnt/hgfs/share/mxl8.3.2修改Makefile
修改內(nèi)核目錄樹根下的主Makefile,指明交叉編譯器。
[root@localhostlinux2.6.14.1]#viMakefile
找到ARCH和CROSS_COMPILE,修改。
ARCH?=arm
CROSS_COMPILE?=/usr/local/arm/3.4.1/bin/arm-linux-8.3.3設(shè)置Flash分區(qū)
此處一共要修改三個文件,主要內(nèi)容是:
1.指明分區(qū)信息(在arch/arm/mach-s3c2410/devs.c文件中)
在arch/arm/mach-s3c2410目錄中的文件都是板級相關(guān)的,其中比較重要的是如下幾個:
1)處理器和設(shè)備描述
設(shè)備描述主要由兩個結(jié)構(gòu)體完成:structresource和structplatform_device。
2)處理器和設(shè)備操作
①intplatform_device_register(structplatform_device*pdev);注冊設(shè)備;
②voidplatform_device_unregister(structplatform_device*pdev);注銷設(shè)備;
③intplatform_add_devices(structplatform_device**devs,intnum);添加設(shè)備,通過調(diào)用上面兩個函數(shù)實現(xiàn)。
2.指定啟動時初始化
kernel啟動時依據(jù)我們對分區(qū)的設(shè)置進(jìn)行初始配置。
3.禁止FlashECC校驗
如果內(nèi)核都是通過UBOOT寫到NandFlash的,UBOOT通過的軟件ECC算法產(chǎn)生ECC校驗碼,這與內(nèi)核校驗的ECC碼不一樣,因為內(nèi)核中的ECC碼是由S3C2410中NandFlash控制器產(chǎn)生的,所以這里選擇禁止內(nèi)核ECC校驗。8.3.4配置內(nèi)核
1.支持啟動時掛載devfs
為了使內(nèi)核支持devfs以及在啟動時并在/sbin/init運行之前能自動掛載?/dev為devfs文件系統(tǒng)。
2.配置內(nèi)核產(chǎn)生.config文件
[root@localhostlinux2.6.14.1]#cparch/arm/configs
/smdk2410_defconfig.config
[root@localhostlinux2.6.14.1]#makemenuconfig
3.編譯內(nèi)核
[root@localhostlinux2.6.14.1]#makezImage
成功編譯的結(jié)果如圖8-3所示。圖8-32.6內(nèi)核成功編譯的結(jié)果
4.下載zImage到開發(fā)板
重啟第7章成功移植的引導(dǎo)程序vivi,進(jìn)入下載模式,運行命令:
vivi>loadflashkernelx
將新內(nèi)核zImage下載到開發(fā)板中,如圖8-4所示。圖8-4串口下載2.6內(nèi)核8.3.5測試2.6.14.1內(nèi)核
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年統(tǒng)編版八年級歷史下冊階段測試試卷
- 2025年滬教新版九年級地理下冊階段測試試卷
- 2025年牛津上海版必修三生物下冊月考試卷
- 2025年新科版選修4歷史上冊階段測試試卷含答案
- 2025年度共享辦公空間租賃協(xié)議延期及使用權(quán)轉(zhuǎn)讓合同4篇
- 按揭二手車轉(zhuǎn)讓合同(2篇)
- 二零二五年度新能源汽車電池回收利用合同集錦2篇
- 二零二五年度企業(yè)并購財務(wù)盡職調(diào)查合同3篇
- 二零二五年度農(nóng)家樂鄉(xiāng)村旅游資源整合開發(fā)合同4篇
- 二零二五年度紡織機(jī)械設(shè)備租賃合同范本4篇
- 【寒假預(yù)習(xí)】專題04 閱讀理解 20篇 集訓(xùn)-2025年人教版(PEP)六年級英語下冊寒假提前學(xué)(含答案)
- 2024年智能監(jiān)獄安防監(jiān)控工程合同3篇
- 2024年度窯爐施工協(xié)議詳例細(xì)則版B版
- 幼兒園籃球課培訓(xùn)
- 【企業(yè)盈利能力探析的國內(nèi)外文獻(xiàn)綜述2400字】
- 統(tǒng)編版(2024新版)七年級《道德與法治》上冊第一單元《少年有夢》單元測試卷(含答案)
- 100道20以內(nèi)的口算題共20份
- 高三完形填空專項訓(xùn)練單選(部分答案)
- 護(hù)理查房高鉀血癥
- 項目監(jiān)理策劃方案匯報
- 《職業(yè)培訓(xùn)師的培訓(xùn)》課件
評論
0/150
提交評論