嵌入式Linux系統(tǒng)移植.ppt_第1頁(yè)
嵌入式Linux系統(tǒng)移植.ppt_第2頁(yè)
嵌入式Linux系統(tǒng)移植.ppt_第3頁(yè)
嵌入式Linux系統(tǒng)移植.ppt_第4頁(yè)
嵌入式Linux系統(tǒng)移植.ppt_第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)介

2019/7/6,操作系統(tǒng)實(shí)驗(yàn),1,操作系統(tǒng),實(shí)驗(yàn)五:嵌入式Linux系統(tǒng)移植,2019/7/6,操作系統(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)核,2019/7/6,操作系統(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)行移植的容易程度即可移植性,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),4,硬件平臺(tái)對(duì)移植的影響,Linux硬件平臺(tái) 硬件平臺(tái)對(duì)移植的影響 處理器字長(zhǎng) 字節(jié)順序 時(shí)間,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),5,Linux硬件平臺(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,xscale machine 包括edb7312, smdk2410, omap-h2,2019/7/6,操作系統(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, s64,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),7,字節(jié)順序,字節(jié)順序byte order是指一個(gè)字中字節(jié)排列的順序 不同硬件可能采用不同byte order x86 little-endian ppc big-endian Linux內(nèi)核將硬件的byte order放在 里面定義,_BIG_ENDIAN或_LITTLE_ENDIAN 在include/linux/byteorder /里面有幾個(gè)頭文件,定義了 u23 _cpu_to_be32(u32); /* convert cpus byte order to big endian*/ u32 _cpu_to_le32(u32); /* convert cpus byte order to little endian*/ u32 _be32_to_cpu(u32); /* convert big-endian to cpus byte order */ u32 _le32_to_cpus(u32); /* convert little-endian to cpus byte order */,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),8,字節(jié)順序,include/linux/byteorder/bigend.h,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),9,字節(jié)順序,include/linux/byteorder/swab.h,2019/7/6,操作系統(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 /* one second */ (2*HZ) /* two seconds */ (HZ/2) /* half a second */ (HZ/100) /* 10 ms */ (2*HZ/100) /* 20 ms */,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),11,移植環(huán)境的搭建,獲取內(nèi)核源碼 構(gòu)建交叉編譯環(huán)境,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),12,獲取內(nèi)核源碼,移植內(nèi)核之前,獲取內(nèi)核源碼自然是第一步 一個(gè)常用的FTP地址:/pub/linux/kernel/,2019/7/6,操作系統(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-gcc 3.4.1,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),14,構(gòu)建交叉編譯環(huán)境,下載交叉編譯工具包 .uk/pub/armlinux/toolchain/ 解壓縮文件 export PATH=$PATH:/usr/local/arm/3.4.1/bin 然后,我們可以使用命令“echo $PATH”來(lái)查看添加后的情況 要驗(yàn)證添加是否成功,在終端中輸入“arm-linux-gcc -v”,查看編譯器的版本號(hào),2019/7/6,操作系統(tǒng)實(shí)驗(yàn),15,Linux操作系統(tǒng)移植,概述 Linux內(nèi)核的平臺(tái)相關(guān)代碼 已有代碼向Linux內(nèi)核移植 Linux內(nèi)核移植,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),16,概述,內(nèi)核移植 arch implementation drivers porting,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),17,Linux內(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/architecture include/asm-architecture 比如arm體系的平臺(tái)相關(guān)代碼主要是 arch/arm include/asm-arm,2019/7/6,操作系統(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)題,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),19,Linux內(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特有的代碼,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),20,Linux內(nèi)核的arch目錄,進(jìn)入arch目錄,每個(gè)體系結(jié)構(gòu)代碼都有一個(gè)子目錄 進(jìn)入arm目錄,在arm體系結(jié)構(gòu)下我們可以看到很多sub-arch的子目錄,2019/7/6,操作系統(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.c,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),22,Linux內(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ù)百兆之多,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),23,Linux內(nèi)核代碼分布圖,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),24,Linux文件系統(tǒng),圖:Linux 文件系統(tǒng)組件的體系結(jié)構(gòu),2019/7/6,操作系統(tǒng)實(shí)驗(yàn),25,arch目錄,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代替,2019/7/6,操作系統(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)的。 fs Linux支持的文件系統(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)程間通訊代碼。,2019/7/6,操作系統(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ì),起參考作用。,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),28,Linux內(nèi)核向S3C2410移植,S3C2410簡(jiǎn)介 移植內(nèi)容: 移植Bootloader 移植Linux內(nèi)核 移植根文件系統(tǒng),2019/7/6,操作系統(tǒng)實(shí)驗(yàn),29,S3C2410簡(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),2019/7/6,操作系統(tǒng)實(shí)驗(yàn),30,主要特性,具有16KB指令Cache、 16KB數(shù)據(jù)Cache和存儲(chǔ)器管理單元MMU。 將外部地址空間8組,每組128MB,總?cè)萘窟_(dá)1GB;支持從Nand flash存儲(chǔ)器啟動(dòng)。 55個(gè)中斷源,可以設(shè)定1個(gè)為快速中斷,有24個(gè)外部中斷,并且觸發(fā)方式可以設(shè)定。 4通道的DMA,并且有外部請(qǐng)求引腳。 3個(gè)通道的UART,帶有16字節(jié)的TX/RX FIFO,支持IrDA1.0功能。,2019/7/6,操作系統(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)以普通方式、慢速方式、空閑方式和掉電方式工作。,2019/7/6,操作系統(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和DM9000,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),33,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),34,Bootloader,Bootloader的概念 Bootloader的結(jié)構(gòu)和啟動(dòng)過(guò)程,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),35,Bootloader,Bootloader的概念 系統(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)連接和開(kāi)發(fā)板,可以再串口上輸入各種命令、觀察運(yùn)行結(jié)果等。,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),36,Bootloader,Bootloader的結(jié)構(gòu) 嵌入式Linux系統(tǒng)從軟件的角度通??梢苑譃橐韵滤膫€(gè)層次: 引導(dǎo)加載程序 包括固化在固件的Boot代碼(BIOS)和Bootloader Linux內(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等,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),37,Bootloader,Bootloader的兩個(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)核,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),38,配置和編譯內(nèi)核,1、解壓內(nèi)核 tar xvfj linux-.tar.bz2 C /opt/kernel,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),39,Makefile與Kconfig,Linux的Makefile分析 Linux內(nèi)核源碼中含有很多個(gè)Makefile文件,這些Makefile文件又要包含其他一些文件(比如配置信息、通用規(guī)則等。)這些文件構(gòu)成了Linux的Makefile體系,可以分為如下五類:,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),40,Makefile與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。,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),41,Makefile與Kconfig,在頂層Makefile中可以看到如下內(nèi)容:,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),42,Makefile與Kconfig,對(duì)于arch/$(ARCH)/Makefile,以arm為例,在arch/arm/Makefile中可以看到如下內(nèi)容:,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),43,Makefile與Kconfig,Linux內(nèi)核中的.config文件默認(rèn)是隱藏的,可以輸入指令“l(fā)s -a”看到,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),44,Makefile與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)用他們的Makefile,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),45,Makefile與Kconfig,內(nèi)核源碼每個(gè)子目錄中都有一個(gè)Makefile與Kconfig。Makefile的作用已經(jīng)講述過(guò)了,而Kconfig用戶配置內(nèi)核,它就是各種配置界面的源文件。內(nèi)核的配置工具讀取各個(gè)Kconfig文件,生成配置界面供開(kāi)發(fā)人員配置內(nèi)核,最后生成配置文件.config Arch/arm/mach-s3c2410/Kconfig,2019/7/6,操作系統(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-”, 然后保存,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),47,配置和編譯內(nèi)核,4、 配置內(nèi)核 一般運(yùn)行make menuconfig配置內(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)核中的模塊,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),48,配置和編譯內(nèi)核,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),49,S3C2410X所用到的內(nèi)核選項(xiàng)配置,內(nèi)核配置主菜單: Code maturity level options - 代碼成熟等級(jí) Loadable module support - 對(duì)模塊的支持 System Type - 系統(tǒng)類型 General setup - 普通的屬性設(shè)置 Parallel port support - 并口支持 Memory Technology Devices (MTD) - MTD設(shè)備 Plug and Play configuration - 即插即用配置 Block devices - 塊設(shè)備 Multi-device support (RAID and LVM) -多設(shè)備驅(qū)動(dòng)支持 Networking options - 網(wǎng)絡(luò)選項(xiàng) Network device support - 網(wǎng)絡(luò)設(shè)備支持 Amateur Radio support - 業(yè)余無(wú)線廣播 IrDA (infrared) support - 紅外支持 ATA/IDE/MFM/RLL support - ATA/IDE設(shè)備支持 SCSI support - SCSI 支持,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),50,S3C2410X所用到的內(nèi)核選項(xiàng)配置,IEEE 1394 (FireWire) support (EXPERIMENTAL) - 1394支持 I2O device support - I2O設(shè)備支持 ISDN subsystem - ISDN子系統(tǒng) Input core support - 輸入輸出設(shè)備 Character devices - 字符設(shè)備 Multimedia devices - 多媒體設(shè)備 File systems - 文件系統(tǒng) Console drivers - 控制臺(tái) Sound - 聲音 Multimedia Capabilities Port drivers - 多媒體兼容設(shè)備 USB support - USB設(shè)備 Bluetooth support - 藍(lán)牙支持 Kernel hacking - 內(nèi)核調(diào)試 - Load an Alternate Configuration File - 保存當(dāng)前配置 Save Configuration to an Alternate File - 載入預(yù)配置,2019/7/6,操作系統(tǒng)實(shí)驗(yàn),51,S3C2410X所用到的內(nèi)核選項(xiàng)配置,Code maturity level options - 代碼成熟等級(jí)配置選: * Prompt for development and/or incomplete code/drivers Prompt for obsolete code/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)

溫馨提示

  • 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)論