chapter 5 boot loader_第1頁
chapter 5 boot loader_第2頁
chapter 5 boot loader_第3頁
chapter 5 boot loader_第4頁
chapter 5 boot loader_第5頁
已閱讀5頁,還剩78頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Boot Loader引導加載程序1 主要內(nèi)容本章從以下四個方面來討論嵌入式系統(tǒng)的 Boot Loader,包括:Boot Loader 的概念Boot Loader 的主要任務Boot Loader 的框架結(jié)構(gòu)Boot Loader 的安裝局部開源的boot loader2嵌入式Linux的軟件層次在專用的嵌入式板子上運行 GNU/Linux 系統(tǒng)已變得越來越流行。一個嵌入式 Linux 系統(tǒng)從軟件的角度看通常可以分為四個層次:引導加載程序。包括固化在固件(firmware)中的 boot 代碼(可選)和 Boot Loader 兩大局部Linux內(nèi)核。特定于嵌入式板子的定制內(nèi)核及內(nèi)核的啟動

2、參數(shù)3嵌入式Linux的軟件層次(contd)文件系統(tǒng)。包括根文件系統(tǒng)和建立于 Flash 內(nèi)存設備之上的文件系統(tǒng)通常用RAM-Disk來作為根文件系統(tǒng)用戶應用程序。特定于用戶的應用程序4嵌入式GUI有時在用戶應用程序和內(nèi)核層之間可能還會包括一個嵌入式圖形用戶界面(GUI)。常用的嵌入式 GUI 有:MicroWindows 和 MiniGUI等。 5引導加載程序引導加載程序是系統(tǒng)加電后運行的第一段軟件代碼例如PC 機的引導加載程序,包括BIOS(其本質(zhì)就是一段固件程序)位于硬盤 MBR 中的 OS Boot Loader比方LILO、GRUB 等。BIOS的主要任務是進行硬件檢測和資源分配將

3、MBR中的OS Boot Loader讀到系統(tǒng)的 RAM 中將控制權(quán)交給 OS Boot LoaderBoot Loader 的主要運行任務是將內(nèi)核映象從硬盤上讀到 RAM 中跳轉(zhuǎn)到內(nèi)核的入口點去運行,也即啟動操作系統(tǒng)。 6引導加載程序(contd)在嵌入式系統(tǒng)中通常并沒有像 BIOS 那樣的固件程序注:有的嵌入式 CPU 也會內(nèi)嵌一段短小的啟動程序整個系統(tǒng)的加載啟動任務完全由 Boot Loader 來完成比方在一個基于 ARM7TDMI core 的嵌入式系統(tǒng)中,系統(tǒng)在上電或復位時通常都從地址 0 x00000000 處開始執(zhí)行,而在這個地址處安排的通常就是系統(tǒng)的 Boot Loader

4、程序。7Boot Loader 的概念Boot Loader 是在操作系統(tǒng)內(nèi)核運行之前運行的第一段小程序。初始化硬件設備建立內(nèi)存空間的映射圖將系統(tǒng)的軟硬件環(huán)境帶到一個適宜的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準備好正確的環(huán)境。 加載操作系統(tǒng)內(nèi)核映象到RAM中,并將系統(tǒng)的控制權(quán)傳遞給它例如:Linux8通用的Boot Loader在嵌入式世界里建立一個通用的 Boot Loader 幾乎是不可能的Boot Loader 對硬件的依賴性非常強,特別是在嵌入式系統(tǒng)世界中盡管如此,仍可對 Boot Loader 歸納出一些通用的概念,以指導用戶特定的 Boot Loader 設計與實現(xiàn)。 9支持的 CPU

5、 和嵌入式板Boot Loader依賴于 CPU 的體系結(jié)構(gòu)不同的CPU體系結(jié)構(gòu)都有不同的Boot Loader有些 Boot Loader 也支持多種CPU體系結(jié)構(gòu)例如U-Boot同時支持ARM和MIPS體系結(jié)構(gòu)具體的嵌入式板級設備的配置對于兩塊不同的嵌入式板,即使它們基于同一種 CPU,要想讓運行在一塊板子上的 Boot Loader也能運行在另一塊板子上,通常也都需要修改 Boot Loader源程序 10Boot Loader 的安裝媒介 系統(tǒng)加電或復位后,所有的 CPU 通常都從某個由 CPU 制造商預先安排的地址上取指令。比方,基于 ARM7TDMI core 的 CPU 在復位時

6、通常都從地址 0 x00000000 取它的第一條指令。基于 CPU 構(gòu)建的嵌入式系統(tǒng)通常都有某種類型的固態(tài)存儲設備被映射到這個預先安排的地址上。比方:ROM、EEPROM 或 FLASH 等因此在系統(tǒng)加電后,CPU 將首先執(zhí)行 Boot Loader 程序。11固態(tài)存儲設備的典型空間分配結(jié)構(gòu)圖一個同時裝有 Boot Loader、內(nèi)核的啟動參數(shù)、內(nèi)核映像和根文件系統(tǒng)映像的固態(tài)存儲設備的典型空間分配結(jié)構(gòu)圖 KernelRoot BootloaderBoot parameters12Boot Loader 的安裝 燒寫boot loader程序一般通過jtag燒寫需要jtag連接器和PC端的燒寫

7、程序13控制 Boot Loader 的設備或機制 主機和目標機之間一般通過串口建立連接Boot Loader 軟件在執(zhí)行時通常會通過串口來進行 I/O,比方輸出打印信息到串口從串口讀取用戶控制字符等。最常用的串口通信軟件Linux:minicomWindows:附件中的超級終端14Boot Loader 的啟動過程Boot Loader的啟動過程可以是單階段(Single Stage)或一些只需完成很簡單功能的boot loader可能是單階段的多階段(Multi-Stage) 通常多階段的 Boot Loader 能提供更為復雜的功能,以及更好的可移植性 從固態(tài)存儲設備上啟動的 Boot

8、Loader 大多都是 2 階段的啟動過程,也即啟動過程可以分為 stage1 和 stage2 兩局部 15Boot Loader 的操作模式大多數(shù) Boot Loader 包含兩種不同的操作模式啟動加載(Boot loading)模式和下載(Downloading)模式這種區(qū)別僅對于開發(fā)人員才有意義從最終用戶的角度看,Boot Loader 的作用就是加載操作系統(tǒng),并不存在上述兩種模式的區(qū)別16 啟動加載模式也稱為自主(Autonomous)模式Boot Loader從目標機上的某個固態(tài)存儲設備上將操作系統(tǒng)加載到 RAM 中運行,整個過程并沒有用戶的介入。這種模式是 Boot Loader

9、 的正常工作模式在嵌入式產(chǎn)品發(fā)布時,Boot Loader必須工作在該模式下17下載模式目標機的 Boot Loader通過串口或網(wǎng)絡等通信手段從主機(Host)下載文件比方內(nèi)核映像和根文件系統(tǒng)映像Hosttarget ram target FLASH 該模式的使用時機通常在第一次安裝內(nèi)核與根文件系統(tǒng)時被使用也用于此后的系統(tǒng)更新工作于該模式下的 Boot Loader 通常都會向它的終端用戶提供一個簡單的命令行接口18Boot Loader 的操作模式(contd)一些功能強大的 Boot Loader 通常同時支持這兩種工作模式如Blob和U-Boot允許用戶在這兩種工作模式之間進行切換比方

10、,Blob 在啟動時處于正常的啟動加載模式,但是它會延時 10 秒等待終端用戶按下任意鍵而將 blob 切換到下載模式。如果在 10 秒內(nèi)沒有用戶按鍵,則 blob 繼續(xù)啟動 Linux 內(nèi)核。 19與boot loader兩種模式相關(guān)的問題uClinux包編譯好后,可根據(jù)需要編譯出各種鏡像文件也就是按照板子內(nèi)存預定位置 生成的二進制映象,一般是內(nèi)核和文件系統(tǒng)的復合體 常見有image.ram(常稱為ram版內(nèi)核)和image.rom(常稱為rom版內(nèi)核)通過在make時指定的不同編譯選項生成20ram版內(nèi)核一般不壓縮,通過bootloader加載到目標板內(nèi)存的指定位置,然后可用bootloa

11、der跳轉(zhuǎn)過去就把uclinux引導啟動了bootloaderram版內(nèi)核內(nèi)核/驅(qū)動相關(guān)調(diào)試期間常用方式 21rom版內(nèi)核不嚴格的理解可以說是把bootloaderram版燒寫到flash內(nèi)上電或reset后首先執(zhí)行bootloader初始化硬件功能,然后把壓縮的內(nèi)核映象解壓釋放到sdram指定地址,接著自動引導內(nèi)核,啟動uclinux 調(diào)試應用軟件常用rom版鏡像。22BootLoader 與主機之間進行文件傳輸所用的通信設備及協(xié)議最常見通信設備是串口傳輸協(xié)議通常是xmodem、ymodem、zmodem之一。但串口傳輸?shù)乃俣扔邢薷玫倪x擇是以太網(wǎng)使用TFTP 協(xié)議 主機方必須有一個軟件提供

12、 TFTP 效勞23Boot Loader的主要任務系統(tǒng)假設:內(nèi)核映像與根文件系統(tǒng)映像都被加載到 RAM 中運行。盡管在嵌入式系統(tǒng)中它們也可直接運行在 ROM 或 Flash這樣的固態(tài)存儲設備中。但這種做法無疑是以運行速度的犧牲為代價的。 從操作系統(tǒng)的角度看,Boot Loader 的總目標就是正確地調(diào)用內(nèi)核來執(zhí)行。 24Boot Loader的典型結(jié)構(gòu)框架由于 Boot Loader 的實現(xiàn)依賴于 CPU 體系結(jié)構(gòu),大多數(shù) Boot Loader 都分為 stage1 和 stage2 兩大局部Stage1依賴于 CPU 體系結(jié)構(gòu),如設備初始化代碼通常用匯編語言實現(xiàn),短小精悍Stage2通常

13、用C語言可以實現(xiàn)復雜功能代碼具有較好的可讀性和可移植性 25Boot Loader的stage1Stage1直接運行在固態(tài)存儲設備上,通常包括以下步驟 硬件設備初始化為加載 Boot Loader的stage2準備RAM空間拷貝 Boot Loader的stage2到RAM 空間中 設置好堆棧跳轉(zhuǎn)到 stage2 的 C 入口點 26Stage1:硬件初始化這是 Boot Loader 一開始就執(zhí)行的操作目的:為 stage2及kernel的執(zhí)行準備好根本硬件環(huán)境通常包括屏蔽所有的中斷為中斷提供效勞通常是 OS或設備驅(qū)動程序的責任,在 Boot Loader階段不必響應任何中斷中斷屏蔽可以通過

14、寫 CPU 的中斷屏蔽存放器或狀態(tài)存放器來完成比方 ARM 的 CPSR 存放器27Stage1:硬件初始化(contd)設置 CPU 的速度和時鐘頻率 RAM 初始化包括正確地設置系統(tǒng)中內(nèi)存控制器的功能存放器以及各CPU外的內(nèi)存(Memory Bank)的控制存放器等。 初始化 LED典型地,通過 GPIO 來驅(qū)動 LED,其目的是說明系統(tǒng)的狀態(tài)是 OK 還是 Error。假設板子上無LED,也可通過初始化UART向串口打印Boot Loader的 Logo字符信息來完成這一點。 關(guān)閉 CPU 內(nèi)部指令數(shù)據(jù) cache 28Stage1:為stage2 準備 RAM 空間為獲得更快的執(zhí)行速度

15、,通常stage2被加載到 RAM 中執(zhí)行因此必須為加載 stage2 準備好一段可用的 RAM 空間 空間大小,應考慮stage2 可執(zhí)行映象的大小+堆??臻g因為stage2 通常是 C 語言代碼此外,最好對齊到memory page大小(通常是 4KB)一般而言1MB已足夠29Stage1:為stage2 準備 RAM 空間具體的地址范圍可以任意安排比方 blob 將它的 stage2 可執(zhí)行映像安排系統(tǒng)的RAM中0 xc0200000開始的1M 空間內(nèi)值得推薦的是可以將 stage2 安排到整個RAM空間的最頂1MB 也即(RamEnd-1MB)開始處假設空間大小:stage2_size

16、(字節(jié))起始和終止地址分別為:stage2_start 和 stage2_end(均與4 字節(jié)對齊)則有:stage2_endstage2_startstage2_size 30Stage1:為stage2準備RAM空間必須確保所安排的地址范圍確實為可讀寫的 RAM 空間,即必須進行有效性測試Blob的內(nèi)存有效性測試方法:記為test_mempage:以內(nèi)存頁為被測單位,測試每個頁面頭兩個字是否可讀寫31test_mempage1 保存被測頁面頭兩個字的內(nèi)容。 2 向這兩個字中寫入任意的數(shù)字。比方:向第一個字寫入 0 x55,第 2 個字寫入 0 xaa。 3 立即將這兩個字的內(nèi)容讀回。應當與

17、寫入的內(nèi)容一致,否則此頁面地址范圍不是一段有效的 RAM 空間 4 再次向這兩個字中寫入任意的數(shù)字。比方:向第一個字寫入 0 xaa,第 2 個字中寫入 0 x55。 5 立即將這兩個字的內(nèi)容讀回。判斷依據(jù)同36 恢復這兩個字的原始內(nèi)容。32Stage1:為stage2準備RAM空間測試結(jié)束后,為了得到一段干凈的 RAM 空間范圍,可以將所安排的 RAM 空間范圍進行清零操作。 33Stage1:拷貝 stage2 到 RAM 中 拷貝時要確定:Stage2的可執(zhí)行映象在固態(tài)存儲設備的存放起始地址和終止地址RAM 空間的起始地址34Stage1:設置堆棧指針 sp對C 語言編寫的程序應當準備運

18、行堆棧通常設置在上述1MB RAM 空間的最頂端sp=(stage2_end-4)注:堆棧是向下生長的此外,在設置堆棧指針前,也可關(guān)閉 led 燈,以提示用戶即將跳轉(zhuǎn)到 stage2。 35系統(tǒng)的物理內(nèi)存布局經(jīng)過上述步驟后,系統(tǒng)的物理內(nèi)存布局應該如以下圖所示 36Stage1:跳轉(zhuǎn)到 stage2 的 C 入口點 在上述一切都就緒后,就可以跳轉(zhuǎn)到 Boot Loader 的 stage2 去執(zhí)行了。比方,在 ARM 系統(tǒng)中,這可以通過修改 PC 存放器為適宜的地址來實現(xiàn) 37關(guān)于C入口點的疑惑stage2 的代碼通常用 C 語言來實現(xiàn),以便于實現(xiàn)更復雜的功能和取得更好的代碼可讀性和可移植性。但

19、是與普通 C 語言應用程序不同的是,在編譯和鏈接 boot loader 這樣的程序時,不能使用 glibc 庫中的任何支持函數(shù)。其原因是顯而易見的。?那么從哪里跳轉(zhuǎn)進 main() 函數(shù)呢?38直接使用main函數(shù)的起始地址最直接的想法就是直接把 main() 函數(shù)的起始地址作為整個 stage2 執(zhí)行映像的入口點?無法通過main() 函數(shù)傳遞函數(shù)參數(shù);無法處理 main() 函數(shù)返回的情況。39trampoline(彈簧床)的概念一種更為巧妙的方法是利用 trampoline(彈簧床)的概念。用匯編語言寫一段trampoline 小程序,并將它來作為 stage2 可執(zhí)行映象的執(zhí)行入口點

20、。在 trampoline中用 CPU 跳轉(zhuǎn)指令跳入 main() 函數(shù)中去執(zhí)行;當 main() 函數(shù)返回時,CPU 執(zhí)行路徑顯然再次回到trampoline 程序。簡而言之:用這段 trampoline 小程序作為 main() 函數(shù)的外部包裹(external wrapper)。 40一個簡單的 trampoline 程序例子(來自blob bootloader): .text.globl _trampoline _trampoline: blmain/* if main ever returns we just call it again */b_trampoline 可以看出,當 m

21、ain() 函數(shù)返回后,我們又用一條跳轉(zhuǎn)指令重新執(zhí)行 trampoline 程序當然也就重新執(zhí)行 main() 函數(shù),這也就是 trampoline(彈簧床)一詞的意思所在。 41Boot Loader的stage2通常包括以下步驟初始化本階段要使用到的硬件設備檢測系統(tǒng)內(nèi)存映射(memory map)將 kernel 映像和根文件系統(tǒng)映像從 flash 上讀到 RAM 空間中為內(nèi)核設置啟動參數(shù)調(diào)用內(nèi)核42Stage2:初始化要用的硬件設備這通常包括:初始化至少一個串口,以便和終端用戶進行 I/O 輸出信息;初始化計時器等。 在初始化這些設備之前,也可重新把 LED 燈點亮,以說明已進入 mai

22、n() 函數(shù)執(zhí)行設備初始化完成后,可以輸出一些打印信息,程序名字字符串、版本號等。43Stage2:檢測系統(tǒng)內(nèi)存映射所謂內(nèi)存映射就是指在整個 4GB 物理地址空間中有哪些地址范圍被分配用來尋址系統(tǒng)的 RAM 單元。比方,SA-1100 CPU 中,從 0 xC000,0000 開始的 512M 被用作系統(tǒng)的 RAM 地址空間Samsung S3C44B0X CPU 中,從 0 x0c00,0000 到 0 x1000,0000 間的 64M 被用作系統(tǒng)的 RAM 地址空間44CPU預留的地址空間 VS. 實際使用的地址空間雖然 CPU 通常預留出一大段足夠的地址空間給系統(tǒng) RAM,但是在搭建具

23、體的嵌入式系統(tǒng)時卻不一定會實現(xiàn) CPU 預留的全部 RAM 地址空間。也即具體的嵌入式系統(tǒng)往往只把 CPU 預留的全部 RAM 地址空間中的一局部映射到 RAM 單元上,而讓剩下的那局部預留 RAM 地址空間處于未使用狀態(tài)。 45因此 Boot Loader 的 stage2 必須在它想干點什么 (比方,將存儲在 flash 上的內(nèi)核映像讀到 RAM 空間中) 之前檢測整個系統(tǒng)的內(nèi)存映射情況也即它必須知道 CPU 預留的全部 RAM 地址空間中的哪些被真正映射到 RAM 地址單元,哪些是處于 unused 狀態(tài)的。 46內(nèi)存映射的描述如下數(shù)據(jù)結(jié)構(gòu)用來描述 RAM 地址空間中的一段連續(xù)的地址范圍

24、:type struct memory_area_structu32 start;/內(nèi)存區(qū)域的起始地址u32 size;/內(nèi)存區(qū)域的大小(字節(jié)數(shù))int used;/內(nèi)存區(qū)域的狀態(tài) memory_area_t;used=0|11=這段地址范圍已被實現(xiàn),也即真正地被映射到 RAM 單元上0=這段地址范圍并未被系統(tǒng)所實現(xiàn),處于未使用狀態(tài)。 47內(nèi)存映射的描述整個 CPU 預留的 RAM 地址空間可以用一個 memory_area_t 類型的數(shù)組來表示,如memory_area_t memory_mapNUM_MEM_AREAS=0(NUM_MEM_AREAS)=.start=0,.size=0,.

25、used=0 /表示檢測內(nèi)存映射之前的初始狀態(tài),; 48內(nèi)存映射檢測算法數(shù)組初始化,每個區(qū)域的used標志設為0將整個空間中所有頁面的前32位(4個字節(jié))寫為0依次檢測每個頁面是否有效(使用test_mempage算法)假設當前頁面無效假設當前區(qū)域已映射,則當前區(qū)域檢測結(jié)束假設當前頁面有效判斷該頁面是否由其他頁面映射而來,假設是同3.1否則假設當前區(qū)域已映射,則增加有效頁面到當前區(qū)域中假設當前區(qū)域為一個新的區(qū)域,則初始化該區(qū)域并增加當前頁面到當前區(qū)域中49在用上述算法檢測完系統(tǒng)的內(nèi)存映射情況后,Boot Loader 也可以將內(nèi)存映射的詳細信息打印到串口。 50Stage2:加載映像規(guī)劃內(nèi)存占

26、用的布局,包括內(nèi)核映像所占用的內(nèi)存范圍;根文件系統(tǒng)所占用的內(nèi)存范圍。主要考慮基地址和映像的大小,例如:對內(nèi)核映像,一般考慮從(MEM_START0 x8000) 開始約1MB的內(nèi)存范圍內(nèi)嵌入式 Linux 的內(nèi)核一般都不操過 1MB。為什么要把從 MEM_START 到 MEM_START0 x8000 這段 32KB 大小的內(nèi)存空出來呢?這是因為 Linux 內(nèi)核要在這段內(nèi)存中放置一些全局數(shù)據(jù)結(jié)構(gòu),如:啟動參數(shù)和內(nèi)核頁表等信息。51對根文件系統(tǒng)映像,一般從 MEM_START+0 x0010,0000 開始。如果用 Ramdisk 作為根文件系統(tǒng)映像,則其解壓后的大小一般是1MB。 加載映像

27、:從 Flash 上拷貝 像 ARM 這樣的嵌入式 CPU 通常都在統(tǒng)一的內(nèi)存地址空間中尋址 Flash 等固態(tài)存儲設備從 Flash 上讀取數(shù)據(jù)與從 RAM 單元中讀取數(shù)據(jù)并沒有什么不同。用一個簡單的循環(huán)就可完成從 Flash 設備上拷貝映像的工作 52從 Flash 上拷貝while(count) *dest+ = *src+; /* they are all aligned with word boundary */ count -= 4; /* byte number */ ; 53Stage2:設置內(nèi)核的啟動參數(shù)在嵌入式Linux系統(tǒng)中,需要由boot_loader設置的參數(shù)有:內(nèi)核

28、參數(shù),如頁面大小、根設備內(nèi)存映射情況命令行參數(shù)initrd映像參數(shù)起始地址,大小Ramdisk參數(shù)解壓后的大小54Stage2:調(diào)用內(nèi)核調(diào)用方法:直接跳轉(zhuǎn)到內(nèi)核的第一條指令處,也即RAM中內(nèi)核被加載的地址處對于ARM Linux系統(tǒng),在跳轉(zhuǎn)之前必須滿足:CPU 存放器的設置: R00;R1機器類型 ID;R2傳遞給內(nèi)核的啟動參數(shù)起始地址; CPU 模式: 必須禁止中斷(IRQs和FIQs);CPU必須處于SVC 模式;Cache 和 MMU 的設置:MMU 必須關(guān)閉;指令 Cache 可以翻開也可以關(guān)閉;數(shù)據(jù) Cache 必須關(guān)閉;55BootLoader的工作到此為止從此操作系統(tǒng)接管所有的工

29、作56開源的Boot LoaderARMbootPPCBootu-BootRed BootblobOpenBIOSFreeBIOSLinuxBIOS目前,ARMboot已經(jīng)和PPCBoot合并到U-Boot中57ARMboot的分析和使用58ARMbootARMboot屬于自由軟件,是針對ARM CPU編寫的通用Boot Loader,其作用是對CPU以及主板進行初始化加載操作系統(tǒng)或者其他boot image支持目前市面上的多種ARM板,也可以很容易的移植到新的開發(fā)板上目前ARMboot已經(jīng)與PPCBoot合并u-boot支持PPC、ARM等多種CPU59ARMboot加載Boot Image

30、的方式本地Flash設備JFFS2文件系統(tǒng)IDE設備網(wǎng)絡串口傳輸在程序開發(fā)調(diào)試階段,一般采用網(wǎng)絡加載方式,可以極大地加快開發(fā)速度60下載并安裝ARMbootArmboot源碼公開,可以在上下載解壓縮tar zxf armboot-1.1.0.tgz看README61為了使用arm-elf-打頭的交叉編譯命令,需要修改armboot-1.1.0/Makefile中的CROSS_COMPILE變量的值arm-linux-為arm-elf-修改armbootinclude/configs/conifg_ep7312.h6263配置armboot,支持ep7312開發(fā)板make ep7312_conf

31、igBuildsudo make all6465生成的目標文件有三個:armboot:ELF格式armboot.bin:二進制映像文件格式armboot.srec:Motolola的一種格式此外在根目錄的t目錄下也有一個armboot.bin備份66配置skyeye,并運行armboot 首先,新建一個目錄代表ep7312的主板mkdir ep7312forArmboot將剛剛編譯成功的armboot.bin拷貝到這個目錄下skyeye支持raw binary和ELF格式,這里我們用raw binary的格式編輯skyeye.confskyeye.conf如下(下頁)此時,ep7312forA

32、rmboot主板就配置好了67skyeye.conf#skyeye config armboot cpu: arm720t mach: ep7312 mem_bank: map=I, type=RW, addr=0 x80000000, size=0 x00010000 #skyeye for uboot flash 16M bank 1 mem_bank: map=M, type=RW, addr=0 x00000000, size=0 x01000000, #skyeye for uboot sdram 16M bank 1 mem_bank: map=M, type=RW, addr=0 xc0000000, size=0 x0100000068進入ARMboot命令界面69ARMboot的命令7071u-boot (Universal Boot)uboot是在ppcboot 以及armboot 的根底上開展而來支持很多處理器,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論