freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[工學(xué)]02--基于arm9的linux26內(nèi)核移植(編輯修改稿)

2025-02-12 06:15 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 進(jìn)行掛接。首先得進(jìn)入minicon回車,然后按開發(fā)板的重啟鍵進(jìn)入minicon。 ifconfig eth0 mount –t nfs –o nolock :/nfs /mnt這樣就可以通過/mnt目錄來訪問主機(jī)上的/nfs目錄了。本章首先介紹了嵌入式Linux系統(tǒng)的體系結(jié)構(gòu),其軟件系統(tǒng)部分包據(jù)系統(tǒng)層、支撐層、應(yīng)用層,這些是本文將要實(shí)現(xiàn)的具體內(nèi)容,以下各章順序也是按該體系結(jié)構(gòu)從底層到上層安排的。接著描述了S3C2410A微處理器的結(jié)構(gòu),介紹了其內(nèi)部的典型控制器,還簡(jiǎn)要介紹了硬件系統(tǒng)結(jié)構(gòu),這些內(nèi)容和后面設(shè)備驅(qū)動(dòng)的移植有關(guān)。最后,詳述了嵌入式系統(tǒng)軟件開發(fā)環(huán)境的建立方法、主機(jī)控制臺(tái)的配置及網(wǎng)絡(luò)服務(wù)的配置,以供后面開發(fā)使用。3 嵌入式Linux的引導(dǎo)BootLoader程序 BootLoader概述[1][11] BootLoader簡(jiǎn)介BootLoader是系統(tǒng)加電后運(yùn)行的第一段代碼。在一個(gè)基于ARM的嵌入式系統(tǒng)中,系統(tǒng)在上電或復(fù)位時(shí)通常都從地址0x0000000O處開始執(zhí)行,而在這個(gè)地址處安排的就是系統(tǒng)的BootLoader。一般它只在系統(tǒng)啟動(dòng)時(shí)運(yùn)行非常短的時(shí)間,但對(duì)于嵌入式系統(tǒng)來說,這是一個(gè)非常重要的系統(tǒng)組成部分。BootLoader主要用于初始化硬件設(shè)備,建立內(nèi)存空間的映射圖,將操作系統(tǒng)內(nèi)核復(fù)制到內(nèi)存中并跳轉(zhuǎn)到內(nèi)核入口。下表列出了幾種比較流行并且支持Linux操作系統(tǒng)的BootLoader并對(duì)它們進(jìn)行了簡(jiǎn)單的比較。表31顯示開放源碼的支持Linux的BootLoaderBootLoader基本描述LiloX86平臺(tái)上Linux的BootLoaderGrubGNU項(xiàng)目中Lilo的升級(jí)品RedBooteCos的BootLoaderBlobLart項(xiàng)目中的BootloaderUBoot通用BootLoader,功能最全UBoot是德國(guó)DENX小組開發(fā)的用于多種嵌入式CPU的BootLoader程序,是在ppcBoot以及ARMboot的基礎(chǔ)上發(fā)展而來的,UBoot不僅支持嵌入式Linux系統(tǒng)的引導(dǎo),它還支持NetBSD、VxWorkS、QNX、RTEMS、ARTOS、LynxOS等嵌入式操作系統(tǒng)。而且支持PowerPC、MIPS、x8ARM、NIOS、XScale等諸多常用系列的處理器。它的功能也比較強(qiáng)大,支持tftp、nfs等多種網(wǎng)絡(luò)協(xié)議,所以本論文將對(duì)UBoot進(jìn)行移植及使用。 BootLoader的啟動(dòng)模式及其應(yīng)用BootLoader一般都要有兩種啟動(dòng)模式:Flash啟動(dòng)模式和下載模式。Flash啟動(dòng)模式:這種模式下,先要將內(nèi)核映像和根文件系統(tǒng)寫入Flash,設(shè)備啟動(dòng)時(shí)BootLoader將Flash中的內(nèi)核及根文件系統(tǒng)映像讀入SDRAM指定位置并跳轉(zhuǎn)到內(nèi)核入口執(zhí)行內(nèi)核,整個(gè)過程沒有用戶的介入。下載模式:這種模式下,F(xiàn)lash中可以沒有內(nèi)核和根文件系統(tǒng)。設(shè)備啟動(dòng)時(shí)BootLoader通過串口或網(wǎng)絡(luò)等通信方式從主機(jī)下載內(nèi)核映像和根文件系統(tǒng)映像等。這種方式可以有以下用途:1)做為安裝或更新手段。通過BootLoader將要寫入Flash的文件下載到內(nèi)存,然后通過相應(yīng)的命令,將其寫到Flash指定的地址,在第一次安裝內(nèi)核與根文件系統(tǒng)時(shí)被使用,以后系統(tǒng)更新時(shí)也會(huì)使用BootLoader的這種工作模式。2)做為調(diào)試手段。將內(nèi)核和根文件下載到內(nèi)存指定位置,并配置好傳遞給內(nèi)核的參數(shù),可用BootLoader提供的命令直接運(yùn)行內(nèi)核,此種方式,可以避免將內(nèi)核和根文件頻繁寫入Flash。3)還可以直接以下載模式工作。以這種方式工作,內(nèi)核或文件系統(tǒng)可存儲(chǔ)在遠(yuǎn)程主機(jī)上,系統(tǒng)不需配置較大的存儲(chǔ)介質(zhì),和無(wú)盤工作站有點(diǎn)類似。在系統(tǒng)移植時(shí)采用如圖所示的工作模式調(diào)試內(nèi)核和文件系統(tǒng)。圖31為BootLoader的下載模式的應(yīng)用 NAND Flash和NOR Flash的區(qū)別NOR Flash的特點(diǎn)是芯片內(nèi)執(zhí)行(XIP,eXecute In Place),這樣應(yīng)用程序可以直接在Flash閃存內(nèi)運(yùn)行,不必再把代碼讀到系統(tǒng)RAM中。NOR的傳輸效率很高,在1M4M的小容量時(shí)具有很高的成本效益,但是很低的寫入和擦除速度大大影響了它的性能。NAND FLASH結(jié)構(gòu)能提供極高的單元密度,可以達(dá)到高存儲(chǔ)密度,并且寫入和擦除速度也很快。應(yīng)用NAND的困難在于NAND Flash的管理需要特殊的系統(tǒng)接口。擦除NOR器件時(shí)是以64KB128KB的塊進(jìn)行的,執(zhí)行一個(gè)寫入/擦除操作的時(shí)間為5s,與此相反,擦除NAND器件是以8KB~32KB的塊進(jìn)行的,執(zhí)行相同的操作只需要4ms。NOR Flash帶有SRAM接口,有足夠的地址引腳來尋址,可以很容易的存取其內(nèi)部的每一個(gè)字節(jié)。NAND器件使用復(fù)雜的I/0口來串行地存取數(shù)據(jù),各個(gè)產(chǎn)品或廠商的方法可能不同。用8個(gè)引腳來傳送控制、地址和數(shù)據(jù)信息。由以上的區(qū)別可以看出, NOR Flash適合于存儲(chǔ)程序代碼,而 NAND Flash適合于存儲(chǔ)大量數(shù)據(jù)。但同樣容量的存儲(chǔ)芯片, NAND Flash的價(jià)格是NOR Flash的1/5。又因?yàn)镾3C241OA芯片支持從 NAND Flash直接啟動(dòng),所以很多開發(fā)板上 NOR Flash容量很小甚至沒有,也有的開發(fā)板只有 NOR Flash而沒有NAND Flash。UBoot的目錄結(jié)構(gòu)下面的表格列出UBoot下的子目錄及其內(nèi)容,移植過程中需要修改其中的部分文件。表32 UBoot的目錄結(jié)構(gòu)及內(nèi)容board該目錄包含一些對(duì)特定板子的初始化和操作代碼cpu該目錄下是針對(duì)特定處理器的初始化和操作代碼,mon此目錄存放獨(dú)立于處理器體系結(jié)構(gòu)的通用代碼,如內(nèi)存大小探測(cè)與故障檢測(cè),的的主函數(shù),負(fù)責(zé)接受用戶輸入并送給相應(yīng)的處理函數(shù)執(zhí)行 driver此目錄下放的是各種驅(qū)動(dòng),如以太網(wǎng)驅(qū)動(dòng)、LCD屏驅(qū)動(dòng)docUBoot的說明文檔examples目錄下放的是可在UBoot下運(yùn)行的例子,相當(dāng)于Linux中應(yīng)用程序fs目錄下文件系統(tǒng)include目錄下存放各種頭文件和配置文件lib處理器體系相關(guān)的文件,如lib/arm目錄就包含ARM體系結(jié)構(gòu)相關(guān)的文件net與網(wǎng)絡(luò)功能相關(guān)的文件目錄,如bootp、nts、tftppost上電自檢文件目錄RtcRTC驅(qū)動(dòng)程序tools目錄下的代碼都是可供使用的“工具”。用于創(chuàng)建UBoot的bin鏡像文件。因?yàn)槭窃谒拗鳈C(jī)上跑的,需使用gcc編譯大多數(shù)BootLoader都分為stagel和Stage2兩部分,UBoot也不例外。依賴于CPU體系結(jié)構(gòu)的代碼通常放在stagel并用匯編語(yǔ)言來實(shí)現(xiàn),而Stage2則通常用C語(yǔ)言來實(shí)現(xiàn),這樣可以實(shí)現(xiàn)復(fù)雜的功能,而且有更好的可讀性和移植性。Stage1功能分析,UBoot是從cpu/ARM920t /,這個(gè)文件的任務(wù)是設(shè)置處理器狀態(tài)、初始化中斷和內(nèi)存時(shí)序等,并確定是否需要對(duì)整個(gè)UBoot代碼重定位,最終從Flash中跳轉(zhuǎn)到定位好的內(nèi)存地址執(zhí)行。其主要代碼功能如下。1)定義入口。由于一個(gè)可執(zhí)行的uImage必須有一個(gè)入口點(diǎn),并且只能有一個(gè)全局入口,通常這個(gè)入口放在Flash的0x00000000地址,因此,必須通知編譯器以使其知道這個(gè)入口,該工作可通過修改連接器腳本來完成。2)設(shè)置異常向量 (Exception vector)。3)設(shè)置CPU的速度、時(shí)鐘頻率及中斷控制寄存器。4)初始化內(nèi)存控制器。5)將Flash中的程序復(fù)制到RAM中。6)初始化堆棧。7)轉(zhuǎn)到RAM中執(zhí)行。Stage2功能分析libarm/,也是整個(gè)啟動(dòng)代碼中C語(yǔ)言的主函數(shù),同時(shí)還是整個(gè)UBoot的主函數(shù),該函數(shù)主要完成如下操作:1)調(diào)用一系列的初始化函數(shù)。cpu_init()。 //片級(jí)初始化代碼board_init()。 //板級(jí)初始化相關(guān)代碼interrupt_init()。 //中斷初始化env_inito。 //事件初始化init_baudrate()。 //初始化波特率Serial_init()。 //串口初始化2)初始化Flash設(shè)備。初始化Flash是指提供Flash的各bank的情況,是否擦寫,是否上鎖等信息,為以后Flash相關(guān)命令使用。3)初始化系統(tǒng)內(nèi)存分配函數(shù)。4)如果目標(biāo)系統(tǒng)有NAND設(shè)備,則初始化NAND設(shè)備。5)如果目標(biāo)系統(tǒng)有顯示設(shè)備,則初始化該類設(shè)備6)初始化相關(guān)網(wǎng)絡(luò)設(shè)備,填寫IP、MAC地址等。7)進(jìn)入命令循環(huán),接受用戶從串口輸入的命令,然后進(jìn)行相應(yīng)的工作。 Flash啟動(dòng)的研究實(shí)現(xiàn)從NOR Flash啟動(dòng)UBoot的基本原理如果S3C2410A被配置成從NOR Flash啟動(dòng),在S3C241OA上電后,NOR FLASH會(huì)執(zhí)行UBoot啟動(dòng)。具體實(shí)現(xiàn)。,并且對(duì)一些開發(fā)板己經(jīng)有了板級(jí)支持,如smdk241O開發(fā)板,但由于嵌入式硬件平臺(tái)種類繁多,嵌入式產(chǎn)品層出不窮,UBoot無(wú)法支持新的嵌入式硬件平臺(tái)。因此在新的硬件平臺(tái)上移植UBoot的難點(diǎn)在于在UBoot源碼中編寫對(duì)硬件平臺(tái)的板級(jí)支持,使硬件平臺(tái)上的FLASH、SRAM、串口控制芯片、網(wǎng)絡(luò)控制芯片以及其他芯片可以正常工作。研究中使用的開發(fā)板和smdk2410開發(fā)板相近,所以這里直接在smdk2410目錄上修改。移植UBoot到開發(fā)板上只需要修改和硬件相關(guān)的代碼即可。主要修改的文件有:Makefile文件、(),,以及cpu目錄下的串口驅(qū)動(dòng)文件。具體修改如下:1)cpu/,修改relocate代碼段,初始化NAND Flash控制器,并將UBoot自身代碼復(fù)制到內(nèi)存指定地址。2)編寫 ./include/configs/,該文件主要設(shè)置目標(biāo)板的硬件配置,包括設(shè)置一些關(guān)鍵寄存器的值,設(shè)置FLASH及RAM的起始地址以及片選,設(shè)置串口波特率等。本文件還包含了一些定制UBoot的配置信息,包括啟動(dòng)等待時(shí)間,是否自動(dòng)執(zhí)行啟動(dòng)命令,UBoot提示符以及UBoot所支持的用戶交互命令等。3)編寫./board/smdk24l0/,此文件的主要作用是完成板卡的檢測(cè)以及SDRAM的初始化和SDRAM容量大小的檢測(cè)。define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */ define PHYS_SDRAM_1 0x30000000 /* SDRAM Bank 1 */ define PHYS_SDRAM_1_SIZE 0x04000000 /* 64MB */圖32 4)增加對(duì)NAND Flash操作的相關(guān)文件:,這個(gè)文件在原來的UBoot里面沒有需要自己加進(jìn)去,本書編譯的UBoot源代碼是根據(jù)《嵌入式應(yīng)用開發(fā)完全手冊(cè)》278頁(yè)的代碼進(jìn)行寫入的,將寫入的C代碼放到UBoot下面/cpu/arm920t/s3c24x0下面。主要執(zhí)行對(duì)Nand Flash的擦除、寫入操作。5)Makefile文件。UBoot的Makefile文件包括了UBoot所支持的目標(biāo)板列表,若定義了新的目標(biāo)板則要加進(jìn)去。6)修改支持網(wǎng)卡驅(qū)動(dòng)(可以選擇支持多種網(wǎng)卡驅(qū)動(dòng))。執(zhí)行 vim include/configs/圖34 配置網(wǎng)卡驅(qū)動(dòng) 網(wǎng)卡CS8900的訪問基地址是0x19000000,之所以
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1