嵌入式系統(tǒng)軟件移植與Linux下程序開(kāi)發(fā)_第1頁(yè)
嵌入式系統(tǒng)軟件移植與Linux下程序開(kāi)發(fā)_第2頁(yè)
嵌入式系統(tǒng)軟件移植與Linux下程序開(kāi)發(fā)_第3頁(yè)
嵌入式系統(tǒng)軟件移植與Linux下程序開(kāi)發(fā)_第4頁(yè)
嵌入式系統(tǒng)軟件移植與Linux下程序開(kāi)發(fā)_第5頁(yè)
已閱讀5頁(yè),還剩102頁(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)介

1、嵌入式系統(tǒng)講義嵌入式系統(tǒng)講義第第6章章 嵌入式系統(tǒng)軟件移植嵌入式系統(tǒng)軟件移植與與Linux下程序開(kāi)發(fā)下程序開(kāi)發(fā)周?chē)?guó)運(yùn)周?chē)?guó)運(yùn)2007.9本章主要內(nèi)容本章主要內(nèi)容1、Bootloader及及vivi移植移植2、嵌入式、嵌入式Linux內(nèi)核及移植內(nèi)核及移植3、基于、基于Linux的應(yīng)用程序開(kāi)發(fā)的應(yīng)用程序開(kāi)發(fā)4、基于、基于Linux的驅(qū)動(dòng)程序開(kāi)發(fā)的驅(qū)動(dòng)程序開(kāi)發(fā)5、驅(qū)動(dòng)程序開(kāi)發(fā)實(shí)例、驅(qū)動(dòng)程序開(kāi)發(fā)實(shí)例6.1 Bootloader 及及vivi移植移植本節(jié)內(nèi)容本節(jié)內(nèi)容1、Bootloader簡(jiǎn)介簡(jiǎn)介2、Bootloader工作模式工作模式 3、Bootloader啟動(dòng)過(guò)程啟動(dòng)過(guò)程4、vivi Bootloa

2、der源代碼分析源代碼分析5、vivi Bootloader接口命令接口命令6、vivi 源代碼修改移植源代碼修改移植建立交叉編譯環(huán)境建立交叉編譯環(huán)境Bootloader的的/移植移植/配置配置/編譯編譯kernel的移植的移植/配置配置/編譯編譯根文件系統(tǒng)根文件系統(tǒng)Cramfs的實(shí)現(xiàn)的實(shí)現(xiàn)嵌入式系統(tǒng)軟件開(kāi)發(fā)流程嵌入式系統(tǒng)軟件開(kāi)發(fā)流程用戶應(yīng)用程序開(kāi)發(fā)用戶應(yīng)用程序開(kāi)發(fā)6.1.1 Bootloader簡(jiǎn)介簡(jiǎn)介Bootloader,為引導(dǎo)加載程序,為引導(dǎo)加載程序,是嵌入式,是嵌入式系統(tǒng)加電后運(yùn)行的第一段代碼,相當(dāng)于系統(tǒng)加電后運(yùn)行的第一段代碼,相當(dāng)于PC機(jī)機(jī)的的BIOS。 Bootloader的位置:

3、的位置:通常固化在硬件上的通常固化在硬件上的某個(gè)固態(tài)存儲(chǔ)設(shè)備上,加電后自啟動(dòng)。某個(gè)固態(tài)存儲(chǔ)設(shè)備上,加電后自啟動(dòng)。 Bootloader功能:功能:初始化硬件設(shè)備、建立初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,將系統(tǒng)的軟、硬件環(huán)境內(nèi)存空間的映射圖,將系統(tǒng)的軟、硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作帶到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。 Bootloader在軟件的層次位置在軟件的層次位置 Bootloader Boot parametersKernel Root filesystemBootloader的地址:的地址:在嵌入式系統(tǒng)中,在嵌入

4、式系統(tǒng)中,系統(tǒng)在上電或復(fù)位時(shí)從地址系統(tǒng)在上電或復(fù)位時(shí)從地址0 x0000,0000處開(kāi)始執(zhí)行,在這個(gè)地址處安排的就是處開(kāi)始執(zhí)行,在這個(gè)地址處安排的就是Bootloader。Bootloader是嚴(yán)重地依賴(lài)于硬件是嚴(yán)重地依賴(lài)于硬件而實(shí)而實(shí)現(xiàn)的。每種不同體系結(jié)構(gòu)的處理器都有現(xiàn)的。每種不同體系結(jié)構(gòu)的處理器都有不同的不同的Bootloader。不過(guò)。不過(guò)Bootloader的發(fā)的發(fā)展也趨于支持多種體系結(jié)構(gòu),如現(xiàn)在比展也趨于支持多種體系結(jié)構(gòu),如現(xiàn)在比較成熟的較成熟的vivi、RedBoot和和U-Boot等。等。 幾種發(fā)布的幾種發(fā)布的Bootloader1、vivivivi是韓國(guó)是韓國(guó)Mizi公司開(kāi)發(fā)的

5、公司開(kāi)發(fā)的Bootloader,適用于適用于ARM9處理器。處理器。2、RedBoot RedBoot即紅帽即紅帽(Red Hat)嵌入式嵌入式調(diào)試引導(dǎo)程序,是一種用于嵌入式系統(tǒng)的獨(dú)立調(diào)試引導(dǎo)程序,是一種用于嵌入式系統(tǒng)的獨(dú)立開(kāi)放源代碼引導(dǎo)開(kāi)放源代碼引導(dǎo)/裝載器。裝載器。3、U-Boot U-Boot(Universal Bootloader)由)由德國(guó)德國(guó)DENX小組開(kāi)發(fā),是一款目前功能較為強(qiáng)小組開(kāi)發(fā),是一款目前功能較為強(qiáng)大的開(kāi)源大的開(kāi)源Bootloader程序,它支持多種處理器程序,它支持多種處理器平臺(tái),包括平臺(tái),包括ARM、PowerPC、MIPS等。等。 6.1.2 Bootloader

6、操作模式操作模式 大多數(shù)大多數(shù)Bootloader都有兩種不同的操都有兩種不同的操作模式:作模式:“啟動(dòng)加載啟動(dòng)加載”模式和模式和“下載下載”模式。其區(qū)別對(duì)于開(kāi)發(fā)人員才有意義。模式。其區(qū)別對(duì)于開(kāi)發(fā)人員才有意義。從最終用戶的角度看,從最終用戶的角度看,Bootloader的的作用就是用來(lái)加載操作系統(tǒng),而并不存作用就是用來(lái)加載操作系統(tǒng),而并不存在所謂的啟動(dòng)加載模式與下載模式的區(qū)在所謂的啟動(dòng)加載模式與下載模式的區(qū)別。別。 1、啟動(dòng)加載(、啟動(dòng)加載(Bootloading)模式)模式啟動(dòng)加載模式稱(chēng)為啟動(dòng)加載模式稱(chēng)為“自舉自舉”(Autonomous)模式。即)模式。即Bootloader從從目標(biāo)機(jī)上的

7、某個(gè)固態(tài)存儲(chǔ)設(shè)備上將操作目標(biāo)機(jī)上的某個(gè)固態(tài)存儲(chǔ)設(shè)備上將操作系統(tǒng)加載到系統(tǒng)加載到 RAM 中運(yùn)行,整個(gè)過(guò)程并中運(yùn)行,整個(gè)過(guò)程并沒(méi)有用戶的介入。沒(méi)有用戶的介入。啟動(dòng)加載模式是啟動(dòng)加載模式是 Bootloader的正常工的正常工作模式,在嵌入式產(chǎn)品發(fā)布的時(shí)侯,作模式,在嵌入式產(chǎn)品發(fā)布的時(shí)侯,Bootloader必須工作在這種模式下。必須工作在這種模式下。 2、下載(、下載(Downloading)模式)模式下載方式:下載方式:在這種模式下,目標(biāo)機(jī)上在這種模式下,目標(biāo)機(jī)上的的Bootloader將通過(guò)串口連接或網(wǎng)絡(luò)連接將通過(guò)串口連接或網(wǎng)絡(luò)連接等通信手段從主機(jī)下載文件。等通信手段從主機(jī)下載文件。下載內(nèi)容

8、及存儲(chǔ):下載內(nèi)容及存儲(chǔ):主要是下載內(nèi)核映主要是下載內(nèi)核映像和根文件系統(tǒng)映像等。從主機(jī)下載的像和根文件系統(tǒng)映像等。從主機(jī)下載的文件通常首先被文件通常首先被Bootloader保存到目標(biāo)機(jī)保存到目標(biāo)機(jī)的的RAM中,然后再被中,然后再被 Bootloader寫(xiě)到目寫(xiě)到目標(biāo)機(jī)上的標(biāo)機(jī)上的FLASH 類(lèi)固態(tài)存儲(chǔ)設(shè)備中。類(lèi)固態(tài)存儲(chǔ)設(shè)備中。下載模式應(yīng)用場(chǎng)合:下載模式應(yīng)用場(chǎng)合:Bootloader的這的這種模式通常在第一次安裝內(nèi)核與根文件種模式通常在第一次安裝內(nèi)核與根文件系統(tǒng)時(shí)被使用;此外,以后的系統(tǒng)更新系統(tǒng)時(shí)被使用;此外,以后的系統(tǒng)更新也會(huì)使用到這種工作模式。也會(huì)使用到這種工作模式。用戶應(yīng)用接口:用戶應(yīng)用接

9、口:工作于這種模式下的工作于這種模式下的Bootloader通常都會(huì)向它的終端用戶提供通常都會(huì)向它的終端用戶提供一個(gè)簡(jiǎn)單的命令行接口。一個(gè)簡(jiǎn)單的命令行接口。 如在如在RedBoot下,將出現(xiàn)下,將出現(xiàn)“RedBoot”提示符;在提示符;在vivi Bootloader 下出現(xiàn)下出現(xiàn)“vivi”提示符。提示符。2、下載(、下載(Downloading)模式)模式RedBoot的的Bootloader像像RedBoot或或U-Boot等功能強(qiáng)大的等功能強(qiáng)大的Bootloader通常都可同時(shí)支持這兩種工作模通常都可同時(shí)支持這兩種工作模式,而且允許用戶在這兩種工作模式之間進(jìn)式,而且允許用戶在這兩種工作

10、模式之間進(jìn)行切換。行切換。比如,比如,RedBoot在啟動(dòng)時(shí)處于正常的啟動(dòng)在啟動(dòng)時(shí)處于正常的啟動(dòng)加載模式,但是它會(huì)延時(shí)加載模式,但是它會(huì)延時(shí)3秒等待終端用戶秒等待終端用戶按下任意鍵而將按下任意鍵而將RedBoot切換到下載模式。切換到下載模式。如在等待時(shí)間內(nèi)沒(méi)有接收到用戶按鍵,則繼如在等待時(shí)間內(nèi)沒(méi)有接收到用戶按鍵,則繼續(xù)啟動(dòng)續(xù)啟動(dòng) Linux 內(nèi)核。內(nèi)核。 6.1.3 Bootloader啟動(dòng)過(guò)程啟動(dòng)過(guò)程Bootloader的啟動(dòng)可以分為兩個(gè)階段的啟動(dòng)可以分為兩個(gè)階段1、第一階段、第一階段階段階段1主要包含依賴(lài)于主要包含依賴(lài)于CPU體系結(jié)構(gòu)及硬體系結(jié)構(gòu)及硬件設(shè)備的初始化等。通常都用匯編語(yǔ)言來(lái)實(shí)

11、件設(shè)備的初始化等。通常都用匯編語(yǔ)言來(lái)實(shí)現(xiàn)。這個(gè)階段的任務(wù)有現(xiàn)。這個(gè)階段的任務(wù)有5:(1)、基本的硬件設(shè)備初始化、基本的硬件設(shè)備初始化這是這是 Bootloader 一開(kāi)始就執(zhí)行的操作,一開(kāi)始就執(zhí)行的操作,其目的是為階段其目的是為階段2 的執(zhí)行、以及隨后的執(zhí)行、以及隨后kernel 的執(zhí)行準(zhǔn)備好一些基本的硬件環(huán)境。的執(zhí)行準(zhǔn)備好一些基本的硬件環(huán)境。 它通常包括以下工作:它通常包括以下工作:屏蔽所有的屏蔽所有的中斷、設(shè)置中斷、設(shè)置 CPU 的速度和時(shí)鐘頻率、的速度和時(shí)鐘頻率、關(guān)閉處理器內(nèi)部指令關(guān)閉處理器內(nèi)部指令/數(shù)據(jù)數(shù)據(jù)cache等。等。(2)、為階段、為階段2代碼準(zhǔn)備代碼準(zhǔn)備RAM空間空間為了獲得

12、更快的執(zhí)行速度,通常把為了獲得更快的執(zhí)行速度,通常把 階段階段2 的代碼加載到的代碼加載到 RAM 空間中來(lái)執(zhí)空間中來(lái)執(zhí)行。行。 準(zhǔn)備準(zhǔn)備RAM空間考慮的因素:階段空間考慮的因素:階段2代碼大小、堆棧、頁(yè)大?。ùa大小、堆棧、頁(yè)大小(4KB的倍的倍數(shù))、安排位置等。數(shù))、安排位置等。 總的空間有總的空間有1MB足夠,安排在足夠,安排在RAM的頂端較恰當(dāng)。的頂端較恰當(dāng)。(3)、拷貝階段、拷貝階段2代碼到代碼到RAM空間空間(4)、設(shè)置好堆棧、設(shè)置好堆棧堆棧指針堆棧指針sp設(shè)置在設(shè)置在1MB 的的 RAM 空空間的最頂端間的最頂端(堆棧向下生長(zhǎng)堆棧向下生長(zhǎng))。(5)、跳轉(zhuǎn)到階段、跳轉(zhuǎn)到階段2的的C

13、程序入口點(diǎn)程序入口點(diǎn)在上述一切都就緒后,就可以跳轉(zhuǎn)在上述一切都就緒后,就可以跳轉(zhuǎn)到到 Bootloader 的的 stage2 去執(zhí)行了。去執(zhí)行了。stage2_start.stage1為stage2可執(zhí)行映像準(zhǔn)備的RAM地址范圍,大?。?MBramdisk .(blank)內(nèi)核映像 .(blank)stage2可執(zhí)行映像可能的最大大小:1MBstage1可執(zhí)行映像大?。?MBRAM地址空間Flash地址空間堆棧指針sp:stage_end-40 x0001,0000(64KB)0 x0000,0400(1KB)0 x0000,0000 .(blank) Bootloader的階段的階段2可執(zhí)

14、行映像剛被拷貝到可執(zhí)行映像剛被拷貝到RAM空間時(shí)的系統(tǒng)內(nèi)存布局空間時(shí)的系統(tǒng)內(nèi)存布局 2、第二階段、第二階段階段階段2通常用通常用C語(yǔ)言來(lái)實(shí)現(xiàn),以便語(yǔ)言來(lái)實(shí)現(xiàn),以便實(shí)現(xiàn)更復(fù)雜的功能,也使程序有更好實(shí)現(xiàn)更復(fù)雜的功能,也使程序有更好的可讀性和可移植性。這個(gè)階段的主的可讀性和可移植性。這個(gè)階段的主要任務(wù)有要任務(wù)有5:(1)、初始化本階段要使用到的硬、初始化本階段要使用到的硬件件至少初始化一個(gè)串口,以便和終端至少初始化一個(gè)串口,以便和終端用戶進(jìn)行用戶進(jìn)行 I/O 輸出信息等。輸出信息等。(2)、檢測(cè)系統(tǒng)內(nèi)存映射、檢測(cè)系統(tǒng)內(nèi)存映射(memory map)所謂內(nèi)存映射,就是指在整個(gè)物理所謂內(nèi)存映射,就是指在

15、整個(gè)物理地址空間中有哪些地址范圍被分配用來(lái)地址空間中有哪些地址范圍被分配用來(lái)作為系統(tǒng)的作為系統(tǒng)的 RAM 單元。為后面使用單元。為后面使用RAM、運(yùn)行程序做好準(zhǔn)備。、運(yùn)行程序做好準(zhǔn)備。(3)、將、將kernel和根文件系統(tǒng)映像從和根文件系統(tǒng)映像從flash讀到讀到RAM空間空間(4)、為、為kernel設(shè)置啟動(dòng)參數(shù)設(shè)置啟動(dòng)參數(shù)這是在調(diào)用內(nèi)核之前應(yīng)該做的準(zhǔn)備工作。這是在調(diào)用內(nèi)核之前應(yīng)該做的準(zhǔn)備工作。Linux 2.4.x 以后的內(nèi)核都期望以標(biāo)記列表以后的內(nèi)核都期望以標(biāo)記列表(tagged list)的形式來(lái)傳遞啟動(dòng)參數(shù)。的形式來(lái)傳遞啟動(dòng)參數(shù)。啟動(dòng)參數(shù)標(biāo)記列表方法:以啟動(dòng)參數(shù)標(biāo)記列表方法:以ATA

16、G_CORE標(biāo)記開(kāi)始,以標(biāo)記開(kāi)始,以ATAG_NONE標(biāo)記結(jié)束。標(biāo)記結(jié)束。在嵌入式在嵌入式 Linux 系統(tǒng)中,通常需要由系統(tǒng)中,通常需要由 Boot Loader 設(shè)置的啟動(dòng)參數(shù)有:設(shè)置的啟動(dòng)參數(shù)有:ATAG_CORE、ATAG_MEM(內(nèi)存映(內(nèi)存映射)、射)、ATAG_NONE等。等。(5)、調(diào)用內(nèi)核、調(diào)用內(nèi)核Bootloader調(diào)用調(diào)用Linux kernel的方法是直的方法是直接跳轉(zhuǎn)到內(nèi)核的第一條指令處。在跳轉(zhuǎn)時(shí)必接跳轉(zhuǎn)到內(nèi)核的第一條指令處。在跳轉(zhuǎn)時(shí)必須滿足下列條件:須滿足下列條件:1)、CPU寄存器的設(shè)置:寄存器的設(shè)置:R0為為0;R1為機(jī)為機(jī)器類(lèi)型器類(lèi)型ID;R2為啟動(dòng)參數(shù),標(biāo)記

17、列表在為啟動(dòng)參數(shù),標(biāo)記列表在RAM中的起始基地址。中的起始基地址。 (機(jī)器類(lèi)型參見(jiàn)機(jī)器類(lèi)型參見(jiàn) linux/arch/arm/tools/mach-types目錄目錄)2)、CPU模式:模式: CPU必須設(shè)置為必須設(shè)置為SVC模模式,必須禁止中斷式,必須禁止中斷(IRQs和和FIQs)。3)、 MMU 和和 Cache的設(shè)置:的設(shè)置:MMU 必須必須關(guān)閉;指令關(guān)閉;指令 Cache 可以打開(kāi)也可以關(guān)閉;可以打開(kāi)也可以關(guān)閉; 數(shù)據(jù)數(shù)據(jù) Cache 必須關(guān)閉。必須關(guān)閉。6.1.4 vivi Bootloader源碼分析源碼分析vivi是韓國(guó)是韓國(guó)Mizi公司開(kāi)發(fā)的公司開(kāi)發(fā)的Bootloader,適

18、,適用于用于ARM9處理器。處理器。vivi有兩種工作模式,在啟動(dòng)時(shí)可以選擇。有兩種工作模式,在啟動(dòng)時(shí)可以選擇。在在vivi啟動(dòng)時(shí),通過(guò)串行口發(fā)出如下信息:?jiǎn)?dòng)時(shí),通過(guò)串行口發(fā)出如下信息:Press Return to start the Linux now, any other key for vivi按回車(chē)鍵啟動(dòng)按回車(chē)鍵啟動(dòng)Linux OS,按其它鍵進(jìn)入,按其它鍵進(jìn)入vivi命令接口模式,可以使用命令接口模式,可以使用vivi提供的命令提供的命令進(jìn)行一些操作。進(jìn)行一些操作。一、一、vivi源代碼目錄結(jié)構(gòu)源代碼目錄結(jié)構(gòu)vivi源代碼包含的目錄有:源代碼包含的目錄有:arch、Document

19、ation、drivers、init、include、lib、scripts、test、util等等10目錄,共目錄,共300多個(gè)文件。多個(gè)文件。各個(gè)目錄內(nèi)容如下:各個(gè)目錄內(nèi)容如下:1、arch(architecture)目錄)目錄它下面的文件為與它下面的文件為與CPU硬件相關(guān)的初始化硬件相關(guān)的初始化代碼,此目錄包含了所用代碼,此目錄包含了所用vivi支持的支持的CPU。一。一般只包含般只包含S3C2410 x的文件。的文件。2、Documentation目錄目錄其下文件為其下文件為vivi使用指南。使用指南。3、drivers目錄目錄存放的為存放的為MTD(數(shù)據(jù)存儲(chǔ)媒質(zhì))設(shè)備讀(數(shù)據(jù)存儲(chǔ)媒質(zhì)

20、)設(shè)備讀寫(xiě)控制文件和串行口操作文件,對(duì)串行口支寫(xiě)控制文件和串行口操作文件,對(duì)串行口支持持xmodem和和ymodem協(xié)議。協(xié)議。4、include目錄目錄存放所有的頭文件,包括存放所有的頭文件,包括S3C2410微處理微處理器的和器的和S3C2410開(kāi)發(fā)板的頭文件。開(kāi)發(fā)板的頭文件。5、init目錄目錄該目錄下是系統(tǒng)初始化文件該目錄下是系統(tǒng)初始化文件main.c、version.c,后者是,后者是vivi版本信息,版本信息,main.c為為vivi整個(gè)初始化的結(jié)構(gòu)。整個(gè)初始化的結(jié)構(gòu)。6、lib目錄目錄該目錄下是公共應(yīng)用及接口代碼,如時(shí)該目錄下是公共應(yīng)用及接口代碼,如時(shí)鐘功能文件鐘功能文件time

21、.c,堆棧初始化文件,堆棧初始化文件heap.c等文件。等文件。7、scripts目錄目錄該目錄存放的是系統(tǒng)配置需要的腳本文該目錄存放的是系統(tǒng)配置需要的腳本文件,如件,如menuconfig和和configue文件。文件。8、CVS目錄目錄所有的目錄下面都有一個(gè)所有的目錄下面都有一個(gè)CVS目錄,存目錄,存放的是該目錄的路徑和它的子目錄。放的是該目錄的路徑和它的子目錄。二、二、vivi源代碼文件與功能結(jié)構(gòu)源代碼文件與功能結(jié)構(gòu)vivi源代碼文件:源代碼文件:1、vivi/arch/s3c2410/head.s2、一段過(guò)度,實(shí)現(xiàn)循環(huán)調(diào)用,、一段過(guò)度,實(shí)現(xiàn)循環(huán)調(diào)用,main返回后返回后重新復(fù)位重新復(fù)位

22、LDRSP,DW_STACK_STARTMOVFP,#0MOVA2, #0BLMAINMOVPC, #FLASH_BASE3、vivi/init/main.c6.1.5 vivi Bootloader接口命令接口命令vivi有兩種工作模式,一種是有兩種工作模式,一種是 “啟動(dòng)加載啟動(dòng)加載”模式,另一種是命令行模式。利用串行口與模式,另一種是命令行模式。利用串行口與主機(jī)的連接,可以進(jìn)行命令行操作。主機(jī)的連接,可以進(jìn)行命令行操作。vivi啟動(dòng)后,通過(guò)串行口發(fā)出如下信息:?jiǎn)?dòng)后,通過(guò)串行口發(fā)出如下信息:Press Return to start the Linux now, any other ke

23、y for vivi按下除了按下除了“Enter”之外的鍵,便可進(jìn)入命之外的鍵,便可進(jìn)入命令行模式。令行模式。vivi的接口命令有的接口命令有5條。條。1、load-下載文件命令下載文件命令功能:功能:將二進(jìn)制文件下載到將二進(jìn)制文件下載到Flash或或RAM格式:格式:load | media_type:存儲(chǔ)器類(lèi)型,:存儲(chǔ)器類(lèi)型,F(xiàn)lash或或RAMpartname:分區(qū)名稱(chēng):分區(qū)名稱(chēng)addr size:下載的地址及占用空間大?。合螺d的地址及占用空間大小x|y|z:文件的傳輸協(xié)議。:文件的傳輸協(xié)議。x表示采用表示采用xmodem協(xié)議,協(xié)議,y表示采用表示采用ymodem協(xié)議,協(xié)議,z表表示采用

24、示采用zmodem協(xié)議。目前協(xié)議。目前vivi僅支持僅支持xmodem協(xié)議。協(xié)議。例例1:viviload flash kernel x表示下載壓縮的內(nèi)核映像文件表示下載壓縮的內(nèi)核映像文件zImage到到flash存儲(chǔ)器的內(nèi)核分區(qū)中,采用存儲(chǔ)器的內(nèi)核分區(qū)中,采用xmodem傳傳輸協(xié)議。輸協(xié)議。例例2:viviload flash 0 x80000 0 xc0000 x2、part-MTD分區(qū)操作命令分區(qū)操作命令操作命令:操作命令:顯示、增加、刪除、復(fù)位、顯示、增加、刪除、復(fù)位、保存保存MTD分區(qū)等。分區(qū)等。各個(gè)命令格式:各個(gè)命令格式:part show:顯示分區(qū)信息:顯示分區(qū)信息part de

25、l :刪除指定的分區(qū):刪除指定的分區(qū)part reset:恢復(fù)分區(qū)的默認(rèn)值:恢復(fù)分區(qū)的默認(rèn)值part save:在:在flash中保存分區(qū)和參數(shù)值中保存分區(qū)和參數(shù)值增加新的分區(qū)增加新的分區(qū)part add :partname:新分區(qū)名稱(chēng):新分區(qū)名稱(chēng)offset:新分區(qū)的偏移地址:新分區(qū)的偏移地址size:新分區(qū)的大?。盒路謪^(qū)的大小flag:新分區(qū)的類(lèi)型,可以是:新分區(qū)的類(lèi)型,可以是JFFS2、LOCKED、BONFS3、param-設(shè)置或查看分區(qū)參數(shù)命令設(shè)置或查看分區(qū)參數(shù)命令查看分區(qū)參數(shù):查看分區(qū)參數(shù): param show設(shè)置啟動(dòng)等待按鍵延遲:設(shè)置啟動(dòng)等待按鍵延遲:param set boo

26、t_delay n(s)設(shè)置通信初始化超時(shí):設(shè)置通信初始化超時(shí):param set xmodem_initial_timeout m (s)4、boot-引導(dǎo)內(nèi)核命令引導(dǎo)內(nèi)核命令格式:格式:boot media_type | media_type:存儲(chǔ)器類(lèi)型,:存儲(chǔ)器類(lèi)型,flash或或RAMpartname:內(nèi)核所在分區(qū)名稱(chēng):內(nèi)核所在分區(qū)名稱(chēng)addr:內(nèi)核所在器件的偏移地址:內(nèi)核所在器件的偏移地址size:內(nèi)核的大?。簝?nèi)核的大小若若boot (無(wú)參數(shù)),則從(無(wú)參數(shù)),則從kernel內(nèi)核對(duì)應(yīng)的內(nèi)核對(duì)應(yīng)的分區(qū)中(分區(qū)中(kernel)讀取內(nèi)核映像啟動(dòng)。)讀取內(nèi)核映像啟動(dòng)。例如:例如:1、vi

27、viboot nand 0 x80000內(nèi)核在內(nèi)核在nand flash中,偏移地址為中,偏移地址為0 x80000,大小為缺省值,大小為缺省值0 xc00002、viviboot nor 0 x800005、flash-flash存儲(chǔ)器管理命令存儲(chǔ)器管理命令擦除擦除flash數(shù)據(jù)格式:數(shù)據(jù)格式:flash erase | 說(shuō)明:說(shuō)明:對(duì)對(duì)flash只有擦除命令。只有擦除命令。例如:例如:flash erase 0 x80000 0 xc0000vivi接口命令接口命令命命 令令功功 能能Load下載下載flash或或RAM命令命令PartMTD分區(qū)操作命令分區(qū)操作命令param設(shè)置、查看參數(shù)

28、命令設(shè)置、查看參數(shù)命令Boot啟動(dòng)系統(tǒng)命令啟動(dòng)系統(tǒng)命令flashFlash管理命令管理命令第三講到此第三講到此6.1.6 vivi源碼的修改移植源碼的修改移植vivi的移植方法步驟:的移植方法步驟:對(duì)對(duì)vivi進(jìn)行修改移植進(jìn)行修改移植對(duì)對(duì)vivi進(jìn)行配置進(jìn)行配置對(duì)對(duì)vivi進(jìn)行編譯進(jìn)行編譯下載、運(yùn)行下載、運(yùn)行vivi一、對(duì)一、對(duì)vivi進(jìn)行修改移植進(jìn)行修改移植設(shè)設(shè)Linux系統(tǒng)的目錄結(jié)構(gòu)為系統(tǒng)的目錄結(jié)構(gòu)為設(shè)設(shè)Linux系統(tǒng)的目錄結(jié)構(gòu)為系統(tǒng)的目錄結(jié)構(gòu)為:cygwinfriendly-arm crosstool kernel vivi1、修改、修改vivi/Makefile(1)修改交叉編譯庫(kù)和頭

29、文件)修改交叉編譯庫(kù)和頭文件1)修改編譯器路徑:)修改編譯器路徑:將:將: CROSS_COMPILE=/opt/host/armv4l/bin/armv4l-unknown-linux-修改為:修改為:CROSS_COMPILE= arm-linux-gcc的路徑的路徑如:如: CROSS_COMPILE =/friendly-arm/ crosstool/arm-linux/gcc-2.95.3-glibc-2.2.3/bin/arm-linux-2)修改編譯器庫(kù)文件路徑:)修改編譯器庫(kù)文件路徑:將:將: ARM_GCC_LIBS=/opt/host/armv4l/bin/gcc-lib/

30、armv4l-unknown-linux/2.95.2修改為:修改為:ARM_GCC_LIBS=符合本機(jī)的路徑符合本機(jī)的路徑如:如:ARM_GCC_LIBS= /friendly-arm/ crosstool/arm-linux/gcc-2.95.3-glibc-2.2.3/lib/gcc-lib/arm-linux/2.95.3 3)增加交叉編譯時(shí)頭文件的搜索路徑:)增加交叉編譯時(shí)頭文件的搜索路徑: LIBC_INCLUDE_DIR=本機(jī)的本機(jī)的include的路徑的路徑如:如:LIBC_INCLUDE_DIR= /friendly-arm/ crosstool/arm-linux/gcc-

31、2.95.3-glibc-2.2.3/include(2)Linux內(nèi)核包含文件內(nèi)核包含文件 修改修改Linux頭文件所在路徑頭文件所在路徑將:將:LINUX_INCLUDE_DIR=/opt/host/armv4l/include改為:改為:LINUX_INCLUDE_DIR=符合本機(jī)的符合本機(jī)的如:如:LINUX_INCLUDE_DIR=/friendly-arm/kernel/include2、修改、修改vivi中與硬件相關(guān)的部分中與硬件相關(guān)的部分只需要修改:只需要修改:/friendly-arm/vivi/include/platform/下面的文件下面的文件smdk2410.h即可即

32、可。文件文件smdk2410.h的內(nèi)容是針對(duì)開(kāi)發(fā)板的的內(nèi)容是針對(duì)開(kāi)發(fā)板的硬件配置的,主要有:時(shí)鐘設(shè)置、存儲(chǔ)器初硬件配置的,主要有:時(shí)鐘設(shè)置、存儲(chǔ)器初始化、通用始化、通用I/O口初始化、口初始化、UART初始化、初始化、vivi初始配置等。初始配置等。根據(jù)自己的目標(biāo)板的實(shí)際情況進(jìn)行設(shè)置根據(jù)自己的目標(biāo)板的實(shí)際情況進(jìn)行設(shè)置即可。即可。 3、支持、支持Nor Flash啟動(dòng)的修改啟動(dòng)的修改(vivi/arch/s3c2410/smdk.c)(1) Nor flash分區(qū)分區(qū)對(duì)于一個(gè)嵌入式系統(tǒng),可能會(huì)采用對(duì)于一個(gè)嵌入式系統(tǒng),可能會(huì)采用Nor flash、Nand flash、SDRAM等多種介質(zhì)構(gòu)等多種

33、介質(zhì)構(gòu)成存儲(chǔ)器系統(tǒng),成存儲(chǔ)器系統(tǒng), Nor flash(如(如1、2MB)用)用于存放、運(yùn)行于存放、運(yùn)行bootloader,Nand flash用于存用于存放操作系統(tǒng)、其它系統(tǒng)軟件、應(yīng)用程序和各放操作系統(tǒng)、其它系統(tǒng)軟件、應(yīng)用程序和各種文件,種文件, SDRAM用于運(yùn)行程序和存放數(shù)據(jù)。用于運(yùn)行程序和存放數(shù)據(jù)。如果系統(tǒng)有如果系統(tǒng)有Nor flash存儲(chǔ)器(一般沒(méi)存儲(chǔ)器(一般沒(méi)有),則需要做相應(yīng)修改。有),則需要做相應(yīng)修改。修改方法:修改方法:在在vivi/arch/s3c2410/smdk.c中中的分區(qū)代碼,添加上的分區(qū)代碼,添加上Nor flash分區(qū):分區(qū):#ifdef CONFIG_S3C

34、2410_AMD_BOOTmtd_partition_t default_mtd_partitions = name:vivi,offset:0,size:0 x00020000,flag:0, name:param,offset:0 x00020000,size:0 x00010000,flag:0, name:kernel,offset:0 x00030000,size:0 x000C0000,flag:0, name:root,offset:0 x00100000,size:0 x00140000,flag:MF_BONFS;#endif(2)內(nèi)核啟動(dòng)參數(shù)設(shè)置)內(nèi)核啟動(dòng)參數(shù)設(shè)置經(jīng)過(guò)上面修

35、改,系統(tǒng)板可以從經(jīng)過(guò)上面修改,系統(tǒng)板可以從Nand flash中啟動(dòng)中啟動(dòng)Linux,也可以從,也可以從Nor flash中啟動(dòng)中啟動(dòng)Linux,另外還需要修改啟動(dòng)命令:,另外還需要修改啟動(dòng)命令:還需要修改啟動(dòng)命令:還需要修改啟動(dòng)命令:#ifdef CONFIG_S3C2410_NAND_BOOTChar Linux_cmd = noinitrd root=/dev/bon/2 init =/linuxrc console=tty1console=ttyS0;#elseChar Linux_cmd = noinitrd root=/dev/mtdblock/3init =/linuxrc co

36、nsole=tty1 console=ttyS0;式中啟動(dòng)命令:式中啟動(dòng)命令:noinitrd:不使用:不使用ramdisk;root:根文件系統(tǒng)所在的:根文件系統(tǒng)所在的MTD分區(qū)分區(qū)init:內(nèi)核運(yùn)行入口命令文件:內(nèi)核運(yùn)行入口命令文件console:內(nèi)核信息輸出控制臺(tái):內(nèi)核信息輸出控制臺(tái)ttyS0表示串行口;表示串行口;tty0表示虛擬終端表示虛擬終端LCD。說(shuō)明:說(shuō)明:關(guān)于關(guān)于Linux啟動(dòng)命令的參數(shù),可以參考啟動(dòng)命令的參數(shù),可以參考Kernel/Documentatio/下面的文件下面的文件kernel-parameters.txt。4、增加一種下載操作、增加一種下載操作load fla

37、sh j操作操作在在Nand啟動(dòng)時(shí),可以從啟動(dòng)時(shí),可以從JTAG下載程序下載程序到到SDRAM(0 x30000000),然后用),然后用“l(fā)oad flashj”來(lái)燒寫(xiě)相應(yīng)的分區(qū),并且來(lái)燒寫(xiě)相應(yīng)的分區(qū),并且可以做可以做vivi、kernel、root這這3個(gè)分區(qū)的操作。個(gè)分區(qū)的操作。其中大部分操作與使用其中大部分操作與使用X-Modem和和 Y-Modem等功能類(lèi)似等功能類(lèi)似,所以命名為所以命名為J-Modem,并特別修改以下并特別修改以下3個(gè)部分。個(gè)部分。(1)在)在 vivi/include/priv_data.h中增加宏定義中增加宏定義原來(lái)為:原來(lái)為:#define X_MODEM1#

38、define Y_MODEM2#define Z_MODEM3增加:增加:#define JTAG_D4(2)在)在 vivi/lib/load_file.c中中增加對(duì)增加對(duì)J-Modem的識(shí)別的識(shí)別原來(lái)為:原來(lái)為:modem_is(const char *mt) else if (strncmp(z, mt, 1) = 0) return Z_MODEM; else return UNKNOWN_MODEM;修改為:修改為:modem_is(const char *mt) else if (strncmp(z, mt, 1) = 0) return Z_MODEM; else if (str

39、ncmp(“J, mt, 1) = 0) return JTAG_D; else return UNKNOWN_MODEM; 說(shuō)明說(shuō)明:該修改僅提高了下載到該修改僅提高了下載到SDRAM的速度的速度二、對(duì)二、對(duì)vivi進(jìn)行配置進(jìn)行配置運(yùn)行運(yùn)行vivi配置程序配置程序menuconfig:makemenuconfig啟動(dòng)對(duì)啟動(dòng)對(duì)vivi配置的主菜單,根據(jù)自己的目配置的主菜單,根據(jù)自己的目標(biāo)系統(tǒng)逐項(xiàng)進(jìn)行設(shè)置,設(shè)置完后退出保存即標(biāo)系統(tǒng)逐項(xiàng)進(jìn)行設(shè)置,設(shè)置完后退出保存即可???。三、對(duì)三、對(duì)vivi進(jìn)行編譯進(jìn)行編譯在在vivi目錄下執(zhí)行以下命令:目錄下執(zhí)行以下命令: makecleanmake make

40、clean是清除以前編譯時(shí)生成的所有是清除以前編譯時(shí)生成的所有目標(biāo)文件和臨時(shí)文件。目標(biāo)文件和臨時(shí)文件。如果沒(méi)有錯(cuò)誤,編譯后會(huì)生成如果沒(méi)有錯(cuò)誤,編譯后會(huì)生成vivi的目標(biāo)的目標(biāo)文件文件vivi.bin。四、對(duì)四、對(duì)vivi進(jìn)行下載進(jìn)行下載利用利用JTAG口將口將vivi下載到目標(biāo)板的下載到目標(biāo)板的Nor flash空間(空間(0 x00000-0 x20000)。)。然后對(duì)目標(biāo)板加電,使然后對(duì)目標(biāo)板加電,使vivi啟動(dòng)運(yùn)行,觀啟動(dòng)運(yùn)行,觀察運(yùn)行情況。察運(yùn)行情況。6.2 Linux內(nèi)核及移植內(nèi)核及移植本節(jié)內(nèi)容本節(jié)內(nèi)容1、Linux內(nèi)核結(jié)構(gòu)內(nèi)核結(jié)構(gòu)2、Linux移植移植3、Linux編譯編譯4、Li

41、nux下載下載6.2.1 Linux內(nèi)核結(jié)構(gòu)內(nèi)核結(jié)構(gòu)一、一、Linux操作系統(tǒng)的移植性操作系統(tǒng)的移植性Linux操作系統(tǒng)具有很好的移植性操作系統(tǒng)具有很好的移植性,能夠,能夠很方便地從一個(gè)硬件平臺(tái)移植到另一個(gè)硬件很方便地從一個(gè)硬件平臺(tái)移植到另一個(gè)硬件平臺(tái)上,其根本原因是平臺(tái)上,其根本原因是Linux操作系統(tǒng)的代操作系統(tǒng)的代碼,將與硬件相關(guān)的代碼與硬件無(wú)關(guān)的代碼碼,將與硬件相關(guān)的代碼與硬件無(wú)關(guān)的代碼是分開(kāi)編寫(xiě)的。是分開(kāi)編寫(xiě)的。Linux移植所涉及的文件:移植所涉及的文件:對(duì)對(duì)Linux移植移植時(shí),只需要修改與硬件相關(guān)的代碼即可,涉時(shí),只需要修改與硬件相關(guān)的代碼即可,涉及的文件主要是各個(gè)目錄下的及的

42、文件主要是各個(gè)目錄下的makefile文件,文件,以及少數(shù)的匯編語(yǔ)言文件。以及少數(shù)的匯編語(yǔ)言文件。一、一、Linux內(nèi)核結(jié)構(gòu)內(nèi)核結(jié)構(gòu)Linux內(nèi)核有內(nèi)核有12個(gè)主目錄,個(gè)主目錄,700多個(gè)子目多個(gè)子目錄,文件總數(shù)錄,文件總數(shù)11000多個(gè),總長(zhǎng)度多個(gè),總長(zhǎng)度120多多MB。Linux內(nèi)核的主目錄為:內(nèi)核的主目錄為:arch、drivers、fs、include、init、ipc、kernel、lib、mm、net、1、arch目錄目錄arch目錄包含了與硬件體系結(jié)構(gòu)相關(guān)的內(nèi)目錄包含了與硬件體系結(jié)構(gòu)相關(guān)的內(nèi)核代碼,其下面的每一個(gè)目錄都是一種硬件核代碼,其下面的每一個(gè)目錄都是一種硬件平臺(tái),如平臺(tái),

43、如ARM和和PC機(jī)的機(jī)的i386。對(duì)于每一平。對(duì)于每一平臺(tái)都包含以下幾個(gè)目錄。臺(tái)都包含以下幾個(gè)目錄。boot:與平臺(tái)相關(guān)的啟動(dòng)內(nèi)核代碼:與平臺(tái)相關(guān)的啟動(dòng)內(nèi)核代碼kernel:與平臺(tái)相關(guān)的內(nèi)核代碼:與平臺(tái)相關(guān)的內(nèi)核代碼lib:與平臺(tái)相關(guān)的通用函數(shù):與平臺(tái)相關(guān)的通用函數(shù)mm:與平臺(tái)相關(guān)的內(nèi)存管理代碼:與平臺(tái)相關(guān)的內(nèi)存管理代碼math-emu:與平臺(tái)相關(guān)的模擬:與平臺(tái)相關(guān)的模擬FPU代碼代碼顯然,內(nèi)核移植的重點(diǎn)就是該目錄下面顯然,內(nèi)核移植的重點(diǎn)就是該目錄下面的文件。的文件。2、drivers目錄目錄該目錄下面保存的是所用設(shè)備的驅(qū)動(dòng)程該目錄下面保存的是所用設(shè)備的驅(qū)動(dòng)程序,其下的每個(gè)目錄是一種設(shè)備。序,

44、其下的每個(gè)目錄是一種設(shè)備。3、fs目錄目錄該目錄下面列出了該目錄下面列出了Linux所支持的文件系所支持的文件系統(tǒng),其下每個(gè)目錄代表一種文件系統(tǒng),文件統(tǒng),其下每個(gè)目錄代表一種文件系統(tǒng),文件系統(tǒng)代碼與平臺(tái)無(wú)關(guān)。系統(tǒng)代碼與平臺(tái)無(wú)關(guān)。4、include目錄目錄該目錄下面是編譯內(nèi)核所需要的頭文件,該目錄下面是編譯內(nèi)核所需要的頭文件,與平臺(tái)無(wú)關(guān)的部分在與平臺(tái)無(wú)關(guān)的部分在linux子目錄下面,其余子目錄下面,其余的子目錄都是與各種平臺(tái)相關(guān)的頭文件。的子目錄都是與各種平臺(tái)相關(guān)的頭文件。5、init目錄目錄其下只有兩個(gè)文件:其下只有兩個(gè)文件:main.c和和version.c,前者是核心的初始化代碼,后者是版

45、本信息前者是核心的初始化代碼,后者是版本信息6、ipc目錄目錄其文件是核心進(jìn)程的通信代碼。其文件是核心進(jìn)程的通信代碼。7、kernel目錄目錄為與平臺(tái)無(wú)關(guān)的內(nèi)核管理代碼,與平臺(tái)為與平臺(tái)無(wú)關(guān)的內(nèi)核管理代碼,與平臺(tái)相關(guān)部分在相關(guān)部分在arch/*/kernel下面。下面。8、lib目錄目錄該目錄下面的文件是與平臺(tái)無(wú)關(guān)的通用該目錄下面的文件是與平臺(tái)無(wú)關(guān)的通用函數(shù)。函數(shù)。9、mm目錄目錄該目錄下面的文件是與平臺(tái)無(wú)關(guān)的內(nèi)存該目錄下面的文件是與平臺(tái)無(wú)關(guān)的內(nèi)存管理代碼,與平臺(tái)相關(guān)部分在管理代碼,與平臺(tái)相關(guān)部分在arch/*/mm下面。下面。10、net目錄目錄是網(wǎng)絡(luò)功能代碼,其每個(gè)子目錄對(duì)應(yīng)網(wǎng)是網(wǎng)絡(luò)功能代碼

46、,其每個(gè)子目錄對(duì)應(yīng)網(wǎng)絡(luò)的一個(gè)方面。絡(luò)的一個(gè)方面。11、其它目錄、其它目錄Documentation目錄下存放的是說(shuō)明和應(yīng)目錄下存放的是說(shuō)明和應(yīng)用文檔,用文檔,scripts目錄下存放的是配置內(nèi)核腳目錄下存放的是配置內(nèi)核腳本。本。另外在每個(gè)目錄下幾乎都有一個(gè)另外在每個(gè)目錄下幾乎都有一個(gè)depend文件和文件和Makefile文件,文件,depend是被包含在是被包含在Makefile中的,編譯目標(biāo)所依賴(lài)的頭文件。中的,編譯目標(biāo)所依賴(lài)的頭文件。6.2.2 Linux移植移植對(duì)于后面的移植,假設(shè)內(nèi)核的目錄為對(duì)于后面的移植,假設(shè)內(nèi)核的目錄為/my-arm/kernel,并且設(shè)環(huán)境變量為,并且設(shè)環(huán)境變量

47、為$KERNELCODE=/my-arm/kernel。一、一、/my-arm/kernel-根目錄根目錄根目錄下只需要修改根目錄下只需要修改Makefile文件。該文文件。該文件的任務(wù)有兩個(gè):產(chǎn)生件的任務(wù)有兩個(gè):產(chǎn)生Linux內(nèi)核鏡像壓縮內(nèi)核鏡像壓縮文件文件vmlinux和內(nèi)核模塊,和內(nèi)核模塊,Makefile遞歸進(jìn)入遞歸進(jìn)入到各個(gè)子目錄中,調(diào)用子目錄中的到各個(gè)子目錄中,調(diào)用子目錄中的Makefile最終產(chǎn)生出目標(biāo)文件。最終產(chǎn)生出目標(biāo)文件。需要修改的內(nèi)容:需要修改的內(nèi)容:(1)指定目標(biāo)平臺(tái):)指定目標(biāo)平臺(tái):將:將:ARCH :=$(shell uname m|sed e s/i.86/i.3

48、86修改為:修改為: ARCH :=arm(2)指定交叉編譯器)指定交叉編譯器將:將:CROSS_COMPILE =修改為:修改為: CROSS_COMPILE = /friendly-arm/ crosstool/arm-linux/gcc-2.95.3-glibc-2.2.3/bin/arm-linux-(3)修改)修改TOPDIR將:將:TOPDIR := $(shell bin/pwd)修改為:修改為: TOPDIR := $(/my-arm/kernel)(4)修改)修改exportINSTALL_MOD_PATH將:將: INSTALL_MOD_PATH = /root修改為:修改

49、為: INSTALL_MOD_PATH = /my-arm/kernel/arch/arm/root二、二、arch/arm目錄目錄1、對(duì)、對(duì)Makefile文件的修改文件的修改ifeq($(CONFIG_ARCH_S3C2410),y)TEXTADDR=0 xC0008000MACHINE=s3c2410endifTEXTADDR決定內(nèi)核起始運(yùn)行地址決定內(nèi)核起始運(yùn)行地址,即,即image.ram應(yīng)下載的位置,其值與具體目標(biāo)應(yīng)下載的位置,其值與具體目標(biāo)板有關(guān)。板有關(guān)。0 xC0008000的含義:從地址的含義:從地址0 xC0000000開(kāi)始,共有開(kāi)始,共有32MB空間??臻g。2、對(duì)、對(duì)con

50、fig.in文件的修改文件的修改config.in是配置文件,運(yùn)行是配置文件,運(yùn)行menuconfig時(shí)出現(xiàn)的菜時(shí)出現(xiàn)的菜單就是單就是config.in的內(nèi)容。因?yàn)榈膬?nèi)容。因?yàn)?.4.18內(nèi)核沒(méi)有中沒(méi)有內(nèi)核沒(méi)有中沒(méi)有S3C2410 x處理器的信息,所以需要加入相關(guān)信息。處理器的信息,所以需要加入相關(guān)信息。(1)添加)添加CONFIG_ARCH_S3C2410子選項(xiàng)子選項(xiàng)修改后為:修改后為:if“$CONFIG_ARCH_S3C2410”=“y”;thencomment S3C2410 Implementationdep_bool SMDK (MERI TECH BOARD)CONFIG_S3C

51、2410_SMCK $CONFIG_ARCH_S3C2410fi(2)其它選項(xiàng))其它選項(xiàng)在在:if“$CONFIG_FOOTBRIDGE_HOST”=“y” o“$CONFIG_ARCH_SA1100”=“y”; then中間添加:中間添加:“$CONFIG_ARCH_S3C410”=“y” o 三、三、arch/arm/boot目錄目錄1、Makefile文件需要考慮修改的內(nèi)容文件需要考慮修改的內(nèi)容ifeq($(CONFIG_ARCH_S3C2410),y)ZTEXTADDR=0 x30008000ZRELADDR=0 x30208000endifZRELADDR為內(nèi)核解壓后輸出的地址。為內(nèi)核解壓后輸出的地址。ZTEXTADDR為為Boorloader執(zhí)行的起始地址,執(zhí)行的起始地址,若直接啟動(dòng)執(zhí)行,則設(shè)為若直接啟動(dòng)執(zhí)行,則設(shè)為0,否則為裝入,否則為裝入RAM中的開(kāi)始地址。中的開(kāi)始地址。這兩個(gè)地址由具體的目標(biāo)板決定。這兩個(gè)地址由具體的目標(biāo)板決定。隨目標(biāo)變化隨目標(biāo)變化隨目標(biāo)板變化隨目標(biāo)板變化2、compressed/Makefile修改后:修改后: ifeq($(CONFIG_ARCH_S3C2410),y)OBJS+= head-s3c

溫馨提示

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