嵌入式Linux系統(tǒng)移植-課件_第1頁(yè)
嵌入式Linux系統(tǒng)移植-課件_第2頁(yè)
嵌入式Linux系統(tǒng)移植-課件_第3頁(yè)
嵌入式Linux系統(tǒng)移植-課件_第4頁(yè)
嵌入式Linux系統(tǒng)移植-課件_第5頁(yè)
已閱讀5頁(yè),還剩53頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

8/18/2023操作系統(tǒng)實(shí)驗(yàn)1操作系統(tǒng)實(shí)驗(yàn)五:嵌入式Linux系統(tǒng)移植Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)1操作系統(tǒng)實(shí)驗(yàn)五:嵌入式Linu18/18/2023操作系統(tǒng)實(shí)驗(yàn)2內(nèi)容預(yù)覽移植的基本概念硬件平臺(tái)對(duì)移植的影響移植環(huán)境搭建Linux操作系統(tǒng)移植Linux內(nèi)核結(jié)構(gòu)Linux內(nèi)核向S3C2410移植配置和編譯內(nèi)核Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)2內(nèi)容預(yù)覽移植的基本概念Eval28/18/2023操作系統(tǒng)實(shí)驗(yàn)3移植的基本概念使某個(gè)平臺(tái)的代碼運(yùn)行在其他平臺(tái)上的過(guò)程就叫做移植。Linux系統(tǒng)通過(guò)移植可以運(yùn)行在ARM,PowerPC,M68K等多種平臺(tái)上。軟件的移植分三種:從一個(gè)硬件平臺(tái)移植到另一個(gè)硬件平臺(tái)從一個(gè)操作系統(tǒng)移植到另一個(gè)操作系統(tǒng)從一種軟件庫(kù)環(huán)境移植到另一個(gè)軟件庫(kù)環(huán)境軟件進(jìn)行移植的容易程度即可移植性Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)3移植的基本概念使某個(gè)平臺(tái)的代碼38/18/2023操作系統(tǒng)實(shí)驗(yàn)4硬件平臺(tái)對(duì)移植的影響Linux硬件平臺(tái)硬件平臺(tái)對(duì)移植的影響處理器字長(zhǎng)字節(jié)順序時(shí)間Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)4硬件平臺(tái)對(duì)移植的影響Linux48/18/2023操作系統(tǒng)實(shí)驗(yàn)5Linux硬件平臺(tái)在Linux內(nèi)核里,每一個(gè)處理器指令集對(duì)應(yīng)一個(gè)獨(dú)立的體系結(jié)構(gòu)architecture,比如alpha,arm,i386,mips,ppc每個(gè)體系結(jié)構(gòu)可以有若干變種variant,或不同配置的硬件machine,統(tǒng)稱sub-architecture。以arm體系結(jié)構(gòu)舉例:variants包括arm7tdmi,arm926ejs,strongarm,xscalemachine包括edb7312,smdk2410,omap-h2Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)5Linux硬件平臺(tái)在Linux58/18/2023操作系統(tǒng)實(shí)驗(yàn)6處理器字長(zhǎng)處理器字長(zhǎng),定義為處理器一次能處理的數(shù)據(jù)位數(shù)。字長(zhǎng)等于處理器內(nèi)部數(shù)據(jù)通路的寬度,一般可以通過(guò)通用寄存器的寬度來(lái)判斷處理器字長(zhǎng)會(huì)影響int,long等C類型的長(zhǎng)度C代碼當(dāng)中需要使用確定大小的數(shù)據(jù)類型,可以使用顯式長(zhǎng)度的類型:u8,s8,u16,s16,u32,s32,u64,s64Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)6處理器字長(zhǎng)處理器字長(zhǎng),定義為處68/18/2023操作系統(tǒng)實(shí)驗(yàn)7字節(jié)順序字節(jié)順序byteorder是指一個(gè)字中字節(jié)排列的順序不同硬件可能采用不同byteorderx86little-endianppcbig-endianLinux內(nèi)核將硬件的byteorder放在<asm/byteorder.h>里面定義,__BIG_ENDIAN或__LITTLE_ENDIAN在include/linux/byteorder/里面有幾個(gè)頭文件,定義了u23__cpu_to_be32(u32);/*convertcpu'sbyteordertobigendian*/u32__cpu_to_le32(u32);/*convertcpu'sbyteordertolittleendian*/u32__be32_to_cpu(u32);/*convertbig-endiantocpu'sbyteorder*/u32__le32_to_cpus(u32);/*convertlittle-endiantocpu'sbyteorder*/Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)7字節(jié)順序字節(jié)順序byteor78/18/2023操作系統(tǒng)實(shí)驗(yàn)8字節(jié)順序include/linux/byteorder/bigend.hEvaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)8字節(jié)順序include/lin88/18/2023操作系統(tǒng)實(shí)驗(yàn)9字節(jié)順序include/linux/byteorder/swab.hEvaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)9字節(jié)順序include/lin98/18/2023操作系統(tǒng)實(shí)驗(yàn)10時(shí)間軟件中的與時(shí)間相關(guān)的代碼也會(huì)影響移植采用平臺(tái)無(wú)關(guān)的時(shí)間表達(dá)方法可以提高代碼可移植性Linux內(nèi)核里面采用HZ來(lái)表示每秒鐘有多少個(gè)內(nèi)部時(shí)鐘滴答,以下對(duì)時(shí)間的描述是平臺(tái)無(wú)關(guān)的HZ/*onesecond*/(2*HZ)/*twoseconds*/(HZ/2)/*halfasecond*/(HZ/100)/*10ms*/(2*HZ/100)/*20ms*/Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)10時(shí)間軟件中的與時(shí)間相關(guān)的代碼108/18/2023操作系統(tǒng)實(shí)驗(yàn)11移植環(huán)境的搭建獲取內(nèi)核源碼構(gòu)建交叉編譯環(huán)境Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)11移植環(huán)境的搭建獲取內(nèi)核源碼E118/18/2023操作系統(tǒng)實(shí)驗(yàn)12獲取內(nèi)核源碼移植內(nèi)核之前,獲取內(nèi)核源碼自然是第一步一個(gè)常用的FTP地址:/pub/linux/kernel/Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)12獲取內(nèi)核源碼移植內(nèi)核之前,獲128/18/2023操作系統(tǒng)實(shí)驗(yàn)13構(gòu)建交叉編譯環(huán)境搭建交叉編譯環(huán)境是嵌入式開(kāi)發(fā)的第一步,也是很關(guān)鍵的一步。不同的體系結(jié)構(gòu)、不同的操作內(nèi)容設(shè)置是不同的版本的內(nèi)核,都會(huì)用到不同的交叉編譯器。選擇交叉編譯器非常重要,有些交叉編譯器經(jīng)常會(huì)有部分的bug,都會(huì)導(dǎo)致最后的代碼無(wú)法正常運(yùn)行。Gcc的版本有很多種,其中低于3.3.2版本的只能編譯Linux2.4版本的內(nèi)核,而3.3.2既能支持Linux2.4版本的內(nèi)核,也能支持Linux2.6版本的內(nèi)核.我們采用arm-linux-gcc3.4.1Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)13構(gòu)建交叉編譯環(huán)境搭建交叉編譯138/18/2023操作系統(tǒng)實(shí)驗(yàn)14構(gòu)建交叉編譯環(huán)境下載交叉編譯工具包.uk/pub/armlinux/toolchain/解壓縮文件exportPATH=$PATH:/usr/local/arm/3.4.1/bin然后,我們可以使用命令“echo$PATH”來(lái)查看添加后的情況要驗(yàn)證添加是否成功,在終端中輸入“arm-linux-gcc-v”,查看編譯器的版本號(hào)Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)14構(gòu)建交叉編譯環(huán)境下載交叉編譯148/18/2023操作系統(tǒng)實(shí)驗(yàn)15Linux操作系統(tǒng)移植概述Linux內(nèi)核的平臺(tái)相關(guān)代碼已有代碼向Linux內(nèi)核移植Linux內(nèi)核移植Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)15Linux操作系統(tǒng)移植概述E158/18/2023操作系統(tǒng)實(shí)驗(yàn)16概述內(nèi)核移植archimplementationdriversportingEvaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)16概述內(nèi)核移植Evaluati168/18/2023操作系統(tǒng)實(shí)驗(yàn)17Linux內(nèi)核的平臺(tái)相關(guān)代碼Linux內(nèi)核對(duì)多平臺(tái)有很好的支持內(nèi)核的對(duì)外部接口是統(tǒng)一的,并且與平臺(tái)無(wú)關(guān)內(nèi)核的大多數(shù)代碼也是與平臺(tái)無(wú)關(guān)的主要的體系結(jié)構(gòu)相關(guān)代碼存在于arch/architectureinclude/asm-architecture比如arm體系的平臺(tái)相關(guān)代碼主要是arch/arminclude/asm-armEvaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)17Linux內(nèi)核的平臺(tái)相關(guān)代碼178/18/2023操作系統(tǒng)實(shí)驗(yàn)18已有代碼向Linux內(nèi)核移植將已有代碼向內(nèi)核中移植有一些限制:內(nèi)核中沒(méi)有標(biāo)準(zhǔn)C庫(kù)支持內(nèi)核中沒(méi)有象用戶程序那樣的內(nèi)存保護(hù)內(nèi)核中不便使用浮點(diǎn)操作內(nèi)核的堆棧是固定大小的,并且比較有限在內(nèi)核中需要編程者考慮并發(fā)帶來(lái)的競(jìng)爭(zhēng)與冒險(xiǎn),以及同步問(wèn)題Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)18已有代碼向Linux內(nèi)核移植188/18/2023操作系統(tǒng)實(shí)驗(yàn)19Linux內(nèi)核移植Linux內(nèi)核代碼可以分為平臺(tái)相關(guān)部分和平臺(tái)無(wú)關(guān)部分Linux內(nèi)核絕大部分代碼是平臺(tái)無(wú)關(guān)的,可以被各種平臺(tái)所共享調(diào)度算法存儲(chǔ)器管理I/O子系統(tǒng)網(wǎng)絡(luò)協(xié)議棧依賴于特定硬件的代碼在Linux中采用條件編譯的方式區(qū)分ARCH=x86即打開(kāi)x86特有的代碼ARCH=arm即打開(kāi)arm特有的代碼Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)19Linux內(nèi)核移植Linux198/18/2023操作系統(tǒng)實(shí)驗(yàn)20Linux內(nèi)核的arch目錄進(jìn)入arch目錄,每個(gè)體系結(jié)構(gòu)代碼都有一個(gè)子目錄進(jìn)入arm目錄,在arm體系結(jié)構(gòu)下我們可以看到很多sub-arch的子目錄Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)20Linux內(nèi)核的arch目錄208/18/2023操作系統(tǒng)實(shí)驗(yàn)21實(shí)現(xiàn)sub-arch在sub-arch子目錄下,以mach-s3c2410為例一個(gè)硬件平臺(tái)支持需要實(shí)現(xiàn)以下幾個(gè)硬件相關(guān)的文件mach-s3c2410.c,irq.c,clock.c,dma.c,gpio.c,pm.c,sleep.c,time.cEvaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)21實(shí)現(xiàn)sub-archEval218/18/2023操作系統(tǒng)實(shí)驗(yàn)22Linux內(nèi)核結(jié)構(gòu)linux內(nèi)核主要由5個(gè)子系統(tǒng)組成:進(jìn)程調(diào)度、內(nèi)存管理、虛擬文件系統(tǒng)、網(wǎng)絡(luò)接口和進(jìn)程間通信。一般在Linux系統(tǒng)中的/usr/src/linux-*.*.*目錄下就是內(nèi)核源代碼。Linux內(nèi)核非常龐大,包括驅(qū)動(dòng)程序在內(nèi)有數(shù)百兆之多Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)22Linux內(nèi)核結(jié)構(gòu)linux228/18/2023操作系統(tǒng)實(shí)驗(yàn)23Linux內(nèi)核代碼分布圖charvideoext2nfsi386armipv4802……………………diversfsarchnetinitkernelmmipcincludeEvaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)23Linux內(nèi)核代碼分布圖ch238/18/2023操作系統(tǒng)實(shí)驗(yàn)24Linux文件系統(tǒng)圖:Linux文件系統(tǒng)組件的體系結(jié)構(gòu)Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)24Linux文件系統(tǒng)圖:Lin248/18/2023操作系統(tǒng)實(shí)驗(yàn)25arch目錄Linux系統(tǒng)能支持如此多的平臺(tái)的部分原因是因?yàn)閮?nèi)核把源程序代碼清晰地劃分為體系結(jié)構(gòu)無(wú)關(guān)部分和體系結(jié)構(gòu)相關(guān)部分。arch目錄包含了體系結(jié)構(gòu)相關(guān)部分的內(nèi)核代碼,其中每一種都代表一種硬件平臺(tái),如對(duì)于X86平臺(tái)就是i386,還有alpha,arm等。移植的重點(diǎn)就是arch目錄下的文件。對(duì)于任何平臺(tái),都必須包含以下幾個(gè)子目錄:boot:包含啟動(dòng)內(nèi)核所使用的部分或全部平臺(tái)特有代碼kernel:存放支持體系結(jié)構(gòu)特有的(如信號(hào)處理和SMP)特征的實(shí)現(xiàn)lib:存放高速的體系結(jié)構(gòu)特有的(如strlen和memcpy)通用函數(shù)的實(shí)現(xiàn)mm:存放體系結(jié)構(gòu)特有的內(nèi)存管理程序的實(shí)現(xiàn)math-emu:模擬FPU的代碼。對(duì)于arm處理器來(lái)說(shuō),此目錄用mach-xxx代替Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)25arch目錄Linux系統(tǒng)能258/18/2023操作系統(tǒng)實(shí)驗(yàn)26其他目錄drivers系統(tǒng)中所有的設(shè)備驅(qū)動(dòng)都位于此目錄中。它又進(jìn)一步劃分成幾類設(shè)備驅(qū)動(dòng),每一種也有對(duì)應(yīng)的子目錄,如聲卡的驅(qū)動(dòng)對(duì)應(yīng)于drivers/sound。占整個(gè)內(nèi)核發(fā)行版本代碼的一半以上,非常龐大。有些驅(qū)動(dòng)程序是和硬件平臺(tái)無(wú)關(guān)而有些是相關(guān)的。fsLinux支持的文件系統(tǒng)代碼。不同的文件系統(tǒng)有不同的子目錄對(duì)應(yīng),如ext2文件系統(tǒng)對(duì)應(yīng)的就是ext2子目錄。一般來(lái)說(shuō),文件系統(tǒng)與硬件平臺(tái)無(wú)關(guān)。include這個(gè)目錄包括了編譯核心所需要的大多數(shù)頭文件。不同的平臺(tái)需要的頭文件會(huì)有所不同,對(duì)于每種支持的體系結(jié)構(gòu)分別有一個(gè)子目錄,如asm-arm。init此目錄包含核心啟動(dòng)代碼,有main.c和version.c兩個(gè)文件,這是研究?jī)?nèi)核如何工作的好的起點(diǎn)。ipc此目錄包含了核心的進(jìn)程間通訊代碼。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)26其他目錄drivers系統(tǒng)268/18/2023操作系統(tǒng)實(shí)驗(yàn)27其他目錄mm此目錄包含了所有的內(nèi)存管理代碼。與具體硬件體系結(jié)構(gòu)相關(guān)的內(nèi)存管理代碼位于arch/*/mm目錄下,如對(duì)應(yīng)于X86的就是arch/i386/mm/fault.c。modules此目錄包含已建好可動(dòng)態(tài)加載的模塊。kernel主要核心代碼。同時(shí)與處理器結(jié)構(gòu)相關(guān)代碼都放在arch/*/kernel目錄下。net核心的網(wǎng)絡(luò)部分代碼。里面的每個(gè)子目錄對(duì)應(yīng)于網(wǎng)絡(luò)的一個(gè)方面。lib此目錄包含了核心的庫(kù)代碼。與處理器結(jié)構(gòu)相關(guān)庫(kù)代碼被放在arch/*/lib/目錄下,包含與平臺(tái)無(wú)關(guān)的通用函數(shù)。scripts此目錄包含用于配置核心的腳本文件,在配置內(nèi)核時(shí)用到。documentation此目錄是一些文檔,非常詳細(xì),起參考作用。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)27其他目錄mm此目錄包含了所278/18/2023操作系統(tǒng)實(shí)驗(yàn)28Linux內(nèi)核向S3C2410移植S3C2410簡(jiǎn)介移植內(nèi)容:移植Bootloader移植Linux內(nèi)核移植根文件系統(tǒng)Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)28Linux內(nèi)核向S3C241288/18/2023操作系統(tǒng)實(shí)驗(yàn)29S3C2410簡(jiǎn)介S3C2410簡(jiǎn)介S3C2410X是韓國(guó)三星公司推出的16/32位RISC微控制器,其CPU采用的是ARM920T內(nèi)核,加上豐富的片內(nèi)外設(shè),為手持設(shè)備和其它應(yīng)用,提供了低價(jià)格、低功耗、高性能微控制器的解決方案。主要特性系統(tǒng)結(jié)構(gòu)Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)29S3C2410簡(jiǎn)介S3C24298/18/2023操作系統(tǒng)實(shí)驗(yàn)30主要特性具有16KB指令Cache、16KB數(shù)據(jù)Cache和存儲(chǔ)器管理單元MMU。將外部地址空間8組,每組128MB,總?cè)萘窟_(dá)1GB;支持從Nandflash存儲(chǔ)器啟動(dòng)。55個(gè)中斷源,可以設(shè)定1個(gè)為快速中斷,有24個(gè)外部中斷,并且觸發(fā)方式可以設(shè)定。4通道的DMA,并且有外部請(qǐng)求引腳。3個(gè)通道的UART,帶有16字節(jié)的TX/RXFIFO,支持IrDA1.0功能。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)30主要特性具有16KB指令Ca308/18/2023操作系統(tǒng)實(shí)驗(yàn)31主要特性有2個(gè)USB主機(jī)總線的端口,或1個(gè)USB設(shè)備總線的端口。有4個(gè)具有PWM功能的16位定時(shí)器和1個(gè)16位內(nèi)部定時(shí)器。8通道的10位A/D轉(zhuǎn)換器,最高速率可達(dá)500kB/s;提供有觸摸屏接口。具有117個(gè)通用I/O口和24通道的外部中斷源。兼容MMC的SD卡接口。具有電源管理功能,可以使系統(tǒng)以普通方式、慢速方式、空閑方式和掉電方式工作。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)31主要特性有2個(gè)USB主機(jī)總線318/18/2023操作系統(tǒng)實(shí)驗(yàn)32主要特性看門(mén)狗定時(shí)器。有LCD控制器,支持4K色的STN和256K色的TFT,配置有DMA通道。具有PLL功能的時(shí)鐘發(fā)生器,時(shí)鐘頻率高達(dá)203MHz。雙電源系統(tǒng):1.8/2.0V內(nèi)核供電,3.3V存儲(chǔ)器和I/O供電。沒(méi)有內(nèi)置的網(wǎng)絡(luò)控制器,如果需要網(wǎng)絡(luò)功能,一般使用CS8900和DM9000Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)32主要特性看門(mén)狗定時(shí)器。Eva328/18/2023操作系統(tǒng)實(shí)驗(yàn)33Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)33Evaluationonl338/18/2023操作系統(tǒng)實(shí)驗(yàn)34BootloaderBootloader的概念Bootloader的結(jié)構(gòu)和啟動(dòng)過(guò)程Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)34BootloaderBoot348/18/2023操作系統(tǒng)實(shí)驗(yàn)35BootloaderBootloader的概念系統(tǒng)上電后,需要一段程序來(lái)進(jìn)行初始化:關(guān)閉WATCHDOG、改變系統(tǒng)時(shí)鐘、初始化存儲(chǔ)控制器、將更多的代碼復(fù)制到內(nèi)存中等。如果它能夠?qū)⒉僮飨到y(tǒng)內(nèi)核復(fù)制到內(nèi)存中運(yùn)行,無(wú)論從本地(比如Flash)還是從遠(yuǎn)端(比如通過(guò)網(wǎng)絡(luò)),就成這段程序?yàn)锽ootloader.簡(jiǎn)單的說(shuō),Boot咯啊der就是這么一小段程序,它在系統(tǒng)上電時(shí)開(kāi)始執(zhí)行,初始化硬件設(shè)備、準(zhǔn)備好軟件環(huán)境,最后調(diào)用操作系統(tǒng)內(nèi)核。在開(kāi)發(fā)時(shí),通暢需要使用各種命令操作Bootloader,一般通過(guò)串口來(lái)連接PC和開(kāi)發(fā)板,可以再串口上輸入各種命令、觀察運(yùn)行結(jié)果等。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)35BootloaderBoot358/18/2023操作系統(tǒng)實(shí)驗(yàn)36BootloaderBootloader的結(jié)構(gòu)嵌入式Linux系統(tǒng)從軟件的角度通??梢苑譃橐韵滤膫€(gè)層次:引導(dǎo)加載程序包括固化在固件的Boot代碼(BIOS)和BootloaderLinux內(nèi)核文件系統(tǒng)包括根文件系統(tǒng)。里面包含了Linux系統(tǒng)能夠運(yùn)行所必需的應(yīng)用程序、庫(kù)等,比如可以給用戶提供操作Linux的控制界面的shell程序、動(dòng)態(tài)鏈接的程序運(yùn)行時(shí)需要的glibc庫(kù)等用戶應(yīng)用程序特定于用戶的應(yīng)用程序也存儲(chǔ)在文件系統(tǒng)中。有時(shí)在用戶應(yīng)用程序和內(nèi)核層之間可能還會(huì)包括一個(gè)嵌入式圖形用戶界面。常用的嵌入式GUI有:Qtopia和MiniGUI等Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)36BootloaderBoot368/18/2023操作系統(tǒng)實(shí)驗(yàn)37BootloaderBootloader的兩個(gè)階段從固態(tài)存儲(chǔ)設(shè)備上啟動(dòng)的Bootloader大多都是兩階段的啟動(dòng)過(guò)程。第一階段使用匯編來(lái)實(shí)現(xiàn),它完成一些依賴于CPU體系結(jié)構(gòu)的初始化,并調(diào)用第二階段的代碼;第二階段則通常使用C語(yǔ)言來(lái)實(shí)現(xiàn)。Bootloader第一階段的功能硬件設(shè)備初始化(關(guān)閉WATCHDOG,關(guān)中斷,設(shè)置CPU的速度和時(shí)鐘頻率等)為加載Bootloader的第二階段代碼準(zhǔn)備RAM空間復(fù)制Bootloader的第二階段代碼到RAM空間中設(shè)置好棧跳轉(zhuǎn)到第二階段的C入口點(diǎn)Bootloader第二階段的功能初始化本階段要使用到的硬件設(shè)備檢測(cè)系統(tǒng)內(nèi)存映射將內(nèi)核映像和根文件系統(tǒng)應(yīng)用從Flash上讀到RAM空間中為內(nèi)核設(shè)置啟動(dòng)參數(shù)調(diào)用內(nèi)核Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)37BootloaderBoot378/18/2023操作系統(tǒng)實(shí)驗(yàn)38配置和編譯內(nèi)核1、解壓內(nèi)核tarxvfjlinux-.tar.bz2–C/opt/kernel

Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)38配置和編譯內(nèi)核1、解壓內(nèi)核388/18/2023操作系統(tǒng)實(shí)驗(yàn)39Makefile與KconfigLinux的Makefile分析Linux內(nèi)核源碼中含有很多個(gè)Makefile文件,這些Makefile文件又要包含其他一些文件(比如配置信息、通用規(guī)則等。)這些文件構(gòu)成了Linux的Makefile體系,可以分為如下五類:名稱描述頂層Makefile它是所有makefile文件的核心,從總體上控制著內(nèi)核的編譯、連接.config配置文件,在配置內(nèi)核時(shí)生成。根據(jù).config可以確定在編譯內(nèi)核時(shí)需要使用哪些文件arch/$(ARCH)/Makefile對(duì)應(yīng)體系結(jié)構(gòu)的Makefile,它用來(lái)決定哪些體系結(jié)構(gòu)相關(guān)的文件參與內(nèi)核的生成,并提供一些規(guī)則來(lái)生成特定格式的內(nèi)核映像Scripts/Makefile.*Makefile共用的通用規(guī)則、腳本等KbuildMakefiles各級(jí)子目錄下的makefile,他們相對(duì)簡(jiǎn)單,被上一層makefile調(diào)用來(lái)編譯當(dāng)前目錄下的文件Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)39Makefile與Kconf398/18/2023操作系統(tǒng)實(shí)驗(yàn)40Makefile與Kconfig我們主要來(lái)關(guān)注Makefile是如何決定編譯哪些文件的Linux內(nèi)核的編譯過(guò)程從頂層Makefile文件開(kāi)始,然后遞歸地進(jìn)入各級(jí)子目錄調(diào)用他們的makefile,分為三個(gè)步驟:頂層Makefile決定內(nèi)核根目錄下哪些子目錄將被編進(jìn)內(nèi)核Arch/$(ARCH)/Makefile決定arch/$(ARCH)目錄下哪些文件、哪些目錄將被編譯進(jìn)內(nèi)核各級(jí)子目錄下的Makefile決定所在目錄下哪些文件將被編譯進(jìn)內(nèi)核,哪些文件將被編譯成模塊(即驅(qū)動(dòng)程序),進(jìn)入哪些子目錄繼續(xù)調(diào)用他們的Makefile。

Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)40Makefile與Kconf408/18/2023操作系統(tǒng)實(shí)驗(yàn)41Makefile與Kconfig在頂層Makefile中可以看到如下內(nèi)容:

Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)41Makefile與Kconf418/18/2023操作系統(tǒng)實(shí)驗(yàn)42Makefile與Kconfig對(duì)于arch/$(ARCH)/Makefile,以arm為例,在arch/arm/Makefile中可以看到如下內(nèi)容:

Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)42Makefile與Kconf428/18/2023操作系統(tǒng)實(shí)驗(yàn)43Makefile與KconfigLinux內(nèi)核中的.config文件默認(rèn)是隱藏的,可以輸入指令“l(fā)s-a”看到Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)43Makefile與Kconf438/18/2023操作系統(tǒng)實(shí)驗(yàn)44Makefile與Kconfig.config配置文件中定義了一系列的變量,Makefile將結(jié)合他們來(lái)決定哪些文件被編譯進(jìn)內(nèi)核、哪些文件被編譯成模塊、涉及哪些子目錄頂層makefile和arch/$(ARCH)/makefile決定根目錄下哪些子目錄、arch/$(ARCH)目錄下哪些文件和目錄將被編譯進(jìn)內(nèi)核最后,各級(jí)子目錄下的makefile決定所在目錄下哪些文件將被編進(jìn)內(nèi)核,哪些文件將被編成模塊,進(jìn)入子目錄哪些子目錄繼續(xù)調(diào)用他們的MakefileEvaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)44Makefile與Kconf448/18/2023操作系統(tǒng)實(shí)驗(yàn)45Makefile與Kconfig內(nèi)核源碼每個(gè)子目錄中都有一個(gè)Makefile與Kconfig。Makefile的作用已經(jīng)講述過(guò)了,而Kconfig用戶配置內(nèi)核,它就是各種配置界面的源文件。內(nèi)核的配置工具讀取各個(gè)Kconfig文件,生成配置界面供開(kāi)發(fā)人員配置內(nèi)核,最后生成配置文件.configArch/arm/mach-s3c2410/KconfigEvaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)45Makefile與Kconf458/18/2023操作系統(tǒng)實(shí)驗(yàn)46配置和編譯內(nèi)核3、在系統(tǒng)中添加對(duì)ARM的支持進(jìn)入內(nèi)核源碼,修改“Makefile”文件,在189行“ARCH?=(SUBARCH)”和194行“CROSS_COMPILE?=“,將其修改為”ARCH=arm”和“CROSS_COMPILE=arm-linux-”,然后保存Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)46配置和編譯內(nèi)核3、在系統(tǒng)中468/18/2023操作系統(tǒng)實(shí)驗(yàn)47配置和編譯內(nèi)核4、配置內(nèi)核一般運(yùn)行makemenuconfig配置內(nèi)核,內(nèi)核的配置選項(xiàng)有很多,用戶可以使用我們提供的預(yù)配置文件s3c2410,也可以自行配置,選擇相應(yīng)的配置時(shí),有三種選擇(按空格鍵進(jìn)行選擇),它們分別代表的含義如下:

[*]-將該功能編譯進(jìn)內(nèi)核

[]-不將該功能編譯進(jìn)內(nèi)核

[M]-將該功能編譯成可以在需要時(shí)動(dòng)態(tài)插入到內(nèi)核中的模塊Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)47配置和編譯內(nèi)核4、配置內(nèi)核478/18/2023操作系統(tǒng)實(shí)驗(yàn)48配置和編譯內(nèi)核Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)48配置和編譯內(nèi)核Evaluat488/18/2023操作系統(tǒng)實(shí)驗(yàn)49S3C2410X所用到的內(nèi)核選項(xiàng)配置內(nèi)核配置主菜單:Codematurityleveloptions---代碼成熟等級(jí)Loadablemodulesupport---對(duì)模塊的支持SystemType---系統(tǒng)類型Generalsetup---普通的屬性設(shè)置Parallelportsupport---并口支持MemoryTechnologyDevices(MTD)---MTD設(shè)備PlugandPlayconfiguration---即插即用配置Blockdevices---塊設(shè)備Multi-devicesupport(RAIDandLVM)---多設(shè)備驅(qū)動(dòng)支持Networkingoptions---網(wǎng)絡(luò)選項(xiàng)Networkdevicesupport---網(wǎng)絡(luò)設(shè)備支持AmateurRadiosupport---業(yè)余無(wú)線廣播IrDA(infrared)support---紅外支持ATA/IDE/MFM/RLLsupport---ATA/IDE設(shè)備支持SCSIsupport---SCSI支持Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)49S3C2410X所用到的內(nèi)核498/18/2023操作系統(tǒng)實(shí)驗(yàn)50S3C2410X所用到的內(nèi)核選項(xiàng)配置IEEE1394(FireWire)support(EXPERIMENTAL)---1394支持I2Odevicesupport---I2O設(shè)備支持ISDNsubsystem---ISDN子系統(tǒng)Inputcoresupport---輸入輸出設(shè)備Characterdevices---字符設(shè)備Multimediadevices---多媒體設(shè)備Filesystems---文件系統(tǒng)Consoledrivers---控制臺(tái)Sound---聲音MultimediaCapabilitiesPortdrivers---多媒體兼容設(shè)備USBsupport---USB設(shè)備Bluetoothsupport---藍(lán)牙支持Kernelhacking---內(nèi)核調(diào)試---LoadanAlternateConfigurationFile---保存當(dāng)前配置SaveConfigurationtoanAlternateFile---載入預(yù)配置Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.8/5/2023操作系統(tǒng)實(shí)驗(yàn)50S3C2410X所用到的內(nèi)核508/18/2023操作系統(tǒng)實(shí)驗(yàn)51S3C2410X所用到的內(nèi)核選項(xiàng)配置

Codematurityleveloptions---代碼成熟等級(jí)配置選:

[*]Promptfordevelopmentand/orincompletecode/drivers

[

]Promptforobsoletecode/drivers

說(shuō)明:

如果要試驗(yàn)現(xiàn)在仍處于實(shí)驗(yàn)階段的功能,比如IPv6等,就必須把該項(xiàng)選擇為Y了;否則可以把它選擇為N。在Linux的世界里,每天都有許多人為它開(kāi)發(fā)支持的driver和加強(qiáng)它的核心。但是有些driver還沒(méi)進(jìn)入穩(wěn)定的階段。但其作者很歡迎其他人去測(cè)試這些driver并提出一些bugs。這個(gè)問(wèn)題是說(shuō),有一些drive還在做測(cè)試中,問(wèn)您是否要選擇這些driver或支持的程序。

Loadablemodulesupport---對(duì)模塊的支持配置選項(xiàng):

[*]Enableloadablemodulesupport

[]Setversioninformationonallmodulesymbols

[*]KernelmoduleloaderEvaluationonly.CreatedwithAspose.Slidesfor.NET

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論