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

正文內(nèi)容

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

2025-02-12 06:15 本頁面
 

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